; LLVM IR from bqi343/cp-notebook :: Contests/USACO Solutions/2016-17/Open 2017/Bronze (17 Open B3)

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

%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"struct.std::pair.0" = type { %"struct.std::pair", %"struct.std::pair" }
%"struct.std::pair" = type { i32, i32 }

@cin = external dso_local global %"class.std::basic_ifstream", align 8
@cout = external dso_local global %"class.std::basic_ofstream", align 8
@col = external dso_local global [10 x %"struct.std::pair.0"], align 16
@N = external dso_local global i32, align 4
@num = external dso_local global i32, align 4
@grid = external dso_local global [10 x [10 x i32]], align 16
@posi = external dso_local global [10 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca %"struct.std::pair.0", align 4
  %4 = alloca %"struct.std::pair", align 4
  %5 = alloca %"struct.std::pair", align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  %17 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @cin, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #5
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %18

18:                                               ; preds = %27, %0
  %19 = load i32, ptr %2, align 4, !tbaa !5
  %20 = icmp slt i32 %19, 10
  br i1 %20, label %22, label %21

21:                                               ; preds = %18
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #5
  br label %30

22:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  store i32 -1, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 -1, ptr %7, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %3, ptr noundef nonnull align 4 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(8) %5)
  %23 = load i32, ptr %2, align 4, !tbaa !5
  %24 = sext i32 %23 to i64
  %25 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %24
  %26 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #5
  br label %27

27:                                               ; preds = %22
  %28 = load i32, ptr %2, align 4, !tbaa !5
  %29 = add nsw i32 %28, 1
  store i32 %29, ptr %2, align 4, !tbaa !5
  br label %18, !llvm.loop !9

30:                                               ; preds = %21
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %109, %30
  %32 = load i32, ptr %8, align 4, !tbaa !5
  %33 = load i32, ptr @N, align 4, !tbaa !5
  %34 = icmp slt i32 %32, %33
  br i1 %34, label %36, label %35

35:                                               ; preds = %31
  store i32 5, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %112

36:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %37

37:                                               ; preds = %105, %36
  %38 = load i32, ptr %10, align 4, !tbaa !5
  %39 = load i32, ptr @N, align 4, !tbaa !5
  %40 = icmp slt i32 %38, %39
  br i1 %40, label %42, label %41

41:                                               ; preds = %37
  store i32 8, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %108

42:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  %43 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_(ptr noundef nonnull align 8 dereferenceable(16) @cin, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %44 = load i8, ptr %11, align 1, !tbaa !11
  %45 = sext i8 %44 to i32
  %46 = sub nsw i32 %45, 48
  store i32 %46, ptr %12, align 4, !tbaa !5
  %47 = load i32, ptr %12, align 4, !tbaa !5
  %48 = load i32, ptr %8, align 4, !tbaa !5
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %49
  %51 = load i32, ptr %10, align 4, !tbaa !5
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds [10 x i32], ptr %50, i64 0, i64 %52
  store i32 %47, ptr %53, align 4, !tbaa !5
  %54 = load i32, ptr %12, align 4, !tbaa !5
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %55
  store i8 1, ptr %56, align 1, !tbaa !12
  %57 = load i32, ptr %12, align 4, !tbaa !5
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %58
  %60 = getelementptr inbounds %"struct.std::pair.0", ptr %59, i32 0, i32 0
  %61 = getelementptr inbounds %"struct.std::pair", ptr %60, i32 0, i32 0
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %65
  %67 = getelementptr inbounds %"struct.std::pair.0", ptr %66, i32 0, i32 0
  %68 = getelementptr inbounds %"struct.std::pair", ptr %67, i32 0, i32 0
  store i32 %63, ptr %68, align 16, !tbaa !14
  %69 = load i32, ptr %12, align 4, !tbaa !5
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %70
  %72 = getelementptr inbounds %"struct.std::pair.0", ptr %71, i32 0, i32 1
  %73 = getelementptr inbounds %"struct.std::pair", ptr %72, i32 0, i32 0
  %74 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = load i32, ptr %12, align 4, !tbaa !5
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %77
  %79 = getelementptr inbounds %"struct.std::pair.0", ptr %78, i32 0, i32 1
  %80 = getelementptr inbounds %"struct.std::pair", ptr %79, i32 0, i32 0
  store i32 %75, ptr %80, align 8, !tbaa !17
  %81 = load i32, ptr %12, align 4, !tbaa !5
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %82
  %84 = getelementptr inbounds %"struct.std::pair.0", ptr %83, i32 0, i32 0
  %85 = getelementptr inbounds %"struct.std::pair", ptr %84, i32 0, i32 1
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = load i32, ptr %12, align 4, !tbaa !5
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %89
  %91 = getelementptr inbounds %"struct.std::pair.0", ptr %90, i32 0, i32 0
  %92 = getelementptr inbounds %"struct.std::pair", ptr %91, i32 0, i32 1
  store i32 %87, ptr %92, align 4, !tbaa !18
  %93 = load i32, ptr %12, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %94
  %96 = getelementptr inbounds %"struct.std::pair.0", ptr %95, i32 0, i32 1
  %97 = getelementptr inbounds %"struct.std::pair", ptr %96, i32 0, i32 1
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %97, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = load i32, ptr %12, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %101
  %103 = getelementptr inbounds %"struct.std::pair.0", ptr %102, i32 0, i32 1
  %104 = getelementptr inbounds %"struct.std::pair", ptr %103, i32 0, i32 1
  store i32 %99, ptr %104, align 4, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  br label %105

105:                                              ; preds = %42
  %106 = load i32, ptr %10, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %10, align 4, !tbaa !5
  br label %37, !llvm.loop !20

108:                                              ; preds = %41
  br label %109

109:                                              ; preds = %108
  %110 = load i32, ptr %8, align 4, !tbaa !5
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %8, align 4, !tbaa !5
  br label %31, !llvm.loop !21

112:                                              ; preds = %35
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %113

113:                                              ; preds = %192, %112
  %114 = load i32, ptr %13, align 4, !tbaa !5
  %115 = icmp slt i32 %114, 10
  br i1 %115, label %117, label %116

116:                                              ; preds = %113
  store i32 11, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %195

117:                                              ; preds = %113
  %118 = load i32, ptr %13, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %119
  %121 = getelementptr inbounds %"struct.std::pair.0", ptr %120, i32 0, i32 0
  %122 = getelementptr inbounds %"struct.std::pair", ptr %121, i32 0, i32 0
  %123 = load i32, ptr %122, align 16, !tbaa !14
  %124 = load i32, ptr @N, align 4, !tbaa !5
  %125 = icmp ne i32 %123, %124
  br i1 %125, label %126, label %191

126:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %127 = load i32, ptr %13, align 4, !tbaa !5
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %128
  %130 = getelementptr inbounds %"struct.std::pair.0", ptr %129, i32 0, i32 0
  %131 = getelementptr inbounds %"struct.std::pair", ptr %130, i32 0, i32 0
  %132 = load i32, ptr %131, align 16, !tbaa !14
  store i32 %132, ptr %14, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %187, %126
  %134 = load i32, ptr %14, align 4, !tbaa !5
  %135 = load i32, ptr %13, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %136
  %138 = getelementptr inbounds %"struct.std::pair.0", ptr %137, i32 0, i32 1
  %139 = getelementptr inbounds %"struct.std::pair", ptr %138, i32 0, i32 0
  %140 = load i32, ptr %139, align 8, !tbaa !17
  %141 = add nsw i32 %140, 1
  %142 = icmp slt i32 %134, %141
  br i1 %142, label %144, label %143

143:                                              ; preds = %133
  store i32 14, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %190

144:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %145 = load i32, ptr %13, align 4, !tbaa !5
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %146
  %148 = getelementptr inbounds %"struct.std::pair.0", ptr %147, i32 0, i32 0
  %149 = getelementptr inbounds %"struct.std::pair", ptr %148, i32 0, i32 1
  %150 = load i32, ptr %149, align 4, !tbaa !18
  store i32 %150, ptr %15, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %183, %144
  %152 = load i32, ptr %15, align 4, !tbaa !5
  %153 = load i32, ptr %13, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %154
  %156 = getelementptr inbounds %"struct.std::pair.0", ptr %155, i32 0, i32 1
  %157 = getelementptr inbounds %"struct.std::pair", ptr %156, i32 0, i32 1
  %158 = load i32, ptr %157, align 4, !tbaa !19
  %159 = add nsw i32 %158, 1
  %160 = icmp slt i32 %152, %159
  br i1 %160, label %162, label %161

161:                                              ; preds = %151
  store i32 17, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %186

162:                                              ; preds = %151
  %163 = load i32, ptr %14, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %164
  %166 = load i32, ptr %15, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [10 x i32], ptr %165, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = load i32, ptr %13, align 4, !tbaa !5
  %171 = icmp ne i32 %169, %170
  br i1 %171, label %172, label %182

172:                                              ; preds = %162
  %173 = load i32, ptr %14, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %174
  %176 = load i32, ptr %15, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [10 x i32], ptr %175, i64 0, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %180
  store i8 0, ptr %181, align 1, !tbaa !12
  br label %182

182:                                              ; preds = %172, %162
  br label %183

183:                                              ; preds = %182
  %184 = load i32, ptr %15, align 4, !tbaa !5
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %15, align 4, !tbaa !5
  br label %151, !llvm.loop !22

186:                                              ; preds = %161
  br label %187

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

190:                                              ; preds = %143
  br label %191

191:                                              ; preds = %190, %117
  br label %192

192:                                              ; preds = %191
  %193 = load i32, ptr %13, align 4, !tbaa !5
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %13, align 4, !tbaa !5
  br label %113, !llvm.loop !24

195:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %196

196:                                              ; preds = %209, %195
  %197 = load i32, ptr %16, align 4, !tbaa !5
  %198 = icmp slt i32 %197, 10
  br i1 %198, label %200, label %199

199:                                              ; preds = %196
  store i32 20, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %212

200:                                              ; preds = %196
  %201 = load i32, ptr %16, align 4, !tbaa !5
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %202
  %204 = load i8, ptr %203, align 1, !tbaa !12, !range !25, !noundef !26
  %205 = trunc i8 %204 to i1
  %206 = zext i1 %205 to i32
  %207 = load i32, ptr @num, align 4, !tbaa !5
  %208 = add nsw i32 %207, %206
  store i32 %208, ptr @num, align 4, !tbaa !5
  br label %209

209:                                              ; preds = %200
  %210 = load i32, ptr %16, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %16, align 4, !tbaa !5
  br label %196, !llvm.loop !27

212:                                              ; preds = %199
  %213 = load i32, ptr @num, align 4, !tbaa !5
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @cout, i32 noundef %213)
  %215 = load i32, ptr %1, align 4
  ret i32 %215
}

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #3 align 2

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1)) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!15, !6, i64 0}
!15 = !{!"_ZTSSt4pairIS_IiiES0_E", !16, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt4pairIiiE", !6, i64 0, !6, i64 4}
!17 = !{!15, !6, i64 8}
!18 = !{!15, !6, i64 4}
!19 = !{!15, !6, i64 12}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = distinct !{!27, !10}


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

%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"struct.std::pair.0" = type { %"struct.std::pair", %"struct.std::pair" }
%"struct.std::pair" = type { i32, i32 }

@cin = external dso_local global %"class.std::basic_ifstream", align 8
@cout = external dso_local global %"class.std::basic_ofstream", align 8
@col = external dso_local global [10 x %"struct.std::pair.0"], align 16
@N = external dso_local global i32, align 4
@num = external dso_local local_unnamed_addr global i32, align 4
@grid = external dso_local local_unnamed_addr global [10 x [10 x i32]], align 16
@posi = external dso_local local_unnamed_addr global [10 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
  %1 = alloca %"struct.std::pair.0", align 4
  %2 = alloca %"struct.std::pair", align 4
  %3 = alloca %"struct.std::pair", align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @cin, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %10 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) @col, ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %11 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 16), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %12 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 32), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %13 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 48), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %14 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 64), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %15 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 80), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %16 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 96), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %17 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 112), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %18 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 128), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) @N, ptr noundef nonnull align 4 dereferenceable(4) @N)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 -1, ptr %5, align 4, !tbaa !5
  call void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(8) %3)
  %19 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16) getelementptr inbounds (i8, ptr @col, i64 144), ptr noundef nonnull align 4 dereferenceable(16) %1) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 0, ptr %6, align 4, !tbaa !5
  %20 = load i32, ptr @N, align 4, !tbaa !5
  %21 = icmp sgt i32 %20, 0
  br i1 %21, label %.lr.ph46.split, label %._crit_edge47

._crit_edge47:                                    ; preds = %._crit_edge, %0
  %.lcssa = phi i32 [ %20, %0 ], [ %26, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  %22 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 16), align 16, !tbaa !9
  %.not = icmp eq i32 %22, %.lcssa
  br i1 %.not, label %.loopexit, label %.preheader43

.lr.ph46.split:                                   ; preds = %0, %._crit_edge
  %23 = phi i32 [ %26, %._crit_edge ], [ %20, %0 ]
  %24 = phi i32 [ %28, %._crit_edge ], [ 0, %0 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 0, ptr %7, align 4, !tbaa !5
  %25 = icmp sgt i32 %23, 0
  br i1 %25, label %.lr.ph, label %._crit_edge

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph46.split
  %26 = phi i32 [ %55, %._crit_edge.loopexit ], [ %23, %.lr.ph46.split ]
  %27 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %24, %.lr.ph46.split ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  %28 = add nsw i32 %27, 1
  store i32 %28, ptr %6, align 4, !tbaa !5
  %29 = icmp slt i32 %28, %26
  br i1 %29, label %.lr.ph46.split, label %._crit_edge47, !llvm.loop !12

.lr.ph:                                           ; preds = %.lr.ph46.split, %.lr.ph
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  %30 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_(ptr noundef nonnull align 8 dereferenceable(16) @cin, ptr noundef nonnull align 1 dereferenceable(1) %8)
  %31 = load i8, ptr %8, align 1, !tbaa !15
  %32 = sext i8 %31 to i32
  %33 = add nsw i32 %32, -48
  %34 = load i32, ptr %6, align 4, !tbaa !5
  %35 = sext i32 %34 to i64
  %36 = load i32, ptr %7, align 4, !tbaa !5
  %37 = sext i32 %36 to i64
  %38 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %35, i64 %37
  store i32 %33, ptr %38, align 4, !tbaa !5
  %39 = sext i32 %33 to i64
  %40 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %39
  store i8 1, ptr %40, align 1, !tbaa !16
  %41 = getelementptr inbounds [10 x %"struct.std::pair.0"], ptr @col, i64 0, i64 %39
  %42 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %43 = load i32, ptr %42, align 4, !tbaa !5
  store i32 %43, ptr %41, align 16, !tbaa !9
  %44 = getelementptr inbounds i8, ptr %41, i64 8
  %45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %46 = load i32, ptr %45, align 4, !tbaa !5
  store i32 %46, ptr %44, align 8, !tbaa !18
  %47 = getelementptr inbounds i8, ptr %41, i64 4
  %48 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %49 = load i32, ptr %48, align 4, !tbaa !5
  store i32 %49, ptr %47, align 4, !tbaa !19
  %50 = getelementptr inbounds i8, ptr %41, i64 12
  %51 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %52 = load i32, ptr %51, align 4, !tbaa !5
  store i32 %52, ptr %50, align 4, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  %53 = load i32, ptr %7, align 4, !tbaa !5
  %54 = add nsw i32 %53, 1
  store i32 %54, ptr %7, align 4, !tbaa !5
  %55 = load i32, ptr @N, align 4, !tbaa !5
  %56 = icmp slt i32 %54, %55
  br i1 %56, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !21

.preheader43:                                     ; preds = %._crit_edge47
  %57 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 24), align 8, !tbaa !18
  %.not3954 = icmp sgt i32 %22, %57
  br i1 %.not3954, label %.loopexit, label %.lr.ph56

.lr.ph56:                                         ; preds = %.preheader43
  %58 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 20), align 4, !tbaa !19
  %59 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 28), align 4, !tbaa !20
  %.not4049 = icmp sgt i32 %58, %59
  br i1 %.not4049, label %.loopexit, label %.lr.ph52.preheader

.lr.ph52.preheader:                               ; preds = %.lr.ph56
  %60 = sext i32 %58 to i64
  %61 = add i32 %59, 1
  %62 = sext i32 %22 to i64
  %63 = add i32 %57, 1
  %64 = sub i32 %59, %58
  %65 = zext i32 %64 to i64
  %66 = add nuw nsw i64 %65, 1
  %min.iters.check = icmp ult i32 %64, 7
  %n.vec = and i64 %66, 8589934584
  %ind.end = add nsw i64 %n.vec, %60
  %cmp.n = icmp eq i64 %66, %n.vec
  br label %.lr.ph52

.lr.ph52:                                         ; preds = %.lr.ph52.preheader, %._crit_edge53
  %indvars.iv68 = phi i64 [ %62, %.lr.ph52.preheader ], [ %indvars.iv.next69, %._crit_edge53 ]
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.body

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph52
  %indvars.iv.ph = phi i64 [ %60, %.lr.ph52 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

vector.body:                                      ; preds = %.lr.ph52, %pred.store.continue99
  %index = phi i64 [ %index.next, %pred.store.continue99 ], [ 0, %.lr.ph52 ]
  %offset.idx = add i64 %index, %60
  %67 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68, i64 %offset.idx
  %68 = getelementptr inbounds i8, ptr %67, i64 16
  %wide.load = load <4 x i32>, ptr %67, align 4, !tbaa !5
  %wide.load85 = load <4 x i32>, ptr %68, align 4, !tbaa !5
  %69 = icmp ne <4 x i32> %wide.load, <i32 1, i32 1, i32 1, i32 1>
  %70 = icmp ne <4 x i32> %wide.load85, <i32 1, i32 1, i32 1, i32 1>
  %71 = extractelement <4 x i1> %69, i64 0
  br i1 %71, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %72 = extractelement <4 x i32> %wide.load, i64 0
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %73
  store i8 0, ptr %74, align 1, !tbaa !16
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %75 = extractelement <4 x i1> %69, i64 1
  br i1 %75, label %pred.store.if86, label %pred.store.continue87

pred.store.if86:                                  ; preds = %pred.store.continue
  %76 = extractelement <4 x i32> %wide.load, i64 1
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %77
  store i8 0, ptr %78, align 1, !tbaa !16
  br label %pred.store.continue87

pred.store.continue87:                            ; preds = %pred.store.if86, %pred.store.continue
  %79 = extractelement <4 x i1> %69, i64 2
  br i1 %79, label %pred.store.if88, label %pred.store.continue89

pred.store.if88:                                  ; preds = %pred.store.continue87
  %80 = extractelement <4 x i32> %wide.load, i64 2
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %81
  store i8 0, ptr %82, align 1, !tbaa !16
  br label %pred.store.continue89

pred.store.continue89:                            ; preds = %pred.store.if88, %pred.store.continue87
  %83 = extractelement <4 x i1> %69, i64 3
  br i1 %83, label %pred.store.if90, label %pred.store.continue91

pred.store.if90:                                  ; preds = %pred.store.continue89
  %84 = extractelement <4 x i32> %wide.load, i64 3
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %85
  store i8 0, ptr %86, align 1, !tbaa !16
  br label %pred.store.continue91

pred.store.continue91:                            ; preds = %pred.store.if90, %pred.store.continue89
  %87 = extractelement <4 x i1> %70, i64 0
  br i1 %87, label %pred.store.if92, label %pred.store.continue93

pred.store.if92:                                  ; preds = %pred.store.continue91
  %88 = extractelement <4 x i32> %wide.load85, i64 0
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %89
  store i8 0, ptr %90, align 1, !tbaa !16
  br label %pred.store.continue93

pred.store.continue93:                            ; preds = %pred.store.if92, %pred.store.continue91
  %91 = extractelement <4 x i1> %70, i64 1
  br i1 %91, label %pred.store.if94, label %pred.store.continue95

pred.store.if94:                                  ; preds = %pred.store.continue93
  %92 = extractelement <4 x i32> %wide.load85, i64 1
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %93
  store i8 0, ptr %94, align 1, !tbaa !16
  br label %pred.store.continue95

pred.store.continue95:                            ; preds = %pred.store.if94, %pred.store.continue93
  %95 = extractelement <4 x i1> %70, i64 2
  br i1 %95, label %pred.store.if96, label %pred.store.continue97

pred.store.if96:                                  ; preds = %pred.store.continue95
  %96 = extractelement <4 x i32> %wide.load85, i64 2
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %97
  store i8 0, ptr %98, align 1, !tbaa !16
  br label %pred.store.continue97

pred.store.continue97:                            ; preds = %pred.store.if96, %pred.store.continue95
  %99 = extractelement <4 x i1> %70, i64 3
  br i1 %99, label %pred.store.if98, label %pred.store.continue99

pred.store.if98:                                  ; preds = %pred.store.continue97
  %100 = extractelement <4 x i32> %wide.load85, i64 3
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %101
  store i8 0, ptr %102, align 1, !tbaa !16
  br label %pred.store.continue99

pred.store.continue99:                            ; preds = %pred.store.if98, %pred.store.continue97
  %index.next = add nuw i64 %index, 8
  %103 = icmp eq i64 %index.next, %n.vec
  br i1 %103, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %pred.store.continue99
  br i1 %cmp.n, label %._crit_edge53, label %scalar.ph.preheader

._crit_edge53:                                    ; preds = %109, %middle.block
  %indvars.iv.next69 = add nsw i64 %indvars.iv68, 1
  %lftr.wideiv71 = trunc i64 %indvars.iv.next69 to i32
  %exitcond72.not = icmp eq i32 %63, %lftr.wideiv71
  br i1 %exitcond72.not, label %.loopexit, label %.lr.ph52, !llvm.loop !25

scalar.ph:                                        ; preds = %scalar.ph.preheader, %109
  %indvars.iv = phi i64 [ %indvars.iv.next, %109 ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %104 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68, i64 %indvars.iv
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %.not41 = icmp eq i32 %105, 1
  br i1 %.not41, label %109, label %106

106:                                              ; preds = %scalar.ph
  %107 = sext i32 %105 to i64
  %108 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %107
  store i8 0, ptr %108, align 1, !tbaa !16
  br label %109

109:                                              ; preds = %scalar.ph, %106
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %61, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge53, label %scalar.ph, !llvm.loop !26

.loopexit:                                        ; preds = %._crit_edge53, %.lr.ph56, %.preheader43, %._crit_edge47
  %110 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 32), align 16, !tbaa !9
  %.not.1 = icmp eq i32 %110, %.lcssa
  br i1 %.not.1, label %.loopexit.1, label %.preheader43.1

.preheader43.1:                                   ; preds = %.loopexit
  %111 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 40), align 8, !tbaa !18
  %.not3954.1 = icmp sgt i32 %110, %111
  br i1 %.not3954.1, label %.loopexit.1, label %.lr.ph56.1

.lr.ph56.1:                                       ; preds = %.preheader43.1
  %112 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 36), align 4, !tbaa !19
  %113 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 44), align 4, !tbaa !20
  %.not4049.1 = icmp sgt i32 %112, %113
  br i1 %.not4049.1, label %.loopexit.1, label %.lr.ph52.preheader.1

.lr.ph52.preheader.1:                             ; preds = %.lr.ph56.1
  %114 = sext i32 %112 to i64
  %115 = add i32 %113, 1
  %116 = sext i32 %110 to i64
  %117 = add i32 %111, 1
  %118 = sub i32 %113, %112
  %119 = zext i32 %118 to i64
  %120 = add nuw nsw i64 %119, 1
  %min.iters.check102 = icmp ult i32 %118, 7
  %n.vec105 = and i64 %120, 8589934584
  %ind.end106 = add nsw i64 %n.vec105, %114
  %cmp.n130 = icmp eq i64 %120, %n.vec105
  br label %.lr.ph52.1

.lr.ph52.1:                                       ; preds = %._crit_edge53.1, %.lr.ph52.preheader.1
  %indvars.iv68.1 = phi i64 [ %116, %.lr.ph52.preheader.1 ], [ %indvars.iv.next69.1, %._crit_edge53.1 ]
  br i1 %min.iters.check102, label %scalar.ph101.preheader, label %vector.body108

vector.body108:                                   ; preds = %.lr.ph52.1, %pred.store.continue128
  %index109 = phi i64 [ %index.next129, %pred.store.continue128 ], [ 0, %.lr.ph52.1 ]
  %offset.idx110 = add i64 %index109, %114
  %121 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.1, i64 %offset.idx110
  %122 = getelementptr inbounds i8, ptr %121, i64 16
  %wide.load111 = load <4 x i32>, ptr %121, align 4, !tbaa !5
  %wide.load112 = load <4 x i32>, ptr %122, align 4, !tbaa !5
  %123 = icmp ne <4 x i32> %wide.load111, <i32 2, i32 2, i32 2, i32 2>
  %124 = icmp ne <4 x i32> %wide.load112, <i32 2, i32 2, i32 2, i32 2>
  %125 = extractelement <4 x i1> %123, i64 0
  br i1 %125, label %pred.store.if113, label %pred.store.continue114

pred.store.if113:                                 ; preds = %vector.body108
  %126 = extractelement <4 x i32> %wide.load111, i64 0
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %127
  store i8 0, ptr %128, align 1, !tbaa !16
  br label %pred.store.continue114

pred.store.continue114:                           ; preds = %pred.store.if113, %vector.body108
  %129 = extractelement <4 x i1> %123, i64 1
  br i1 %129, label %pred.store.if115, label %pred.store.continue116

pred.store.if115:                                 ; preds = %pred.store.continue114
  %130 = extractelement <4 x i32> %wide.load111, i64 1
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %131
  store i8 0, ptr %132, align 1, !tbaa !16
  br label %pred.store.continue116

pred.store.continue116:                           ; preds = %pred.store.if115, %pred.store.continue114
  %133 = extractelement <4 x i1> %123, i64 2
  br i1 %133, label %pred.store.if117, label %pred.store.continue118

pred.store.if117:                                 ; preds = %pred.store.continue116
  %134 = extractelement <4 x i32> %wide.load111, i64 2
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %135
  store i8 0, ptr %136, align 1, !tbaa !16
  br label %pred.store.continue118

pred.store.continue118:                           ; preds = %pred.store.if117, %pred.store.continue116
  %137 = extractelement <4 x i1> %123, i64 3
  br i1 %137, label %pred.store.if119, label %pred.store.continue120

pred.store.if119:                                 ; preds = %pred.store.continue118
  %138 = extractelement <4 x i32> %wide.load111, i64 3
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %139
  store i8 0, ptr %140, align 1, !tbaa !16
  br label %pred.store.continue120

pred.store.continue120:                           ; preds = %pred.store.if119, %pred.store.continue118
  %141 = extractelement <4 x i1> %124, i64 0
  br i1 %141, label %pred.store.if121, label %pred.store.continue122

pred.store.if121:                                 ; preds = %pred.store.continue120
  %142 = extractelement <4 x i32> %wide.load112, i64 0
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %143
  store i8 0, ptr %144, align 1, !tbaa !16
  br label %pred.store.continue122

pred.store.continue122:                           ; preds = %pred.store.if121, %pred.store.continue120
  %145 = extractelement <4 x i1> %124, i64 1
  br i1 %145, label %pred.store.if123, label %pred.store.continue124

pred.store.if123:                                 ; preds = %pred.store.continue122
  %146 = extractelement <4 x i32> %wide.load112, i64 1
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %147
  store i8 0, ptr %148, align 1, !tbaa !16
  br label %pred.store.continue124

pred.store.continue124:                           ; preds = %pred.store.if123, %pred.store.continue122
  %149 = extractelement <4 x i1> %124, i64 2
  br i1 %149, label %pred.store.if125, label %pred.store.continue126

pred.store.if125:                                 ; preds = %pred.store.continue124
  %150 = extractelement <4 x i32> %wide.load112, i64 2
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %151
  store i8 0, ptr %152, align 1, !tbaa !16
  br label %pred.store.continue126

pred.store.continue126:                           ; preds = %pred.store.if125, %pred.store.continue124
  %153 = extractelement <4 x i1> %124, i64 3
  br i1 %153, label %pred.store.if127, label %pred.store.continue128

pred.store.if127:                                 ; preds = %pred.store.continue126
  %154 = extractelement <4 x i32> %wide.load112, i64 3
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %155
  store i8 0, ptr %156, align 1, !tbaa !16
  br label %pred.store.continue128

pred.store.continue128:                           ; preds = %pred.store.if127, %pred.store.continue126
  %index.next129 = add nuw i64 %index109, 8
  %157 = icmp eq i64 %index.next129, %n.vec105
  br i1 %157, label %middle.block100, label %vector.body108, !llvm.loop !27

middle.block100:                                  ; preds = %pred.store.continue128
  br i1 %cmp.n130, label %._crit_edge53.1, label %scalar.ph101.preheader

scalar.ph101.preheader:                           ; preds = %middle.block100, %.lr.ph52.1
  %indvars.iv.1.ph = phi i64 [ %114, %.lr.ph52.1 ], [ %ind.end106, %middle.block100 ]
  br label %scalar.ph101

scalar.ph101:                                     ; preds = %scalar.ph101.preheader, %163
  %indvars.iv.1 = phi i64 [ %indvars.iv.next.1, %163 ], [ %indvars.iv.1.ph, %scalar.ph101.preheader ]
  %158 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.1, i64 %indvars.iv.1
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %.not41.1 = icmp eq i32 %159, 2
  br i1 %.not41.1, label %163, label %160

160:                                              ; preds = %scalar.ph101
  %161 = sext i32 %159 to i64
  %162 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %161
  store i8 0, ptr %162, align 1, !tbaa !16
  br label %163

163:                                              ; preds = %160, %scalar.ph101
  %indvars.iv.next.1 = add nsw i64 %indvars.iv.1, 1
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next.1 to i32
  %exitcond.1.not = icmp eq i32 %115, %lftr.wideiv.1
  br i1 %exitcond.1.not, label %._crit_edge53.1, label %scalar.ph101, !llvm.loop !28

._crit_edge53.1:                                  ; preds = %163, %middle.block100
  %indvars.iv.next69.1 = add nsw i64 %indvars.iv68.1, 1
  %lftr.wideiv71.1 = trunc i64 %indvars.iv.next69.1 to i32
  %exitcond72.1.not = icmp eq i32 %117, %lftr.wideiv71.1
  br i1 %exitcond72.1.not, label %.loopexit.1, label %.lr.ph52.1, !llvm.loop !25

.loopexit.1:                                      ; preds = %._crit_edge53.1, %.lr.ph56.1, %.preheader43.1, %.loopexit
  %164 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 48), align 16, !tbaa !9
  %.not.2 = icmp eq i32 %164, %.lcssa
  br i1 %.not.2, label %.loopexit.2, label %.preheader43.2

.preheader43.2:                                   ; preds = %.loopexit.1
  %165 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 56), align 8, !tbaa !18
  %.not3954.2 = icmp sgt i32 %164, %165
  br i1 %.not3954.2, label %.loopexit.2, label %.lr.ph56.2

.lr.ph56.2:                                       ; preds = %.preheader43.2
  %166 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 52), align 4, !tbaa !19
  %167 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 60), align 4, !tbaa !20
  %.not4049.2 = icmp sgt i32 %166, %167
  br i1 %.not4049.2, label %.loopexit.2, label %.lr.ph52.preheader.2

.lr.ph52.preheader.2:                             ; preds = %.lr.ph56.2
  %168 = sext i32 %166 to i64
  %169 = add i32 %167, 1
  %170 = sext i32 %164 to i64
  %171 = add i32 %165, 1
  %172 = sub i32 %167, %166
  %173 = zext i32 %172 to i64
  %174 = add nuw nsw i64 %173, 1
  %min.iters.check133 = icmp ult i32 %172, 7
  %n.vec136 = and i64 %174, 8589934584
  %ind.end137 = add nsw i64 %n.vec136, %168
  %cmp.n161 = icmp eq i64 %174, %n.vec136
  br label %.lr.ph52.2

.lr.ph52.2:                                       ; preds = %._crit_edge53.2, %.lr.ph52.preheader.2
  %indvars.iv68.2 = phi i64 [ %170, %.lr.ph52.preheader.2 ], [ %indvars.iv.next69.2, %._crit_edge53.2 ]
  br i1 %min.iters.check133, label %scalar.ph132.preheader, label %vector.body139

vector.body139:                                   ; preds = %.lr.ph52.2, %pred.store.continue159
  %index140 = phi i64 [ %index.next160, %pred.store.continue159 ], [ 0, %.lr.ph52.2 ]
  %offset.idx141 = add i64 %index140, %168
  %175 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.2, i64 %offset.idx141
  %176 = getelementptr inbounds i8, ptr %175, i64 16
  %wide.load142 = load <4 x i32>, ptr %175, align 4, !tbaa !5
  %wide.load143 = load <4 x i32>, ptr %176, align 4, !tbaa !5
  %177 = icmp ne <4 x i32> %wide.load142, <i32 3, i32 3, i32 3, i32 3>
  %178 = icmp ne <4 x i32> %wide.load143, <i32 3, i32 3, i32 3, i32 3>
  %179 = extractelement <4 x i1> %177, i64 0
  br i1 %179, label %pred.store.if144, label %pred.store.continue145

pred.store.if144:                                 ; preds = %vector.body139
  %180 = extractelement <4 x i32> %wide.load142, i64 0
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %181
  store i8 0, ptr %182, align 1, !tbaa !16
  br label %pred.store.continue145

pred.store.continue145:                           ; preds = %pred.store.if144, %vector.body139
  %183 = extractelement <4 x i1> %177, i64 1
  br i1 %183, label %pred.store.if146, label %pred.store.continue147

pred.store.if146:                                 ; preds = %pred.store.continue145
  %184 = extractelement <4 x i32> %wide.load142, i64 1
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %185
  store i8 0, ptr %186, align 1, !tbaa !16
  br label %pred.store.continue147

pred.store.continue147:                           ; preds = %pred.store.if146, %pred.store.continue145
  %187 = extractelement <4 x i1> %177, i64 2
  br i1 %187, label %pred.store.if148, label %pred.store.continue149

pred.store.if148:                                 ; preds = %pred.store.continue147
  %188 = extractelement <4 x i32> %wide.load142, i64 2
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %189
  store i8 0, ptr %190, align 1, !tbaa !16
  br label %pred.store.continue149

pred.store.continue149:                           ; preds = %pred.store.if148, %pred.store.continue147
  %191 = extractelement <4 x i1> %177, i64 3
  br i1 %191, label %pred.store.if150, label %pred.store.continue151

pred.store.if150:                                 ; preds = %pred.store.continue149
  %192 = extractelement <4 x i32> %wide.load142, i64 3
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %193
  store i8 0, ptr %194, align 1, !tbaa !16
  br label %pred.store.continue151

pred.store.continue151:                           ; preds = %pred.store.if150, %pred.store.continue149
  %195 = extractelement <4 x i1> %178, i64 0
  br i1 %195, label %pred.store.if152, label %pred.store.continue153

pred.store.if152:                                 ; preds = %pred.store.continue151
  %196 = extractelement <4 x i32> %wide.load143, i64 0
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %197
  store i8 0, ptr %198, align 1, !tbaa !16
  br label %pred.store.continue153

pred.store.continue153:                           ; preds = %pred.store.if152, %pred.store.continue151
  %199 = extractelement <4 x i1> %178, i64 1
  br i1 %199, label %pred.store.if154, label %pred.store.continue155

pred.store.if154:                                 ; preds = %pred.store.continue153
  %200 = extractelement <4 x i32> %wide.load143, i64 1
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %201
  store i8 0, ptr %202, align 1, !tbaa !16
  br label %pred.store.continue155

pred.store.continue155:                           ; preds = %pred.store.if154, %pred.store.continue153
  %203 = extractelement <4 x i1> %178, i64 2
  br i1 %203, label %pred.store.if156, label %pred.store.continue157

pred.store.if156:                                 ; preds = %pred.store.continue155
  %204 = extractelement <4 x i32> %wide.load143, i64 2
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %205
  store i8 0, ptr %206, align 1, !tbaa !16
  br label %pred.store.continue157

pred.store.continue157:                           ; preds = %pred.store.if156, %pred.store.continue155
  %207 = extractelement <4 x i1> %178, i64 3
  br i1 %207, label %pred.store.if158, label %pred.store.continue159

pred.store.if158:                                 ; preds = %pred.store.continue157
  %208 = extractelement <4 x i32> %wide.load143, i64 3
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %209
  store i8 0, ptr %210, align 1, !tbaa !16
  br label %pred.store.continue159

pred.store.continue159:                           ; preds = %pred.store.if158, %pred.store.continue157
  %index.next160 = add nuw i64 %index140, 8
  %211 = icmp eq i64 %index.next160, %n.vec136
  br i1 %211, label %middle.block131, label %vector.body139, !llvm.loop !29

middle.block131:                                  ; preds = %pred.store.continue159
  br i1 %cmp.n161, label %._crit_edge53.2, label %scalar.ph132.preheader

scalar.ph132.preheader:                           ; preds = %middle.block131, %.lr.ph52.2
  %indvars.iv.2.ph = phi i64 [ %168, %.lr.ph52.2 ], [ %ind.end137, %middle.block131 ]
  br label %scalar.ph132

scalar.ph132:                                     ; preds = %scalar.ph132.preheader, %217
  %indvars.iv.2 = phi i64 [ %indvars.iv.next.2, %217 ], [ %indvars.iv.2.ph, %scalar.ph132.preheader ]
  %212 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.2, i64 %indvars.iv.2
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %.not41.2 = icmp eq i32 %213, 3
  br i1 %.not41.2, label %217, label %214

214:                                              ; preds = %scalar.ph132
  %215 = sext i32 %213 to i64
  %216 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %215
  store i8 0, ptr %216, align 1, !tbaa !16
  br label %217

217:                                              ; preds = %214, %scalar.ph132
  %indvars.iv.next.2 = add nsw i64 %indvars.iv.2, 1
  %lftr.wideiv.2 = trunc i64 %indvars.iv.next.2 to i32
  %exitcond.2.not = icmp eq i32 %169, %lftr.wideiv.2
  br i1 %exitcond.2.not, label %._crit_edge53.2, label %scalar.ph132, !llvm.loop !30

._crit_edge53.2:                                  ; preds = %217, %middle.block131
  %indvars.iv.next69.2 = add nsw i64 %indvars.iv68.2, 1
  %lftr.wideiv71.2 = trunc i64 %indvars.iv.next69.2 to i32
  %exitcond72.2.not = icmp eq i32 %171, %lftr.wideiv71.2
  br i1 %exitcond72.2.not, label %.loopexit.2, label %.lr.ph52.2, !llvm.loop !25

.loopexit.2:                                      ; preds = %._crit_edge53.2, %.lr.ph56.2, %.preheader43.2, %.loopexit.1
  %218 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 64), align 16, !tbaa !9
  %.not.3 = icmp eq i32 %218, %.lcssa
  br i1 %.not.3, label %.loopexit.3, label %.preheader43.3

.preheader43.3:                                   ; preds = %.loopexit.2
  %219 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 72), align 8, !tbaa !18
  %.not3954.3 = icmp sgt i32 %218, %219
  br i1 %.not3954.3, label %.loopexit.3, label %.lr.ph56.3

.lr.ph56.3:                                       ; preds = %.preheader43.3
  %220 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 68), align 4, !tbaa !19
  %221 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 76), align 4, !tbaa !20
  %.not4049.3 = icmp sgt i32 %220, %221
  br i1 %.not4049.3, label %.loopexit.3, label %.lr.ph52.preheader.3

.lr.ph52.preheader.3:                             ; preds = %.lr.ph56.3
  %222 = sext i32 %220 to i64
  %223 = add i32 %221, 1
  %224 = sext i32 %218 to i64
  %225 = add i32 %219, 1
  %226 = sub i32 %221, %220
  %227 = zext i32 %226 to i64
  %228 = add nuw nsw i64 %227, 1
  %min.iters.check164 = icmp ult i32 %226, 7
  %n.vec167 = and i64 %228, 8589934584
  %ind.end168 = add nsw i64 %n.vec167, %222
  %cmp.n192 = icmp eq i64 %228, %n.vec167
  br label %.lr.ph52.3

.lr.ph52.3:                                       ; preds = %._crit_edge53.3, %.lr.ph52.preheader.3
  %indvars.iv68.3 = phi i64 [ %224, %.lr.ph52.preheader.3 ], [ %indvars.iv.next69.3, %._crit_edge53.3 ]
  br i1 %min.iters.check164, label %scalar.ph163.preheader, label %vector.body170

vector.body170:                                   ; preds = %.lr.ph52.3, %pred.store.continue190
  %index171 = phi i64 [ %index.next191, %pred.store.continue190 ], [ 0, %.lr.ph52.3 ]
  %offset.idx172 = add i64 %index171, %222
  %229 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.3, i64 %offset.idx172
  %230 = getelementptr inbounds i8, ptr %229, i64 16
  %wide.load173 = load <4 x i32>, ptr %229, align 4, !tbaa !5
  %wide.load174 = load <4 x i32>, ptr %230, align 4, !tbaa !5
  %231 = icmp ne <4 x i32> %wide.load173, <i32 4, i32 4, i32 4, i32 4>
  %232 = icmp ne <4 x i32> %wide.load174, <i32 4, i32 4, i32 4, i32 4>
  %233 = extractelement <4 x i1> %231, i64 0
  br i1 %233, label %pred.store.if175, label %pred.store.continue176

pred.store.if175:                                 ; preds = %vector.body170
  %234 = extractelement <4 x i32> %wide.load173, i64 0
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %235
  store i8 0, ptr %236, align 1, !tbaa !16
  br label %pred.store.continue176

pred.store.continue176:                           ; preds = %pred.store.if175, %vector.body170
  %237 = extractelement <4 x i1> %231, i64 1
  br i1 %237, label %pred.store.if177, label %pred.store.continue178

pred.store.if177:                                 ; preds = %pred.store.continue176
  %238 = extractelement <4 x i32> %wide.load173, i64 1
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %239
  store i8 0, ptr %240, align 1, !tbaa !16
  br label %pred.store.continue178

pred.store.continue178:                           ; preds = %pred.store.if177, %pred.store.continue176
  %241 = extractelement <4 x i1> %231, i64 2
  br i1 %241, label %pred.store.if179, label %pred.store.continue180

pred.store.if179:                                 ; preds = %pred.store.continue178
  %242 = extractelement <4 x i32> %wide.load173, i64 2
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %243
  store i8 0, ptr %244, align 1, !tbaa !16
  br label %pred.store.continue180

pred.store.continue180:                           ; preds = %pred.store.if179, %pred.store.continue178
  %245 = extractelement <4 x i1> %231, i64 3
  br i1 %245, label %pred.store.if181, label %pred.store.continue182

pred.store.if181:                                 ; preds = %pred.store.continue180
  %246 = extractelement <4 x i32> %wide.load173, i64 3
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %247
  store i8 0, ptr %248, align 1, !tbaa !16
  br label %pred.store.continue182

pred.store.continue182:                           ; preds = %pred.store.if181, %pred.store.continue180
  %249 = extractelement <4 x i1> %232, i64 0
  br i1 %249, label %pred.store.if183, label %pred.store.continue184

pred.store.if183:                                 ; preds = %pred.store.continue182
  %250 = extractelement <4 x i32> %wide.load174, i64 0
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %251
  store i8 0, ptr %252, align 1, !tbaa !16
  br label %pred.store.continue184

pred.store.continue184:                           ; preds = %pred.store.if183, %pred.store.continue182
  %253 = extractelement <4 x i1> %232, i64 1
  br i1 %253, label %pred.store.if185, label %pred.store.continue186

pred.store.if185:                                 ; preds = %pred.store.continue184
  %254 = extractelement <4 x i32> %wide.load174, i64 1
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %255
  store i8 0, ptr %256, align 1, !tbaa !16
  br label %pred.store.continue186

pred.store.continue186:                           ; preds = %pred.store.if185, %pred.store.continue184
  %257 = extractelement <4 x i1> %232, i64 2
  br i1 %257, label %pred.store.if187, label %pred.store.continue188

pred.store.if187:                                 ; preds = %pred.store.continue186
  %258 = extractelement <4 x i32> %wide.load174, i64 2
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %259
  store i8 0, ptr %260, align 1, !tbaa !16
  br label %pred.store.continue188

pred.store.continue188:                           ; preds = %pred.store.if187, %pred.store.continue186
  %261 = extractelement <4 x i1> %232, i64 3
  br i1 %261, label %pred.store.if189, label %pred.store.continue190

pred.store.if189:                                 ; preds = %pred.store.continue188
  %262 = extractelement <4 x i32> %wide.load174, i64 3
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %263
  store i8 0, ptr %264, align 1, !tbaa !16
  br label %pred.store.continue190

pred.store.continue190:                           ; preds = %pred.store.if189, %pred.store.continue188
  %index.next191 = add nuw i64 %index171, 8
  %265 = icmp eq i64 %index.next191, %n.vec167
  br i1 %265, label %middle.block162, label %vector.body170, !llvm.loop !31

middle.block162:                                  ; preds = %pred.store.continue190
  br i1 %cmp.n192, label %._crit_edge53.3, label %scalar.ph163.preheader

scalar.ph163.preheader:                           ; preds = %middle.block162, %.lr.ph52.3
  %indvars.iv.3.ph = phi i64 [ %222, %.lr.ph52.3 ], [ %ind.end168, %middle.block162 ]
  br label %scalar.ph163

scalar.ph163:                                     ; preds = %scalar.ph163.preheader, %271
  %indvars.iv.3 = phi i64 [ %indvars.iv.next.3, %271 ], [ %indvars.iv.3.ph, %scalar.ph163.preheader ]
  %266 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.3, i64 %indvars.iv.3
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %.not41.3 = icmp eq i32 %267, 4
  br i1 %.not41.3, label %271, label %268

268:                                              ; preds = %scalar.ph163
  %269 = sext i32 %267 to i64
  %270 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %269
  store i8 0, ptr %270, align 1, !tbaa !16
  br label %271

271:                                              ; preds = %268, %scalar.ph163
  %indvars.iv.next.3 = add nsw i64 %indvars.iv.3, 1
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next.3 to i32
  %exitcond.3.not = icmp eq i32 %223, %lftr.wideiv.3
  br i1 %exitcond.3.not, label %._crit_edge53.3, label %scalar.ph163, !llvm.loop !32

._crit_edge53.3:                                  ; preds = %271, %middle.block162
  %indvars.iv.next69.3 = add nsw i64 %indvars.iv68.3, 1
  %lftr.wideiv71.3 = trunc i64 %indvars.iv.next69.3 to i32
  %exitcond72.3.not = icmp eq i32 %225, %lftr.wideiv71.3
  br i1 %exitcond72.3.not, label %.loopexit.3, label %.lr.ph52.3, !llvm.loop !25

.loopexit.3:                                      ; preds = %._crit_edge53.3, %.lr.ph56.3, %.preheader43.3, %.loopexit.2
  %272 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 80), align 16, !tbaa !9
  %.not.4 = icmp eq i32 %272, %.lcssa
  br i1 %.not.4, label %.loopexit.4, label %.preheader43.4

.preheader43.4:                                   ; preds = %.loopexit.3
  %273 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 88), align 8, !tbaa !18
  %.not3954.4 = icmp sgt i32 %272, %273
  br i1 %.not3954.4, label %.loopexit.4, label %.lr.ph56.4

.lr.ph56.4:                                       ; preds = %.preheader43.4
  %274 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 84), align 4, !tbaa !19
  %275 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 92), align 4, !tbaa !20
  %.not4049.4 = icmp sgt i32 %274, %275
  br i1 %.not4049.4, label %.loopexit.4, label %.lr.ph52.preheader.4

.lr.ph52.preheader.4:                             ; preds = %.lr.ph56.4
  %276 = sext i32 %274 to i64
  %277 = add i32 %275, 1
  %278 = sext i32 %272 to i64
  %279 = add i32 %273, 1
  %280 = sub i32 %275, %274
  %281 = zext i32 %280 to i64
  %282 = add nuw nsw i64 %281, 1
  %min.iters.check195 = icmp ult i32 %280, 7
  %n.vec198 = and i64 %282, 8589934584
  %ind.end199 = add nsw i64 %n.vec198, %276
  %cmp.n223 = icmp eq i64 %282, %n.vec198
  br label %.lr.ph52.4

.lr.ph52.4:                                       ; preds = %._crit_edge53.4, %.lr.ph52.preheader.4
  %indvars.iv68.4 = phi i64 [ %278, %.lr.ph52.preheader.4 ], [ %indvars.iv.next69.4, %._crit_edge53.4 ]
  br i1 %min.iters.check195, label %scalar.ph194.preheader, label %vector.body201

vector.body201:                                   ; preds = %.lr.ph52.4, %pred.store.continue221
  %index202 = phi i64 [ %index.next222, %pred.store.continue221 ], [ 0, %.lr.ph52.4 ]
  %offset.idx203 = add i64 %index202, %276
  %283 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.4, i64 %offset.idx203
  %284 = getelementptr inbounds i8, ptr %283, i64 16
  %wide.load204 = load <4 x i32>, ptr %283, align 4, !tbaa !5
  %wide.load205 = load <4 x i32>, ptr %284, align 4, !tbaa !5
  %285 = icmp ne <4 x i32> %wide.load204, <i32 5, i32 5, i32 5, i32 5>
  %286 = icmp ne <4 x i32> %wide.load205, <i32 5, i32 5, i32 5, i32 5>
  %287 = extractelement <4 x i1> %285, i64 0
  br i1 %287, label %pred.store.if206, label %pred.store.continue207

pred.store.if206:                                 ; preds = %vector.body201
  %288 = extractelement <4 x i32> %wide.load204, i64 0
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %289
  store i8 0, ptr %290, align 1, !tbaa !16
  br label %pred.store.continue207

pred.store.continue207:                           ; preds = %pred.store.if206, %vector.body201
  %291 = extractelement <4 x i1> %285, i64 1
  br i1 %291, label %pred.store.if208, label %pred.store.continue209

pred.store.if208:                                 ; preds = %pred.store.continue207
  %292 = extractelement <4 x i32> %wide.load204, i64 1
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %293
  store i8 0, ptr %294, align 1, !tbaa !16
  br label %pred.store.continue209

pred.store.continue209:                           ; preds = %pred.store.if208, %pred.store.continue207
  %295 = extractelement <4 x i1> %285, i64 2
  br i1 %295, label %pred.store.if210, label %pred.store.continue211

pred.store.if210:                                 ; preds = %pred.store.continue209
  %296 = extractelement <4 x i32> %wide.load204, i64 2
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %297
  store i8 0, ptr %298, align 1, !tbaa !16
  br label %pred.store.continue211

pred.store.continue211:                           ; preds = %pred.store.if210, %pred.store.continue209
  %299 = extractelement <4 x i1> %285, i64 3
  br i1 %299, label %pred.store.if212, label %pred.store.continue213

pred.store.if212:                                 ; preds = %pred.store.continue211
  %300 = extractelement <4 x i32> %wide.load204, i64 3
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %301
  store i8 0, ptr %302, align 1, !tbaa !16
  br label %pred.store.continue213

pred.store.continue213:                           ; preds = %pred.store.if212, %pred.store.continue211
  %303 = extractelement <4 x i1> %286, i64 0
  br i1 %303, label %pred.store.if214, label %pred.store.continue215

pred.store.if214:                                 ; preds = %pred.store.continue213
  %304 = extractelement <4 x i32> %wide.load205, i64 0
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %305
  store i8 0, ptr %306, align 1, !tbaa !16
  br label %pred.store.continue215

pred.store.continue215:                           ; preds = %pred.store.if214, %pred.store.continue213
  %307 = extractelement <4 x i1> %286, i64 1
  br i1 %307, label %pred.store.if216, label %pred.store.continue217

pred.store.if216:                                 ; preds = %pred.store.continue215
  %308 = extractelement <4 x i32> %wide.load205, i64 1
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %309
  store i8 0, ptr %310, align 1, !tbaa !16
  br label %pred.store.continue217

pred.store.continue217:                           ; preds = %pred.store.if216, %pred.store.continue215
  %311 = extractelement <4 x i1> %286, i64 2
  br i1 %311, label %pred.store.if218, label %pred.store.continue219

pred.store.if218:                                 ; preds = %pred.store.continue217
  %312 = extractelement <4 x i32> %wide.load205, i64 2
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %313
  store i8 0, ptr %314, align 1, !tbaa !16
  br label %pred.store.continue219

pred.store.continue219:                           ; preds = %pred.store.if218, %pred.store.continue217
  %315 = extractelement <4 x i1> %286, i64 3
  br i1 %315, label %pred.store.if220, label %pred.store.continue221

pred.store.if220:                                 ; preds = %pred.store.continue219
  %316 = extractelement <4 x i32> %wide.load205, i64 3
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %317
  store i8 0, ptr %318, align 1, !tbaa !16
  br label %pred.store.continue221

pred.store.continue221:                           ; preds = %pred.store.if220, %pred.store.continue219
  %index.next222 = add nuw i64 %index202, 8
  %319 = icmp eq i64 %index.next222, %n.vec198
  br i1 %319, label %middle.block193, label %vector.body201, !llvm.loop !33

middle.block193:                                  ; preds = %pred.store.continue221
  br i1 %cmp.n223, label %._crit_edge53.4, label %scalar.ph194.preheader

scalar.ph194.preheader:                           ; preds = %middle.block193, %.lr.ph52.4
  %indvars.iv.4.ph = phi i64 [ %276, %.lr.ph52.4 ], [ %ind.end199, %middle.block193 ]
  br label %scalar.ph194

scalar.ph194:                                     ; preds = %scalar.ph194.preheader, %325
  %indvars.iv.4 = phi i64 [ %indvars.iv.next.4, %325 ], [ %indvars.iv.4.ph, %scalar.ph194.preheader ]
  %320 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.4, i64 %indvars.iv.4
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %.not41.4 = icmp eq i32 %321, 5
  br i1 %.not41.4, label %325, label %322

322:                                              ; preds = %scalar.ph194
  %323 = sext i32 %321 to i64
  %324 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %323
  store i8 0, ptr %324, align 1, !tbaa !16
  br label %325

325:                                              ; preds = %322, %scalar.ph194
  %indvars.iv.next.4 = add nsw i64 %indvars.iv.4, 1
  %lftr.wideiv.4 = trunc i64 %indvars.iv.next.4 to i32
  %exitcond.4.not = icmp eq i32 %277, %lftr.wideiv.4
  br i1 %exitcond.4.not, label %._crit_edge53.4, label %scalar.ph194, !llvm.loop !34

._crit_edge53.4:                                  ; preds = %325, %middle.block193
  %indvars.iv.next69.4 = add nsw i64 %indvars.iv68.4, 1
  %lftr.wideiv71.4 = trunc i64 %indvars.iv.next69.4 to i32
  %exitcond72.4.not = icmp eq i32 %279, %lftr.wideiv71.4
  br i1 %exitcond72.4.not, label %.loopexit.4, label %.lr.ph52.4, !llvm.loop !25

.loopexit.4:                                      ; preds = %._crit_edge53.4, %.lr.ph56.4, %.preheader43.4, %.loopexit.3
  %326 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 96), align 16, !tbaa !9
  %.not.5 = icmp eq i32 %326, %.lcssa
  br i1 %.not.5, label %.loopexit.5, label %.preheader43.5

.preheader43.5:                                   ; preds = %.loopexit.4
  %327 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 104), align 8, !tbaa !18
  %.not3954.5 = icmp sgt i32 %326, %327
  br i1 %.not3954.5, label %.loopexit.5, label %.lr.ph56.5

.lr.ph56.5:                                       ; preds = %.preheader43.5
  %328 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 100), align 4, !tbaa !19
  %329 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 108), align 4, !tbaa !20
  %.not4049.5 = icmp sgt i32 %328, %329
  br i1 %.not4049.5, label %.loopexit.5, label %.lr.ph52.preheader.5

.lr.ph52.preheader.5:                             ; preds = %.lr.ph56.5
  %330 = sext i32 %328 to i64
  %331 = add i32 %329, 1
  %332 = sext i32 %326 to i64
  %333 = add i32 %327, 1
  %334 = sub i32 %329, %328
  %335 = zext i32 %334 to i64
  %336 = add nuw nsw i64 %335, 1
  %min.iters.check226 = icmp ult i32 %334, 7
  %n.vec229 = and i64 %336, 8589934584
  %ind.end230 = add nsw i64 %n.vec229, %330
  %cmp.n254 = icmp eq i64 %336, %n.vec229
  br label %.lr.ph52.5

.lr.ph52.5:                                       ; preds = %._crit_edge53.5, %.lr.ph52.preheader.5
  %indvars.iv68.5 = phi i64 [ %332, %.lr.ph52.preheader.5 ], [ %indvars.iv.next69.5, %._crit_edge53.5 ]
  br i1 %min.iters.check226, label %scalar.ph225.preheader, label %vector.body232

vector.body232:                                   ; preds = %.lr.ph52.5, %pred.store.continue252
  %index233 = phi i64 [ %index.next253, %pred.store.continue252 ], [ 0, %.lr.ph52.5 ]
  %offset.idx234 = add i64 %index233, %330
  %337 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.5, i64 %offset.idx234
  %338 = getelementptr inbounds i8, ptr %337, i64 16
  %wide.load235 = load <4 x i32>, ptr %337, align 4, !tbaa !5
  %wide.load236 = load <4 x i32>, ptr %338, align 4, !tbaa !5
  %339 = icmp ne <4 x i32> %wide.load235, <i32 6, i32 6, i32 6, i32 6>
  %340 = icmp ne <4 x i32> %wide.load236, <i32 6, i32 6, i32 6, i32 6>
  %341 = extractelement <4 x i1> %339, i64 0
  br i1 %341, label %pred.store.if237, label %pred.store.continue238

pred.store.if237:                                 ; preds = %vector.body232
  %342 = extractelement <4 x i32> %wide.load235, i64 0
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %343
  store i8 0, ptr %344, align 1, !tbaa !16
  br label %pred.store.continue238

pred.store.continue238:                           ; preds = %pred.store.if237, %vector.body232
  %345 = extractelement <4 x i1> %339, i64 1
  br i1 %345, label %pred.store.if239, label %pred.store.continue240

pred.store.if239:                                 ; preds = %pred.store.continue238
  %346 = extractelement <4 x i32> %wide.load235, i64 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %347
  store i8 0, ptr %348, align 1, !tbaa !16
  br label %pred.store.continue240

pred.store.continue240:                           ; preds = %pred.store.if239, %pred.store.continue238
  %349 = extractelement <4 x i1> %339, i64 2
  br i1 %349, label %pred.store.if241, label %pred.store.continue242

pred.store.if241:                                 ; preds = %pred.store.continue240
  %350 = extractelement <4 x i32> %wide.load235, i64 2
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %351
  store i8 0, ptr %352, align 1, !tbaa !16
  br label %pred.store.continue242

pred.store.continue242:                           ; preds = %pred.store.if241, %pred.store.continue240
  %353 = extractelement <4 x i1> %339, i64 3
  br i1 %353, label %pred.store.if243, label %pred.store.continue244

pred.store.if243:                                 ; preds = %pred.store.continue242
  %354 = extractelement <4 x i32> %wide.load235, i64 3
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %355
  store i8 0, ptr %356, align 1, !tbaa !16
  br label %pred.store.continue244

pred.store.continue244:                           ; preds = %pred.store.if243, %pred.store.continue242
  %357 = extractelement <4 x i1> %340, i64 0
  br i1 %357, label %pred.store.if245, label %pred.store.continue246

pred.store.if245:                                 ; preds = %pred.store.continue244
  %358 = extractelement <4 x i32> %wide.load236, i64 0
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %359
  store i8 0, ptr %360, align 1, !tbaa !16
  br label %pred.store.continue246

pred.store.continue246:                           ; preds = %pred.store.if245, %pred.store.continue244
  %361 = extractelement <4 x i1> %340, i64 1
  br i1 %361, label %pred.store.if247, label %pred.store.continue248

pred.store.if247:                                 ; preds = %pred.store.continue246
  %362 = extractelement <4 x i32> %wide.load236, i64 1
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %363
  store i8 0, ptr %364, align 1, !tbaa !16
  br label %pred.store.continue248

pred.store.continue248:                           ; preds = %pred.store.if247, %pred.store.continue246
  %365 = extractelement <4 x i1> %340, i64 2
  br i1 %365, label %pred.store.if249, label %pred.store.continue250

pred.store.if249:                                 ; preds = %pred.store.continue248
  %366 = extractelement <4 x i32> %wide.load236, i64 2
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %367
  store i8 0, ptr %368, align 1, !tbaa !16
  br label %pred.store.continue250

pred.store.continue250:                           ; preds = %pred.store.if249, %pred.store.continue248
  %369 = extractelement <4 x i1> %340, i64 3
  br i1 %369, label %pred.store.if251, label %pred.store.continue252

pred.store.if251:                                 ; preds = %pred.store.continue250
  %370 = extractelement <4 x i32> %wide.load236, i64 3
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %371
  store i8 0, ptr %372, align 1, !tbaa !16
  br label %pred.store.continue252

pred.store.continue252:                           ; preds = %pred.store.if251, %pred.store.continue250
  %index.next253 = add nuw i64 %index233, 8
  %373 = icmp eq i64 %index.next253, %n.vec229
  br i1 %373, label %middle.block224, label %vector.body232, !llvm.loop !35

middle.block224:                                  ; preds = %pred.store.continue252
  br i1 %cmp.n254, label %._crit_edge53.5, label %scalar.ph225.preheader

scalar.ph225.preheader:                           ; preds = %middle.block224, %.lr.ph52.5
  %indvars.iv.5.ph = phi i64 [ %330, %.lr.ph52.5 ], [ %ind.end230, %middle.block224 ]
  br label %scalar.ph225

scalar.ph225:                                     ; preds = %scalar.ph225.preheader, %379
  %indvars.iv.5 = phi i64 [ %indvars.iv.next.5, %379 ], [ %indvars.iv.5.ph, %scalar.ph225.preheader ]
  %374 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.5, i64 %indvars.iv.5
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %.not41.5 = icmp eq i32 %375, 6
  br i1 %.not41.5, label %379, label %376

376:                                              ; preds = %scalar.ph225
  %377 = sext i32 %375 to i64
  %378 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %377
  store i8 0, ptr %378, align 1, !tbaa !16
  br label %379

379:                                              ; preds = %376, %scalar.ph225
  %indvars.iv.next.5 = add nsw i64 %indvars.iv.5, 1
  %lftr.wideiv.5 = trunc i64 %indvars.iv.next.5 to i32
  %exitcond.5.not = icmp eq i32 %331, %lftr.wideiv.5
  br i1 %exitcond.5.not, label %._crit_edge53.5, label %scalar.ph225, !llvm.loop !36

._crit_edge53.5:                                  ; preds = %379, %middle.block224
  %indvars.iv.next69.5 = add nsw i64 %indvars.iv68.5, 1
  %lftr.wideiv71.5 = trunc i64 %indvars.iv.next69.5 to i32
  %exitcond72.5.not = icmp eq i32 %333, %lftr.wideiv71.5
  br i1 %exitcond72.5.not, label %.loopexit.5, label %.lr.ph52.5, !llvm.loop !25

.loopexit.5:                                      ; preds = %._crit_edge53.5, %.lr.ph56.5, %.preheader43.5, %.loopexit.4
  %380 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 112), align 16, !tbaa !9
  %.not.6 = icmp eq i32 %380, %.lcssa
  br i1 %.not.6, label %.loopexit.6, label %.preheader43.6

.preheader43.6:                                   ; preds = %.loopexit.5
  %381 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 120), align 8, !tbaa !18
  %.not3954.6 = icmp sgt i32 %380, %381
  br i1 %.not3954.6, label %.loopexit.6, label %.lr.ph56.6

.lr.ph56.6:                                       ; preds = %.preheader43.6
  %382 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 116), align 4, !tbaa !19
  %383 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 124), align 4, !tbaa !20
  %.not4049.6 = icmp sgt i32 %382, %383
  br i1 %.not4049.6, label %.loopexit.6, label %.lr.ph52.preheader.6

.lr.ph52.preheader.6:                             ; preds = %.lr.ph56.6
  %384 = sext i32 %382 to i64
  %385 = add i32 %383, 1
  %386 = sext i32 %380 to i64
  %387 = add i32 %381, 1
  %388 = sub i32 %383, %382
  %389 = zext i32 %388 to i64
  %390 = add nuw nsw i64 %389, 1
  %min.iters.check257 = icmp ult i32 %388, 7
  %n.vec260 = and i64 %390, 8589934584
  %ind.end261 = add nsw i64 %n.vec260, %384
  %cmp.n285 = icmp eq i64 %390, %n.vec260
  br label %.lr.ph52.6

.lr.ph52.6:                                       ; preds = %._crit_edge53.6, %.lr.ph52.preheader.6
  %indvars.iv68.6 = phi i64 [ %386, %.lr.ph52.preheader.6 ], [ %indvars.iv.next69.6, %._crit_edge53.6 ]
  br i1 %min.iters.check257, label %scalar.ph256.preheader, label %vector.body263

vector.body263:                                   ; preds = %.lr.ph52.6, %pred.store.continue283
  %index264 = phi i64 [ %index.next284, %pred.store.continue283 ], [ 0, %.lr.ph52.6 ]
  %offset.idx265 = add i64 %index264, %384
  %391 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.6, i64 %offset.idx265
  %392 = getelementptr inbounds i8, ptr %391, i64 16
  %wide.load266 = load <4 x i32>, ptr %391, align 4, !tbaa !5
  %wide.load267 = load <4 x i32>, ptr %392, align 4, !tbaa !5
  %393 = icmp ne <4 x i32> %wide.load266, <i32 7, i32 7, i32 7, i32 7>
  %394 = icmp ne <4 x i32> %wide.load267, <i32 7, i32 7, i32 7, i32 7>
  %395 = extractelement <4 x i1> %393, i64 0
  br i1 %395, label %pred.store.if268, label %pred.store.continue269

pred.store.if268:                                 ; preds = %vector.body263
  %396 = extractelement <4 x i32> %wide.load266, i64 0
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %397
  store i8 0, ptr %398, align 1, !tbaa !16
  br label %pred.store.continue269

pred.store.continue269:                           ; preds = %pred.store.if268, %vector.body263
  %399 = extractelement <4 x i1> %393, i64 1
  br i1 %399, label %pred.store.if270, label %pred.store.continue271

pred.store.if270:                                 ; preds = %pred.store.continue269
  %400 = extractelement <4 x i32> %wide.load266, i64 1
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %401
  store i8 0, ptr %402, align 1, !tbaa !16
  br label %pred.store.continue271

pred.store.continue271:                           ; preds = %pred.store.if270, %pred.store.continue269
  %403 = extractelement <4 x i1> %393, i64 2
  br i1 %403, label %pred.store.if272, label %pred.store.continue273

pred.store.if272:                                 ; preds = %pred.store.continue271
  %404 = extractelement <4 x i32> %wide.load266, i64 2
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %405
  store i8 0, ptr %406, align 1, !tbaa !16
  br label %pred.store.continue273

pred.store.continue273:                           ; preds = %pred.store.if272, %pred.store.continue271
  %407 = extractelement <4 x i1> %393, i64 3
  br i1 %407, label %pred.store.if274, label %pred.store.continue275

pred.store.if274:                                 ; preds = %pred.store.continue273
  %408 = extractelement <4 x i32> %wide.load266, i64 3
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %409
  store i8 0, ptr %410, align 1, !tbaa !16
  br label %pred.store.continue275

pred.store.continue275:                           ; preds = %pred.store.if274, %pred.store.continue273
  %411 = extractelement <4 x i1> %394, i64 0
  br i1 %411, label %pred.store.if276, label %pred.store.continue277

pred.store.if276:                                 ; preds = %pred.store.continue275
  %412 = extractelement <4 x i32> %wide.load267, i64 0
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %413
  store i8 0, ptr %414, align 1, !tbaa !16
  br label %pred.store.continue277

pred.store.continue277:                           ; preds = %pred.store.if276, %pred.store.continue275
  %415 = extractelement <4 x i1> %394, i64 1
  br i1 %415, label %pred.store.if278, label %pred.store.continue279

pred.store.if278:                                 ; preds = %pred.store.continue277
  %416 = extractelement <4 x i32> %wide.load267, i64 1
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %417
  store i8 0, ptr %418, align 1, !tbaa !16
  br label %pred.store.continue279

pred.store.continue279:                           ; preds = %pred.store.if278, %pred.store.continue277
  %419 = extractelement <4 x i1> %394, i64 2
  br i1 %419, label %pred.store.if280, label %pred.store.continue281

pred.store.if280:                                 ; preds = %pred.store.continue279
  %420 = extractelement <4 x i32> %wide.load267, i64 2
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %421
  store i8 0, ptr %422, align 1, !tbaa !16
  br label %pred.store.continue281

pred.store.continue281:                           ; preds = %pred.store.if280, %pred.store.continue279
  %423 = extractelement <4 x i1> %394, i64 3
  br i1 %423, label %pred.store.if282, label %pred.store.continue283

pred.store.if282:                                 ; preds = %pred.store.continue281
  %424 = extractelement <4 x i32> %wide.load267, i64 3
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %425
  store i8 0, ptr %426, align 1, !tbaa !16
  br label %pred.store.continue283

pred.store.continue283:                           ; preds = %pred.store.if282, %pred.store.continue281
  %index.next284 = add nuw i64 %index264, 8
  %427 = icmp eq i64 %index.next284, %n.vec260
  br i1 %427, label %middle.block255, label %vector.body263, !llvm.loop !37

middle.block255:                                  ; preds = %pred.store.continue283
  br i1 %cmp.n285, label %._crit_edge53.6, label %scalar.ph256.preheader

scalar.ph256.preheader:                           ; preds = %middle.block255, %.lr.ph52.6
  %indvars.iv.6.ph = phi i64 [ %384, %.lr.ph52.6 ], [ %ind.end261, %middle.block255 ]
  br label %scalar.ph256

scalar.ph256:                                     ; preds = %scalar.ph256.preheader, %433
  %indvars.iv.6 = phi i64 [ %indvars.iv.next.6, %433 ], [ %indvars.iv.6.ph, %scalar.ph256.preheader ]
  %428 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.6, i64 %indvars.iv.6
  %429 = load i32, ptr %428, align 4, !tbaa !5
  %.not41.6 = icmp eq i32 %429, 7
  br i1 %.not41.6, label %433, label %430

430:                                              ; preds = %scalar.ph256
  %431 = sext i32 %429 to i64
  %432 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %431
  store i8 0, ptr %432, align 1, !tbaa !16
  br label %433

433:                                              ; preds = %430, %scalar.ph256
  %indvars.iv.next.6 = add nsw i64 %indvars.iv.6, 1
  %lftr.wideiv.6 = trunc i64 %indvars.iv.next.6 to i32
  %exitcond.6.not = icmp eq i32 %385, %lftr.wideiv.6
  br i1 %exitcond.6.not, label %._crit_edge53.6, label %scalar.ph256, !llvm.loop !38

._crit_edge53.6:                                  ; preds = %433, %middle.block255
  %indvars.iv.next69.6 = add nsw i64 %indvars.iv68.6, 1
  %lftr.wideiv71.6 = trunc i64 %indvars.iv.next69.6 to i32
  %exitcond72.6.not = icmp eq i32 %387, %lftr.wideiv71.6
  br i1 %exitcond72.6.not, label %.loopexit.6, label %.lr.ph52.6, !llvm.loop !25

.loopexit.6:                                      ; preds = %._crit_edge53.6, %.lr.ph56.6, %.preheader43.6, %.loopexit.5
  %434 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 128), align 16, !tbaa !9
  %.not.7 = icmp eq i32 %434, %.lcssa
  br i1 %.not.7, label %.loopexit.7, label %.preheader43.7

.preheader43.7:                                   ; preds = %.loopexit.6
  %435 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 136), align 8, !tbaa !18
  %.not3954.7 = icmp sgt i32 %434, %435
  br i1 %.not3954.7, label %.loopexit.7, label %.lr.ph56.7

.lr.ph56.7:                                       ; preds = %.preheader43.7
  %436 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 132), align 4, !tbaa !19
  %437 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 140), align 4, !tbaa !20
  %.not4049.7 = icmp sgt i32 %436, %437
  br i1 %.not4049.7, label %.loopexit.7, label %.lr.ph52.preheader.7

.lr.ph52.preheader.7:                             ; preds = %.lr.ph56.7
  %438 = sext i32 %436 to i64
  %439 = add i32 %437, 1
  %440 = sext i32 %434 to i64
  %441 = add i32 %435, 1
  %442 = sub i32 %437, %436
  %443 = zext i32 %442 to i64
  %444 = add nuw nsw i64 %443, 1
  %min.iters.check288 = icmp ult i32 %442, 7
  %n.vec291 = and i64 %444, 8589934584
  %ind.end292 = add nsw i64 %n.vec291, %438
  %cmp.n316 = icmp eq i64 %444, %n.vec291
  br label %.lr.ph52.7

.lr.ph52.7:                                       ; preds = %._crit_edge53.7, %.lr.ph52.preheader.7
  %indvars.iv68.7 = phi i64 [ %440, %.lr.ph52.preheader.7 ], [ %indvars.iv.next69.7, %._crit_edge53.7 ]
  br i1 %min.iters.check288, label %scalar.ph287.preheader, label %vector.body294

vector.body294:                                   ; preds = %.lr.ph52.7, %pred.store.continue314
  %index295 = phi i64 [ %index.next315, %pred.store.continue314 ], [ 0, %.lr.ph52.7 ]
  %offset.idx296 = add i64 %index295, %438
  %445 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.7, i64 %offset.idx296
  %446 = getelementptr inbounds i8, ptr %445, i64 16
  %wide.load297 = load <4 x i32>, ptr %445, align 4, !tbaa !5
  %wide.load298 = load <4 x i32>, ptr %446, align 4, !tbaa !5
  %447 = icmp ne <4 x i32> %wide.load297, <i32 8, i32 8, i32 8, i32 8>
  %448 = icmp ne <4 x i32> %wide.load298, <i32 8, i32 8, i32 8, i32 8>
  %449 = extractelement <4 x i1> %447, i64 0
  br i1 %449, label %pred.store.if299, label %pred.store.continue300

pred.store.if299:                                 ; preds = %vector.body294
  %450 = extractelement <4 x i32> %wide.load297, i64 0
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %451
  store i8 0, ptr %452, align 1, !tbaa !16
  br label %pred.store.continue300

pred.store.continue300:                           ; preds = %pred.store.if299, %vector.body294
  %453 = extractelement <4 x i1> %447, i64 1
  br i1 %453, label %pred.store.if301, label %pred.store.continue302

pred.store.if301:                                 ; preds = %pred.store.continue300
  %454 = extractelement <4 x i32> %wide.load297, i64 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %455
  store i8 0, ptr %456, align 1, !tbaa !16
  br label %pred.store.continue302

pred.store.continue302:                           ; preds = %pred.store.if301, %pred.store.continue300
  %457 = extractelement <4 x i1> %447, i64 2
  br i1 %457, label %pred.store.if303, label %pred.store.continue304

pred.store.if303:                                 ; preds = %pred.store.continue302
  %458 = extractelement <4 x i32> %wide.load297, i64 2
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %459
  store i8 0, ptr %460, align 1, !tbaa !16
  br label %pred.store.continue304

pred.store.continue304:                           ; preds = %pred.store.if303, %pred.store.continue302
  %461 = extractelement <4 x i1> %447, i64 3
  br i1 %461, label %pred.store.if305, label %pred.store.continue306

pred.store.if305:                                 ; preds = %pred.store.continue304
  %462 = extractelement <4 x i32> %wide.load297, i64 3
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %463
  store i8 0, ptr %464, align 1, !tbaa !16
  br label %pred.store.continue306

pred.store.continue306:                           ; preds = %pred.store.if305, %pred.store.continue304
  %465 = extractelement <4 x i1> %448, i64 0
  br i1 %465, label %pred.store.if307, label %pred.store.continue308

pred.store.if307:                                 ; preds = %pred.store.continue306
  %466 = extractelement <4 x i32> %wide.load298, i64 0
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %467
  store i8 0, ptr %468, align 1, !tbaa !16
  br label %pred.store.continue308

pred.store.continue308:                           ; preds = %pred.store.if307, %pred.store.continue306
  %469 = extractelement <4 x i1> %448, i64 1
  br i1 %469, label %pred.store.if309, label %pred.store.continue310

pred.store.if309:                                 ; preds = %pred.store.continue308
  %470 = extractelement <4 x i32> %wide.load298, i64 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %471
  store i8 0, ptr %472, align 1, !tbaa !16
  br label %pred.store.continue310

pred.store.continue310:                           ; preds = %pred.store.if309, %pred.store.continue308
  %473 = extractelement <4 x i1> %448, i64 2
  br i1 %473, label %pred.store.if311, label %pred.store.continue312

pred.store.if311:                                 ; preds = %pred.store.continue310
  %474 = extractelement <4 x i32> %wide.load298, i64 2
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %475
  store i8 0, ptr %476, align 1, !tbaa !16
  br label %pred.store.continue312

pred.store.continue312:                           ; preds = %pred.store.if311, %pred.store.continue310
  %477 = extractelement <4 x i1> %448, i64 3
  br i1 %477, label %pred.store.if313, label %pred.store.continue314

pred.store.if313:                                 ; preds = %pred.store.continue312
  %478 = extractelement <4 x i32> %wide.load298, i64 3
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %479
  store i8 0, ptr %480, align 1, !tbaa !16
  br label %pred.store.continue314

pred.store.continue314:                           ; preds = %pred.store.if313, %pred.store.continue312
  %index.next315 = add nuw i64 %index295, 8
  %481 = icmp eq i64 %index.next315, %n.vec291
  br i1 %481, label %middle.block286, label %vector.body294, !llvm.loop !39

middle.block286:                                  ; preds = %pred.store.continue314
  br i1 %cmp.n316, label %._crit_edge53.7, label %scalar.ph287.preheader

scalar.ph287.preheader:                           ; preds = %middle.block286, %.lr.ph52.7
  %indvars.iv.7.ph = phi i64 [ %438, %.lr.ph52.7 ], [ %ind.end292, %middle.block286 ]
  br label %scalar.ph287

scalar.ph287:                                     ; preds = %scalar.ph287.preheader, %487
  %indvars.iv.7 = phi i64 [ %indvars.iv.next.7, %487 ], [ %indvars.iv.7.ph, %scalar.ph287.preheader ]
  %482 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.7, i64 %indvars.iv.7
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %.not41.7 = icmp eq i32 %483, 8
  br i1 %.not41.7, label %487, label %484

484:                                              ; preds = %scalar.ph287
  %485 = sext i32 %483 to i64
  %486 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %485
  store i8 0, ptr %486, align 1, !tbaa !16
  br label %487

487:                                              ; preds = %484, %scalar.ph287
  %indvars.iv.next.7 = add nsw i64 %indvars.iv.7, 1
  %lftr.wideiv.7 = trunc i64 %indvars.iv.next.7 to i32
  %exitcond.7.not = icmp eq i32 %439, %lftr.wideiv.7
  br i1 %exitcond.7.not, label %._crit_edge53.7, label %scalar.ph287, !llvm.loop !40

._crit_edge53.7:                                  ; preds = %487, %middle.block286
  %indvars.iv.next69.7 = add nsw i64 %indvars.iv68.7, 1
  %lftr.wideiv71.7 = trunc i64 %indvars.iv.next69.7 to i32
  %exitcond72.7.not = icmp eq i32 %441, %lftr.wideiv71.7
  br i1 %exitcond72.7.not, label %.loopexit.7, label %.lr.ph52.7, !llvm.loop !25

.loopexit.7:                                      ; preds = %._crit_edge53.7, %.lr.ph56.7, %.preheader43.7, %.loopexit.6
  %488 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 144), align 16, !tbaa !9
  %.not.8 = icmp eq i32 %488, %.lcssa
  br i1 %.not.8, label %.loopexit.8, label %.preheader43.8

.preheader43.8:                                   ; preds = %.loopexit.7
  %489 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 152), align 8, !tbaa !18
  %.not3954.8 = icmp sgt i32 %488, %489
  br i1 %.not3954.8, label %.loopexit.8, label %.lr.ph56.8

.lr.ph56.8:                                       ; preds = %.preheader43.8
  %490 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 148), align 4, !tbaa !19
  %491 = load i32, ptr getelementptr inbounds (i8, ptr @col, i64 156), align 4, !tbaa !20
  %.not4049.8 = icmp sgt i32 %490, %491
  br i1 %.not4049.8, label %.loopexit.8, label %.lr.ph52.preheader.8

.lr.ph52.preheader.8:                             ; preds = %.lr.ph56.8
  %492 = sext i32 %490 to i64
  %493 = add i32 %491, 1
  %494 = sext i32 %488 to i64
  %495 = add i32 %489, 1
  %496 = sub i32 %491, %490
  %497 = zext i32 %496 to i64
  %498 = add nuw nsw i64 %497, 1
  %min.iters.check319 = icmp ult i32 %496, 7
  %n.vec322 = and i64 %498, 8589934584
  %ind.end323 = add nsw i64 %n.vec322, %492
  %cmp.n347 = icmp eq i64 %498, %n.vec322
  br label %.lr.ph52.8

.lr.ph52.8:                                       ; preds = %._crit_edge53.8, %.lr.ph52.preheader.8
  %indvars.iv68.8 = phi i64 [ %494, %.lr.ph52.preheader.8 ], [ %indvars.iv.next69.8, %._crit_edge53.8 ]
  br i1 %min.iters.check319, label %scalar.ph318.preheader, label %vector.body325

vector.body325:                                   ; preds = %.lr.ph52.8, %pred.store.continue345
  %index326 = phi i64 [ %index.next346, %pred.store.continue345 ], [ 0, %.lr.ph52.8 ]
  %offset.idx327 = add i64 %index326, %492
  %499 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.8, i64 %offset.idx327
  %500 = getelementptr inbounds i8, ptr %499, i64 16
  %wide.load328 = load <4 x i32>, ptr %499, align 4, !tbaa !5
  %wide.load329 = load <4 x i32>, ptr %500, align 4, !tbaa !5
  %501 = icmp ne <4 x i32> %wide.load328, <i32 9, i32 9, i32 9, i32 9>
  %502 = icmp ne <4 x i32> %wide.load329, <i32 9, i32 9, i32 9, i32 9>
  %503 = extractelement <4 x i1> %501, i64 0
  br i1 %503, label %pred.store.if330, label %pred.store.continue331

pred.store.if330:                                 ; preds = %vector.body325
  %504 = extractelement <4 x i32> %wide.load328, i64 0
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %505
  store i8 0, ptr %506, align 1, !tbaa !16
  br label %pred.store.continue331

pred.store.continue331:                           ; preds = %pred.store.if330, %vector.body325
  %507 = extractelement <4 x i1> %501, i64 1
  br i1 %507, label %pred.store.if332, label %pred.store.continue333

pred.store.if332:                                 ; preds = %pred.store.continue331
  %508 = extractelement <4 x i32> %wide.load328, i64 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %509
  store i8 0, ptr %510, align 1, !tbaa !16
  br label %pred.store.continue333

pred.store.continue333:                           ; preds = %pred.store.if332, %pred.store.continue331
  %511 = extractelement <4 x i1> %501, i64 2
  br i1 %511, label %pred.store.if334, label %pred.store.continue335

pred.store.if334:                                 ; preds = %pred.store.continue333
  %512 = extractelement <4 x i32> %wide.load328, i64 2
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %513
  store i8 0, ptr %514, align 1, !tbaa !16
  br label %pred.store.continue335

pred.store.continue335:                           ; preds = %pred.store.if334, %pred.store.continue333
  %515 = extractelement <4 x i1> %501, i64 3
  br i1 %515, label %pred.store.if336, label %pred.store.continue337

pred.store.if336:                                 ; preds = %pred.store.continue335
  %516 = extractelement <4 x i32> %wide.load328, i64 3
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %517
  store i8 0, ptr %518, align 1, !tbaa !16
  br label %pred.store.continue337

pred.store.continue337:                           ; preds = %pred.store.if336, %pred.store.continue335
  %519 = extractelement <4 x i1> %502, i64 0
  br i1 %519, label %pred.store.if338, label %pred.store.continue339

pred.store.if338:                                 ; preds = %pred.store.continue337
  %520 = extractelement <4 x i32> %wide.load329, i64 0
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %521
  store i8 0, ptr %522, align 1, !tbaa !16
  br label %pred.store.continue339

pred.store.continue339:                           ; preds = %pred.store.if338, %pred.store.continue337
  %523 = extractelement <4 x i1> %502, i64 1
  br i1 %523, label %pred.store.if340, label %pred.store.continue341

pred.store.if340:                                 ; preds = %pred.store.continue339
  %524 = extractelement <4 x i32> %wide.load329, i64 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %525
  store i8 0, ptr %526, align 1, !tbaa !16
  br label %pred.store.continue341

pred.store.continue341:                           ; preds = %pred.store.if340, %pred.store.continue339
  %527 = extractelement <4 x i1> %502, i64 2
  br i1 %527, label %pred.store.if342, label %pred.store.continue343

pred.store.if342:                                 ; preds = %pred.store.continue341
  %528 = extractelement <4 x i32> %wide.load329, i64 2
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %529
  store i8 0, ptr %530, align 1, !tbaa !16
  br label %pred.store.continue343

pred.store.continue343:                           ; preds = %pred.store.if342, %pred.store.continue341
  %531 = extractelement <4 x i1> %502, i64 3
  br i1 %531, label %pred.store.if344, label %pred.store.continue345

pred.store.if344:                                 ; preds = %pred.store.continue343
  %532 = extractelement <4 x i32> %wide.load329, i64 3
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %533
  store i8 0, ptr %534, align 1, !tbaa !16
  br label %pred.store.continue345

pred.store.continue345:                           ; preds = %pred.store.if344, %pred.store.continue343
  %index.next346 = add nuw i64 %index326, 8
  %535 = icmp eq i64 %index.next346, %n.vec322
  br i1 %535, label %middle.block317, label %vector.body325, !llvm.loop !41

middle.block317:                                  ; preds = %pred.store.continue345
  br i1 %cmp.n347, label %._crit_edge53.8, label %scalar.ph318.preheader

scalar.ph318.preheader:                           ; preds = %middle.block317, %.lr.ph52.8
  %indvars.iv.8.ph = phi i64 [ %492, %.lr.ph52.8 ], [ %ind.end323, %middle.block317 ]
  br label %scalar.ph318

scalar.ph318:                                     ; preds = %scalar.ph318.preheader, %541
  %indvars.iv.8 = phi i64 [ %indvars.iv.next.8, %541 ], [ %indvars.iv.8.ph, %scalar.ph318.preheader ]
  %536 = getelementptr inbounds [10 x [10 x i32]], ptr @grid, i64 0, i64 %indvars.iv68.8, i64 %indvars.iv.8
  %537 = load i32, ptr %536, align 4, !tbaa !5
  %.not41.8 = icmp eq i32 %537, 9
  br i1 %.not41.8, label %541, label %538

538:                                              ; preds = %scalar.ph318
  %539 = sext i32 %537 to i64
  %540 = getelementptr inbounds [10 x i8], ptr @posi, i64 0, i64 %539
  store i8 0, ptr %540, align 1, !tbaa !16
  br label %541

541:                                              ; preds = %538, %scalar.ph318
  %indvars.iv.next.8 = add nsw i64 %indvars.iv.8, 1
  %lftr.wideiv.8 = trunc i64 %indvars.iv.next.8 to i32
  %exitcond.8.not = icmp eq i32 %493, %lftr.wideiv.8
  br i1 %exitcond.8.not, label %._crit_edge53.8, label %scalar.ph318, !llvm.loop !42

._crit_edge53.8:                                  ; preds = %541, %middle.block317
  %indvars.iv.next69.8 = add nsw i64 %indvars.iv68.8, 1
  %lftr.wideiv71.8 = trunc i64 %indvars.iv.next69.8 to i32
  %exitcond72.8.not = icmp eq i32 %495, %lftr.wideiv71.8
  br i1 %exitcond72.8.not, label %.loopexit.8, label %.lr.ph52.8, !llvm.loop !25

.loopexit.8:                                      ; preds = %._crit_edge53.8, %.lr.ph56.8, %.preheader43.8, %.loopexit.7
  %num.promoted = load i32, ptr @num, align 4, !tbaa !5
  %542 = load <8 x i8>, ptr getelementptr inbounds (i8, ptr @posi, i64 1), align 1, !tbaa !16
  %543 = load i8, ptr getelementptr inbounds (i8, ptr @posi, i64 9), align 1, !tbaa !16, !range !43, !noundef !44
  %544 = zext nneg i8 %543 to i32
  %.mask = and <8 x i8> %542, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
  %545 = zext nneg <8 x i8> %.mask to <8 x i32>
  %546 = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %545)
  %op.rdx = add i32 %546, %544
  %op.rdx348 = add i32 %op.rdx, %num.promoted
  store i32 %op.rdx348, ptr @num, align 4, !tbaa !5
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @cout, i32 noundef %op.rdx348)
  ret i32 0
}

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIiiEC2IRiS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS4_S5_EEEbE4typeELb1EEEOS4_OS5_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIiiEC2IiiTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS3_S4_EEEbE4typeELb1EEEOS3_OS4_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIS_IiiES0_EC2IS0_S0_TnNSt9enable_ifIXaaclsr5_PCCPE18_ConstructiblePairIT_T0_EEclsr5_PCCPE26_ImplicitlyConvertiblePairIS4_S5_EEEbE4typeELb1EEERKS0_S9_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt4pairIS_IiiES0_EaSEOS1_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #3 align 2

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32>) #5

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,SCCPPass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass