; LLVM IR from bqi343/cp-notebook :: Contests/USACO Training/Ch 5/5.3 schlnet (main)

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

@posi = external dso_local global [101 x [101 x i8]], align 16
@N = external dso_local global i32, align 4
@numcomp = external dso_local global i32, align 4
@T = external dso_local global [101 x i32], align 16
@B = external dso_local global [101 x i32], align 16
@cT = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z2f1i(i32 noundef) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z2f2i(i32 noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4compi(i32 noundef) #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #3 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca %"class.std::basic_ifstream", align 8
  %3 = alloca %"class.std::basic_ofstream", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, 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 i32, align 4
  %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
  call void @llvm.lifetime.start.p0(i64 520, ptr %2) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %2, ptr noundef @.str, i32 noundef 8)
  call void @llvm.lifetime.start.p0(i64 512, ptr %3) #7
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %3, ptr noundef @.str.1, i32 noundef 16)
          to label %17 unwind label %26

17:                                               ; preds = %0
  %18 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 4 dereferenceable(4) @N)
          to label %19 unwind label %30

19:                                               ; preds = %17
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %20

20:                                               ; preds = %66, %19
  %21 = load i32, ptr %6, align 4, !tbaa !5
  %22 = load i32, ptr @N, align 4, !tbaa !5
  %23 = add nsw i32 %22, 1
  %24 = icmp slt i32 %21, %23
  br i1 %24, label %34, label %25

25:                                               ; preds = %20
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %69

26:                                               ; preds = %0
  %27 = landingpad { ptr, i32 }
          cleanup
  %28 = extractvalue { ptr, i32 } %27, 0
  store ptr %28, ptr %4, align 8
  %29 = extractvalue { ptr, i32 } %27, 1
  store i32 %29, ptr %5, align 4
  br label %233

30:                                               ; preds = %174, %17
  %31 = landingpad { ptr, i32 }
          cleanup
  %32 = extractvalue { ptr, i32 } %31, 0
  store ptr %32, ptr %4, align 8
  %33 = extractvalue { ptr, i32 } %31, 1
  store i32 %33, ptr %5, align 4
  br label %232

34:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %35 = load i32, ptr %6, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %36
  %38 = load i32, ptr %6, align 4, !tbaa !5
  %39 = sext i32 %38 to i64
  %40 = getelementptr inbounds [101 x i8], ptr %37, i64 0, i64 %39
  store i8 1, ptr %40, align 1, !tbaa !9
  br label %41

41:                                               ; preds = %58, %34
  %42 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %43 unwind label %54

43:                                               ; preds = %41
  %44 = load ptr, ptr %42, align 8, !tbaa !11
  %45 = getelementptr i8, ptr %44, i64 -24
  %46 = load i64, ptr %45, align 8
  %47 = getelementptr inbounds i8, ptr %42, i64 %46
  %48 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %47)
          to label %49 unwind label %54

49:                                               ; preds = %43
  br i1 %48, label %50, label %65

50:                                               ; preds = %49
  %51 = load i32, ptr %7, align 4, !tbaa !5
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %53, label %58

53:                                               ; preds = %50
  br label %65

54:                                               ; preds = %43, %41
  %55 = landingpad { ptr, i32 }
          cleanup
  %56 = extractvalue { ptr, i32 } %55, 0
  store ptr %56, ptr %4, align 8
  %57 = extractvalue { ptr, i32 } %55, 1
  store i32 %57, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %232

58:                                               ; preds = %50
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %60
  %62 = load i32, ptr %7, align 4, !tbaa !5
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds [101 x i8], ptr %61, i64 0, i64 %63
  store i8 1, ptr %64, align 1, !tbaa !9
  br label %41, !llvm.loop !13

65:                                               ; preds = %53, %49
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %66

66:                                               ; preds = %65
  %67 = load i32, ptr %6, align 4, !tbaa !5
  %68 = add nsw i32 %67, 1
  store i32 %68, ptr %6, align 4, !tbaa !5
  br label %20, !llvm.loop !15

69:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %70

70:                                               ; preds = %127, %69
  %71 = load i32, ptr %8, align 4, !tbaa !5
  %72 = load i32, ptr @N, align 4, !tbaa !5
  %73 = add nsw i32 %72, 1
  %74 = icmp slt i32 %71, %73
  br i1 %74, label %76, label %75

75:                                               ; preds = %70
  store i32 7, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %130

76:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %77

77:                                               ; preds = %123, %76
  %78 = load i32, ptr %10, align 4, !tbaa !5
  %79 = load i32, ptr @N, align 4, !tbaa !5
  %80 = add nsw i32 %79, 1
  %81 = icmp slt i32 %78, %80
  br i1 %81, label %83, label %82

82:                                               ; preds = %77
  store i32 10, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %126

83:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %84

84:                                               ; preds = %119, %83
  %85 = load i32, ptr %11, align 4, !tbaa !5
  %86 = load i32, ptr @N, align 4, !tbaa !5
  %87 = add nsw i32 %86, 1
  %88 = icmp slt i32 %85, %87
  br i1 %88, label %90, label %89

89:                                               ; preds = %84
  store i32 13, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %122

90:                                               ; preds = %84
  %91 = load i32, ptr %10, align 4, !tbaa !5
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %92
  %94 = load i32, ptr %8, align 4, !tbaa !5
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [101 x i8], ptr %93, i64 0, i64 %95
  %97 = load i8, ptr %96, align 1, !tbaa !9, !range !16, !noundef !17
  %98 = trunc i8 %97 to i1
  %99 = zext i1 %98 to i32
  %100 = load i32, ptr %8, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %101
  %103 = load i32, ptr %11, align 4, !tbaa !5
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [101 x i8], ptr %102, i64 0, i64 %104
  %106 = load i8, ptr %105, align 1, !tbaa !9, !range !16, !noundef !17
  %107 = trunc i8 %106 to i1
  %108 = zext i1 %107 to i32
  %109 = and i32 %99, %108
  %110 = icmp ne i32 %109, 0
  br i1 %110, label %111, label %118

111:                                              ; preds = %90
  %112 = load i32, ptr %10, align 4, !tbaa !5
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %113
  %115 = load i32, ptr %11, align 4, !tbaa !5
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds [101 x i8], ptr %114, i64 0, i64 %116
  store i8 1, ptr %117, align 1, !tbaa !9
  br label %118

118:                                              ; preds = %111, %90
  br label %119

119:                                              ; preds = %118
  %120 = load i32, ptr %11, align 4, !tbaa !5
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %11, align 4, !tbaa !5
  br label %84, !llvm.loop !18

122:                                              ; preds = %89
  br label %123

123:                                              ; preds = %122
  %124 = load i32, ptr %10, align 4, !tbaa !5
  %125 = add nsw i32 %124, 1
  store i32 %125, ptr %10, align 4, !tbaa !5
  br label %77, !llvm.loop !19

126:                                              ; preds = %82
  br label %127

127:                                              ; preds = %126
  %128 = load i32, ptr %8, align 4, !tbaa !5
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %8, align 4, !tbaa !5
  br label %70, !llvm.loop !20

130:                                              ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %131

131:                                              ; preds = %140, %130
  %132 = load i32, ptr %12, align 4, !tbaa !5
  %133 = load i32, ptr @N, align 4, !tbaa !5
  %134 = add nsw i32 %133, 1
  %135 = icmp slt i32 %132, %134
  br i1 %135, label %137, label %136

136:                                              ; preds = %131
  store i32 16, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %147

137:                                              ; preds = %131
  %138 = load i32, ptr %12, align 4, !tbaa !5
  invoke void @_Z4compi(i32 noundef %138)
          to label %139 unwind label %143

139:                                              ; preds = %137
  br label %140

140:                                              ; preds = %139
  %141 = load i32, ptr %12, align 4, !tbaa !5
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %12, align 4, !tbaa !5
  br label %131, !llvm.loop !21

143:                                              ; preds = %137
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %4, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %232

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

148:                                              ; preds = %156, %147
  %149 = load i32, ptr %13, align 4, !tbaa !5
  %150 = load i32, ptr @N, align 4, !tbaa !5
  %151 = add nsw i32 %150, 1
  %152 = icmp slt i32 %149, %151
  br i1 %152, label %154, label %153

153:                                              ; preds = %148
  store i32 19, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %159

154:                                              ; preds = %148
  %155 = load i32, ptr %13, align 4, !tbaa !5
  call void @_Z2f1i(i32 noundef %155)
  br label %156

156:                                              ; preds = %154
  %157 = load i32, ptr %13, align 4, !tbaa !5
  %158 = add nsw i32 %157, 1
  store i32 %158, ptr %13, align 4, !tbaa !5
  br label %148, !llvm.loop !22

159:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  store i32 1, ptr %14, align 4, !tbaa !5
  br label %160

160:                                              ; preds = %168, %159
  %161 = load i32, ptr %14, align 4, !tbaa !5
  %162 = load i32, ptr @N, align 4, !tbaa !5
  %163 = add nsw i32 %162, 1
  %164 = icmp slt i32 %161, %163
  br i1 %164, label %166, label %165

165:                                              ; preds = %160
  store i32 22, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %171

166:                                              ; preds = %160
  %167 = load i32, ptr %14, align 4, !tbaa !5
  call void @_Z2f2i(i32 noundef %167)
  br label %168

168:                                              ; preds = %166
  %169 = load i32, ptr %14, align 4, !tbaa !5
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %14, align 4, !tbaa !5
  br label %160, !llvm.loop !23

171:                                              ; preds = %165
  %172 = load i32, ptr getelementptr inbounds ([101 x i32], ptr @B, i64 0, i64 1), align 4, !tbaa !5
  %173 = icmp eq i32 %172, 0
  br i1 %173, label %174, label %177

174:                                              ; preds = %171
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef @.str.2)
          to label %176 unwind label %30

176:                                              ; preds = %174
  store i32 0, ptr %1, align 4
  store i32 1, ptr %9, align 4
  br label %223

177:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %178 = load i32, ptr @numcomp, align 4, !tbaa !5
  store i32 %178, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %179

179:                                              ; preds = %209, %177
  %180 = load i32, ptr %16, align 4, !tbaa !5
  %181 = load i32, ptr @N, align 4, !tbaa !5
  %182 = add nsw i32 %181, 1
  %183 = icmp slt i32 %180, %182
  br i1 %183, label %185, label %184

184:                                              ; preds = %179
  store i32 25, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %212

185:                                              ; preds = %179
  %186 = load i32, ptr %16, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [101 x i32], ptr @T, i64 0, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %208

191:                                              ; preds = %185
  %192 = load i32, ptr %16, align 4, !tbaa !5
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [101 x i32], ptr @T, i64 0, i64 %193
  %195 = load i32, ptr %16, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [101 x i32], ptr @B, i64 0, i64 %196
  %198 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %194, ptr noundef nonnull align 4 dereferenceable(4) %197)
          to label %199 unwind label %204

199:                                              ; preds = %191
  %200 = load i32, ptr %198, align 4, !tbaa !5
  %201 = sub nsw i32 %200, 1
  %202 = load i32, ptr %15, align 4, !tbaa !5
  %203 = add nsw i32 %202, %201
  store i32 %203, ptr %15, align 4, !tbaa !5
  br label %208

204:                                              ; preds = %191
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %4, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %231

208:                                              ; preds = %199, %185
  br label %209

209:                                              ; preds = %208
  %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 %179, !llvm.loop !24

212:                                              ; preds = %184
  %213 = load i32, ptr @cT, align 4, !tbaa !5
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %213)
          to label %215 unwind label %227

215:                                              ; preds = %212
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef @.str.3)
          to label %217 unwind label %227

217:                                              ; preds = %215
  %218 = load i32, ptr %15, align 4, !tbaa !5
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %216, i32 noundef %218)
          to label %220 unwind label %227

220:                                              ; preds = %217
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef @.str.3)
          to label %222 unwind label %227

222:                                              ; preds = %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  store i32 0, ptr %9, align 4
  br label %223

223:                                              ; preds = %222, %176
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %3) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr %3) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %2) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr %2) #7
  %224 = load i32, ptr %9, align 4
  switch i32 %224, label %239 [
    i32 0, label %225
    i32 1, label %225
  ]

225:                                              ; preds = %223, %223
  %226 = load i32, ptr %1, align 4
  ret i32 %226

227:                                              ; preds = %220, %217, %215, %212
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %4, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %5, align 4
  br label %231

231:                                              ; preds = %227, %204
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %232

232:                                              ; preds = %231, %143, %54, %30
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %3) #7
  br label %233

233:                                              ; preds = %232, %26
  call void @llvm.lifetime.end.p0(i64 512, ptr %3) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %2) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr %2) #7
  br label %234

234:                                              ; preds = %233
  %235 = load ptr, ptr %4, align 8
  %236 = load i32, ptr %5, align 4
  %237 = insertvalue { ptr, i32 } poison, ptr %235, 0
  %238 = insertvalue { ptr, i32 } %237, i32 %236, 1
  resume { ptr, i32 } %238

239:                                              ; preds = %223
  unreachable
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

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

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

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

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

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


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

@posi = external dso_local local_unnamed_addr global [101 x [101 x i8]], align 16
@N = external dso_local global i32, align 4
@numcomp = external dso_local local_unnamed_addr global i32, align 4
@T = external dso_local global [101 x i32], align 16
@B = external dso_local global [101 x i32], align 16
@cT = external dso_local local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z2f1i(i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z2f2i(i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4compi(i32 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::basic_ifstream", align 8
  %2 = alloca %"class.std::basic_ofstream", align 8
  %3 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %1) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %1, ptr noundef nonnull @.str, i32 noundef 8)
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %2) #7
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %2, ptr noundef nonnull @.str.1, i32 noundef 16)
          to label %4 unwind label %17

4:                                                ; preds = %0
  %5 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) @N)
          to label %.preheader68 unwind label %19

.preheader68:                                     ; preds = %4
  %6 = load i32, ptr @N, align 4, !tbaa !5
  %.not5070 = icmp slt i32 %6, 1
  br i1 %.not5070, label %._crit_edge89, label %.lr.ph

.preheader67:                                     ; preds = %36
  %.not5178 = icmp slt i32 %37, 1
  br i1 %.not5178, label %._crit_edge89, label %.preheader66.preheader

.preheader66.preheader:                           ; preds = %.preheader67
  %7 = add nuw i32 %37, 1
  %wide.trip.count110 = zext i32 %7 to i64
  %8 = mul nuw nsw i64 %wide.trip.count110, 102
  %scevgep = getelementptr i8, ptr getelementptr (i8, ptr @posi, i64 -101), i64 %8
  %9 = mul nuw nsw i64 %wide.trip.count110, 101
  %10 = zext nneg i32 %37 to i64
  %11 = zext nneg i32 %37 to i64
  %12 = getelementptr i8, ptr @posi, i64 %9
  %13 = getelementptr i8, ptr %12, i64 -99
  %14 = getelementptr i8, ptr @posi, i64 %wide.trip.count110
  %15 = getelementptr i8, ptr %14, i64 101
  %min.iters.check = icmp ult i32 %37, 8
  %min.iters.check135 = icmp ult i32 %37, 32
  %n.vec = and i64 %10, 2147483616
  %cmp.n = icmp eq i64 %n.vec, %10
  %ind.end203 = or disjoint i64 %n.vec, 1
  %n.vec.remaining = and i64 %10, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  %n.vec202 = and i64 %10, 2147483640
  %ind.end = or disjoint i64 %n.vec202, 1
  %cmp.n224 = icmp eq i64 %n.vec202, %10
  %16 = and i32 %37, 1
  %lcmp.mod.not = icmp eq i32 %16, 0
  br label %.preheader66

17:                                               ; preds = %0
  %18 = landingpad { ptr, i32 }
          cleanup
  br label %233

19:                                               ; preds = %205, %4
  %20 = landingpad { ptr, i32 }
          cleanup
  br label %232

.lr.ph:                                           ; preds = %.preheader68, %36
  %indvars.iv = phi i64 [ %indvars.iv.next, %36 ], [ 1, %.preheader68 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  br label %21

21:                                               ; preds = %30, %.lr.ph
  %.sink124 = phi i64 [ %33, %30 ], [ %indvars.iv, %.lr.ph ]
  %22 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv, i64 %.sink124
  store i8 1, ptr %22, align 1, !tbaa !9
  %23 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %24 unwind label %34

24:                                               ; preds = %21
  %25 = load ptr, ptr %23, align 8, !tbaa !11
  %26 = getelementptr i8, ptr %25, i64 -24
  %27 = load i64, ptr %26, align 8
  %28 = getelementptr inbounds i8, ptr %23, i64 %27
  %29 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %28)
          to label %30 unwind label %34

30:                                               ; preds = %24
  %31 = load i32, ptr %3, align 4
  %32 = icmp ne i32 %31, 0
  %or.cond.not = select i1 %29, i1 %32, i1 false
  %33 = sext i32 %31 to i64
  br i1 %or.cond.not, label %21, label %36, !llvm.loop !13

34:                                               ; preds = %24, %21
  %35 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br label %232

36:                                               ; preds = %30
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %37 = load i32, ptr @N, align 4, !tbaa !5
  %38 = sext i32 %37 to i64
  %.not50.not = icmp slt i64 %indvars.iv, %38
  br i1 %.not50.not, label %.lr.ph, label %.preheader67, !llvm.loop !15

.preheader66:                                     ; preds = %.preheader66.preheader, %._crit_edge77.split
  %indvar = phi i64 [ 0, %.preheader66.preheader ], [ %indvar.next, %._crit_edge77.split ]
  %indvars.iv107 = phi i64 [ 1, %.preheader66.preheader ], [ %indvars.iv.next108, %._crit_edge77.split ]
  %gep = getelementptr i8, ptr getelementptr (i8, ptr @posi, i64 102), i64 %indvar
  %scevgep129 = getelementptr i8, ptr %13, i64 %indvar
  %39 = mul nuw nsw i64 %indvar, 101
  %gep231 = getelementptr i8, ptr getelementptr (i8, ptr @posi, i64 102), i64 %39
  %scevgep131 = getelementptr i8, ptr %15, i64 %39
  %bound0 = icmp ugt ptr %scevgep129, getelementptr inbounds (i8, ptr @posi, i64 102)
  %bound1 = icmp ult ptr %gep, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0132 = icmp ugt ptr %scevgep131, getelementptr inbounds (i8, ptr @posi, i64 102)
  %bound1133 = icmp ult ptr %gep231, %scevgep
  %found.conflict134 = and i1 %bound0132, %bound1133
  %conflict.rdx = or i1 %found.conflict, %found.conflict134
  br label %iter.check

.preheader64:                                     ; preds = %._crit_edge77.split
  br i1 %.not5178, label %.preheader63, label %.lr.ph82

iter.check:                                       ; preds = %.preheader66, %._crit_edge
  %indvars.iv102 = phi i64 [ 1, %.preheader66 ], [ %indvars.iv.next103, %._crit_edge ]
  %40 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %indvars.iv107
  %brmerge = select i1 %min.iters.check, i1 true, i1 %conflict.rdx
  br i1 %brmerge, label %vec.epilog.scalar.ph.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %iter.check
  br i1 %min.iters.check135, label %vec.epilog.ph, label %vector.ph

vector.ph:                                        ; preds = %vector.main.loop.iter.check
  %41 = load i8, ptr %40, align 1, !tbaa !9, !range !16, !alias.scope !17, !noundef !20
  %broadcast.splatinsert137 = insertelement <16 x i8> poison, i8 %41, i64 0
  %broadcast.splat138 = shufflevector <16 x i8> %broadcast.splatinsert137, <16 x i8> poison, <16 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %pred.store.continue200, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %pred.store.continue200 ]
  %offset.idx = or disjoint i64 %index, 1
  %42 = or disjoint i64 %index, 17
  %43 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv107, i64 %offset.idx
  %44 = getelementptr inbounds i8, ptr %43, i64 16
  %wide.load = load <16 x i8>, ptr %43, align 1, !tbaa !9, !alias.scope !21
  %wide.load136 = load <16 x i8>, ptr %44, align 1, !tbaa !9, !alias.scope !21
  %45 = and <16 x i8> %wide.load, %broadcast.splat138
  %46 = and <16 x i8> %wide.load136, %broadcast.splat138
  %47 = icmp ne <16 x i8> %45, zeroinitializer
  %48 = icmp ne <16 x i8> %46, zeroinitializer
  %49 = extractelement <16 x i1> %47, i64 0
  br i1 %49, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %50 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %offset.idx
  store i8 1, ptr %50, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %51 = extractelement <16 x i1> %47, i64 1
  br i1 %51, label %pred.store.if139, label %pred.store.continue140

pred.store.if139:                                 ; preds = %pred.store.continue
  %52 = or disjoint i64 %index, 2
  %53 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %52
  store i8 1, ptr %53, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue140

pred.store.continue140:                           ; preds = %pred.store.if139, %pred.store.continue
  %54 = extractelement <16 x i1> %47, i64 2
  br i1 %54, label %pred.store.if141, label %pred.store.continue142

pred.store.if141:                                 ; preds = %pred.store.continue140
  %55 = or disjoint i64 %index, 3
  %56 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %55
  store i8 1, ptr %56, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue142

pred.store.continue142:                           ; preds = %pred.store.if141, %pred.store.continue140
  %57 = extractelement <16 x i1> %47, i64 3
  br i1 %57, label %pred.store.if143, label %pred.store.continue144

pred.store.if143:                                 ; preds = %pred.store.continue142
  %58 = or disjoint i64 %index, 4
  %59 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %58
  store i8 1, ptr %59, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue144

pred.store.continue144:                           ; preds = %pred.store.if143, %pred.store.continue142
  %60 = extractelement <16 x i1> %47, i64 4
  br i1 %60, label %pred.store.if145, label %pred.store.continue146

pred.store.if145:                                 ; preds = %pred.store.continue144
  %61 = or disjoint i64 %index, 5
  %62 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %61
  store i8 1, ptr %62, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue146

pred.store.continue146:                           ; preds = %pred.store.if145, %pred.store.continue144
  %63 = extractelement <16 x i1> %47, i64 5
  br i1 %63, label %pred.store.if147, label %pred.store.continue148

pred.store.if147:                                 ; preds = %pred.store.continue146
  %64 = or disjoint i64 %index, 6
  %65 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %64
  store i8 1, ptr %65, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue148

pred.store.continue148:                           ; preds = %pred.store.if147, %pred.store.continue146
  %66 = extractelement <16 x i1> %47, i64 6
  br i1 %66, label %pred.store.if149, label %pred.store.continue150

pred.store.if149:                                 ; preds = %pred.store.continue148
  %67 = or disjoint i64 %index, 7
  %68 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %67
  store i8 1, ptr %68, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue150

pred.store.continue150:                           ; preds = %pred.store.if149, %pred.store.continue148
  %69 = extractelement <16 x i1> %47, i64 7
  br i1 %69, label %pred.store.if151, label %pred.store.continue152

pred.store.if151:                                 ; preds = %pred.store.continue150
  %70 = or disjoint i64 %index, 8
  %71 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %70
  store i8 1, ptr %71, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue152

pred.store.continue152:                           ; preds = %pred.store.if151, %pred.store.continue150
  %72 = extractelement <16 x i1> %47, i64 8
  br i1 %72, label %pred.store.if153, label %pred.store.continue154

pred.store.if153:                                 ; preds = %pred.store.continue152
  %73 = or disjoint i64 %index, 9
  %74 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %73
  store i8 1, ptr %74, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue154

pred.store.continue154:                           ; preds = %pred.store.if153, %pred.store.continue152
  %75 = extractelement <16 x i1> %47, i64 9
  br i1 %75, label %pred.store.if155, label %pred.store.continue156

pred.store.if155:                                 ; preds = %pred.store.continue154
  %76 = or disjoint i64 %index, 10
  %77 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %76
  store i8 1, ptr %77, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue156

pred.store.continue156:                           ; preds = %pred.store.if155, %pred.store.continue154
  %78 = extractelement <16 x i1> %47, i64 10
  br i1 %78, label %pred.store.if157, label %pred.store.continue158

pred.store.if157:                                 ; preds = %pred.store.continue156
  %79 = or disjoint i64 %index, 11
  %80 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %79
  store i8 1, ptr %80, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue158

pred.store.continue158:                           ; preds = %pred.store.if157, %pred.store.continue156
  %81 = extractelement <16 x i1> %47, i64 11
  br i1 %81, label %pred.store.if159, label %pred.store.continue160

pred.store.if159:                                 ; preds = %pred.store.continue158
  %82 = or disjoint i64 %index, 12
  %83 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %82
  store i8 1, ptr %83, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue160

pred.store.continue160:                           ; preds = %pred.store.if159, %pred.store.continue158
  %84 = extractelement <16 x i1> %47, i64 12
  br i1 %84, label %pred.store.if161, label %pred.store.continue162

pred.store.if161:                                 ; preds = %pred.store.continue160
  %85 = or disjoint i64 %index, 13
  %86 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %85
  store i8 1, ptr %86, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue162

pred.store.continue162:                           ; preds = %pred.store.if161, %pred.store.continue160
  %87 = extractelement <16 x i1> %47, i64 13
  br i1 %87, label %pred.store.if163, label %pred.store.continue164

pred.store.if163:                                 ; preds = %pred.store.continue162
  %88 = or disjoint i64 %index, 14
  %89 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %88
  store i8 1, ptr %89, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue164

pred.store.continue164:                           ; preds = %pred.store.if163, %pred.store.continue162
  %90 = extractelement <16 x i1> %47, i64 14
  br i1 %90, label %pred.store.if165, label %pred.store.continue166

pred.store.if165:                                 ; preds = %pred.store.continue164
  %91 = or disjoint i64 %index, 15
  %92 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %91
  store i8 1, ptr %92, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue166

pred.store.continue166:                           ; preds = %pred.store.if165, %pred.store.continue164
  %93 = extractelement <16 x i1> %47, i64 15
  br i1 %93, label %pred.store.if167, label %pred.store.continue168

pred.store.if167:                                 ; preds = %pred.store.continue166
  %94 = or disjoint i64 %index, 16
  %95 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %94
  store i8 1, ptr %95, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue168

pred.store.continue168:                           ; preds = %pred.store.if167, %pred.store.continue166
  %96 = extractelement <16 x i1> %48, i64 0
  br i1 %96, label %pred.store.if169, label %pred.store.continue170

pred.store.if169:                                 ; preds = %pred.store.continue168
  %97 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %42
  store i8 1, ptr %97, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue170

pred.store.continue170:                           ; preds = %pred.store.if169, %pred.store.continue168
  %98 = extractelement <16 x i1> %48, i64 1
  br i1 %98, label %pred.store.if171, label %pred.store.continue172

pred.store.if171:                                 ; preds = %pred.store.continue170
  %99 = or disjoint i64 %index, 18
  %100 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %99
  store i8 1, ptr %100, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue172

pred.store.continue172:                           ; preds = %pred.store.if171, %pred.store.continue170
  %101 = extractelement <16 x i1> %48, i64 2
  br i1 %101, label %pred.store.if173, label %pred.store.continue174

pred.store.if173:                                 ; preds = %pred.store.continue172
  %102 = or disjoint i64 %index, 19
  %103 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %102
  store i8 1, ptr %103, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue174

pred.store.continue174:                           ; preds = %pred.store.if173, %pred.store.continue172
  %104 = extractelement <16 x i1> %48, i64 3
  br i1 %104, label %pred.store.if175, label %pred.store.continue176

pred.store.if175:                                 ; preds = %pred.store.continue174
  %105 = or disjoint i64 %index, 20
  %106 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %105
  store i8 1, ptr %106, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue176

pred.store.continue176:                           ; preds = %pred.store.if175, %pred.store.continue174
  %107 = extractelement <16 x i1> %48, i64 4
  br i1 %107, label %pred.store.if177, label %pred.store.continue178

pred.store.if177:                                 ; preds = %pred.store.continue176
  %108 = or disjoint i64 %index, 21
  %109 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %108
  store i8 1, ptr %109, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue178

pred.store.continue178:                           ; preds = %pred.store.if177, %pred.store.continue176
  %110 = extractelement <16 x i1> %48, i64 5
  br i1 %110, label %pred.store.if179, label %pred.store.continue180

pred.store.if179:                                 ; preds = %pred.store.continue178
  %111 = or disjoint i64 %index, 22
  %112 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %111
  store i8 1, ptr %112, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue180

pred.store.continue180:                           ; preds = %pred.store.if179, %pred.store.continue178
  %113 = extractelement <16 x i1> %48, i64 6
  br i1 %113, label %pred.store.if181, label %pred.store.continue182

pred.store.if181:                                 ; preds = %pred.store.continue180
  %114 = or disjoint i64 %index, 23
  %115 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %114
  store i8 1, ptr %115, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue182

pred.store.continue182:                           ; preds = %pred.store.if181, %pred.store.continue180
  %116 = extractelement <16 x i1> %48, i64 7
  br i1 %116, label %pred.store.if183, label %pred.store.continue184

pred.store.if183:                                 ; preds = %pred.store.continue182
  %117 = or disjoint i64 %index, 24
  %118 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %117
  store i8 1, ptr %118, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue184

pred.store.continue184:                           ; preds = %pred.store.if183, %pred.store.continue182
  %119 = extractelement <16 x i1> %48, i64 8
  br i1 %119, label %pred.store.if185, label %pred.store.continue186

pred.store.if185:                                 ; preds = %pred.store.continue184
  %120 = or disjoint i64 %index, 25
  %121 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %120
  store i8 1, ptr %121, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue186

pred.store.continue186:                           ; preds = %pred.store.if185, %pred.store.continue184
  %122 = extractelement <16 x i1> %48, i64 9
  br i1 %122, label %pred.store.if187, label %pred.store.continue188

pred.store.if187:                                 ; preds = %pred.store.continue186
  %123 = or disjoint i64 %index, 26
  %124 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %123
  store i8 1, ptr %124, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue188

pred.store.continue188:                           ; preds = %pred.store.if187, %pred.store.continue186
  %125 = extractelement <16 x i1> %48, i64 10
  br i1 %125, label %pred.store.if189, label %pred.store.continue190

pred.store.if189:                                 ; preds = %pred.store.continue188
  %126 = or disjoint i64 %index, 27
  %127 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %126
  store i8 1, ptr %127, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue190

pred.store.continue190:                           ; preds = %pred.store.if189, %pred.store.continue188
  %128 = extractelement <16 x i1> %48, i64 11
  br i1 %128, label %pred.store.if191, label %pred.store.continue192

pred.store.if191:                                 ; preds = %pred.store.continue190
  %129 = or disjoint i64 %index, 28
  %130 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %129
  store i8 1, ptr %130, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue192

pred.store.continue192:                           ; preds = %pred.store.if191, %pred.store.continue190
  %131 = extractelement <16 x i1> %48, i64 12
  br i1 %131, label %pred.store.if193, label %pred.store.continue194

pred.store.if193:                                 ; preds = %pred.store.continue192
  %132 = or disjoint i64 %index, 29
  %133 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %132
  store i8 1, ptr %133, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue194

pred.store.continue194:                           ; preds = %pred.store.if193, %pred.store.continue192
  %134 = extractelement <16 x i1> %48, i64 13
  br i1 %134, label %pred.store.if195, label %pred.store.continue196

pred.store.if195:                                 ; preds = %pred.store.continue194
  %135 = or disjoint i64 %index, 30
  %136 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %135
  store i8 1, ptr %136, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue196

pred.store.continue196:                           ; preds = %pred.store.if195, %pred.store.continue194
  %137 = extractelement <16 x i1> %48, i64 14
  br i1 %137, label %pred.store.if197, label %pred.store.continue198

pred.store.if197:                                 ; preds = %pred.store.continue196
  %138 = or disjoint i64 %index, 31
  %139 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %138
  store i8 1, ptr %139, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue198

pred.store.continue198:                           ; preds = %pred.store.if197, %pred.store.continue196
  %140 = extractelement <16 x i1> %48, i64 15
  br i1 %140, label %pred.store.if199, label %pred.store.continue200

pred.store.if199:                                 ; preds = %pred.store.continue198
  %141 = add i64 %index, 32
  %142 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %141
  store i8 1, ptr %142, align 1, !tbaa !9, !alias.scope !23, !noalias !25
  br label %pred.store.continue200

pred.store.continue200:                           ; preds = %pred.store.if199, %pred.store.continue198
  %index.next = add nuw i64 %index, 32
  %143 = icmp eq i64 %index.next, %n.vec
  br i1 %143, label %middle.block, label %vector.body, !llvm.loop !26

middle.block:                                     ; preds = %pred.store.continue200
  br i1 %cmp.n, label %._crit_edge, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block
  br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph.preheader, label %vec.epilog.ph

vec.epilog.scalar.ph.preheader:                   ; preds = %iter.check, %vec.epilog.middle.block, %vec.epilog.iter.check
  %indvars.iv99.ph = phi i64 [ 1, %iter.check ], [ %ind.end203, %vec.epilog.iter.check ], [ %ind.end, %vec.epilog.middle.block ]
  br i1 %lcmp.mod.not, label %vec.epilog.scalar.ph.prol.loopexit, label %vec.epilog.scalar.ph.prol

vec.epilog.scalar.ph.prol:                        ; preds = %vec.epilog.scalar.ph.preheader
  %144 = load i8, ptr %40, align 1, !tbaa !9, !range !16, !noundef !20
  %145 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv107, i64 %indvars.iv99.ph
  %146 = load i8, ptr %145, align 1, !tbaa !9, !range !16, !noundef !20
  %147 = and i8 %146, %144
  %.not59.prol = icmp eq i8 %147, 0
  br i1 %.not59.prol, label %vec.epilog.scalar.ph.prol.loopexit.unr-lcssa, label %148

148:                                              ; preds = %vec.epilog.scalar.ph.prol
  %149 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %indvars.iv99.ph
  store i8 1, ptr %149, align 1, !tbaa !9
  br label %vec.epilog.scalar.ph.prol.loopexit.unr-lcssa

vec.epilog.scalar.ph.prol.loopexit.unr-lcssa:     ; preds = %148, %vec.epilog.scalar.ph.prol
  %indvars.iv.next100.prol = add nuw nsw i64 %indvars.iv99.ph, 1
  br label %vec.epilog.scalar.ph.prol.loopexit

vec.epilog.scalar.ph.prol.loopexit:               ; preds = %vec.epilog.scalar.ph.prol.loopexit.unr-lcssa, %vec.epilog.scalar.ph.preheader
  %indvars.iv99.unr = phi i64 [ %indvars.iv99.ph, %vec.epilog.scalar.ph.preheader ], [ %indvars.iv.next100.prol, %vec.epilog.scalar.ph.prol.loopexit.unr-lcssa ]
  %150 = icmp eq i64 %indvars.iv99.ph, %11
  br i1 %150, label %._crit_edge, label %vec.epilog.scalar.ph

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %151 = load i8, ptr %40, align 1, !tbaa !9, !range !16, !alias.scope !29, !noundef !20
  %broadcast.splatinsert = insertelement <8 x i8> poison, i8 %151, i64 0
  %broadcast.splat = shufflevector <8 x i8> %broadcast.splatinsert, <8 x i8> poison, <8 x i32> zeroinitializer
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %pred.store.continue222, %vec.epilog.ph
  %index204 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next223, %pred.store.continue222 ]
  %offset.idx205 = or disjoint i64 %index204, 1
  %152 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv107, i64 %offset.idx205
  %wide.load206 = load <8 x i8>, ptr %152, align 1, !tbaa !9, !alias.scope !32
  %153 = and <8 x i8> %wide.load206, %broadcast.splat
  %154 = icmp ne <8 x i8> %153, zeroinitializer
  %155 = extractelement <8 x i1> %154, i64 0
  br i1 %155, label %pred.store.if207, label %pred.store.continue208

pred.store.if207:                                 ; preds = %vec.epilog.vector.body
  %156 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %offset.idx205
  store i8 1, ptr %156, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue208

pred.store.continue208:                           ; preds = %pred.store.if207, %vec.epilog.vector.body
  %157 = extractelement <8 x i1> %154, i64 1
  br i1 %157, label %pred.store.if209, label %pred.store.continue210

pred.store.if209:                                 ; preds = %pred.store.continue208
  %158 = or disjoint i64 %index204, 2
  %159 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %158
  store i8 1, ptr %159, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue210

pred.store.continue210:                           ; preds = %pred.store.if209, %pred.store.continue208
  %160 = extractelement <8 x i1> %154, i64 2
  br i1 %160, label %pred.store.if211, label %pred.store.continue212

pred.store.if211:                                 ; preds = %pred.store.continue210
  %161 = or disjoint i64 %index204, 3
  %162 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %161
  store i8 1, ptr %162, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue212

pred.store.continue212:                           ; preds = %pred.store.if211, %pred.store.continue210
  %163 = extractelement <8 x i1> %154, i64 3
  br i1 %163, label %pred.store.if213, label %pred.store.continue214

pred.store.if213:                                 ; preds = %pred.store.continue212
  %164 = or disjoint i64 %index204, 4
  %165 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %164
  store i8 1, ptr %165, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue214

pred.store.continue214:                           ; preds = %pred.store.if213, %pred.store.continue212
  %166 = extractelement <8 x i1> %154, i64 4
  br i1 %166, label %pred.store.if215, label %pred.store.continue216

pred.store.if215:                                 ; preds = %pred.store.continue214
  %167 = or disjoint i64 %index204, 5
  %168 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %167
  store i8 1, ptr %168, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue216

pred.store.continue216:                           ; preds = %pred.store.if215, %pred.store.continue214
  %169 = extractelement <8 x i1> %154, i64 5
  br i1 %169, label %pred.store.if217, label %pred.store.continue218

pred.store.if217:                                 ; preds = %pred.store.continue216
  %170 = or disjoint i64 %index204, 6
  %171 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %170
  store i8 1, ptr %171, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue218

pred.store.continue218:                           ; preds = %pred.store.if217, %pred.store.continue216
  %172 = extractelement <8 x i1> %154, i64 6
  br i1 %172, label %pred.store.if219, label %pred.store.continue220

pred.store.if219:                                 ; preds = %pred.store.continue218
  %173 = or disjoint i64 %index204, 7
  %174 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %173
  store i8 1, ptr %174, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue220

pred.store.continue220:                           ; preds = %pred.store.if219, %pred.store.continue218
  %175 = extractelement <8 x i1> %154, i64 7
  br i1 %175, label %pred.store.if221, label %pred.store.continue222

pred.store.if221:                                 ; preds = %pred.store.continue220
  %176 = add i64 %index204, 8
  %177 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %176
  store i8 1, ptr %177, align 1, !tbaa !9, !alias.scope !34, !noalias !36
  br label %pred.store.continue222

pred.store.continue222:                           ; preds = %pred.store.if221, %pred.store.continue220
  %index.next223 = add nuw i64 %index204, 8
  %178 = icmp eq i64 %index.next223, %n.vec202
  br i1 %178, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !37

vec.epilog.middle.block:                          ; preds = %pred.store.continue222
  br i1 %cmp.n224, label %._crit_edge, label %vec.epilog.scalar.ph.preheader

._crit_edge77.split:                              ; preds = %._crit_edge
  %indvars.iv.next108 = add nuw nsw i64 %indvars.iv107, 1
  %exitcond111.not = icmp eq i64 %indvars.iv.next108, %wide.trip.count110
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond111.not, label %.preheader64, label %.preheader66, !llvm.loop !38

._crit_edge:                                      ; preds = %vec.epilog.scalar.ph.prol.loopexit, %191, %vec.epilog.middle.block, %middle.block
  %indvars.iv.next103 = add nuw nsw i64 %indvars.iv102, 1
  %exitcond106.not = icmp eq i64 %indvars.iv.next103, %wide.trip.count110
  br i1 %exitcond106.not, label %._crit_edge77.split, label %iter.check, !llvm.loop !39

vec.epilog.scalar.ph:                             ; preds = %vec.epilog.scalar.ph.prol.loopexit, %191
  %indvars.iv99 = phi i64 [ %indvars.iv.next100.1, %191 ], [ %indvars.iv99.unr, %vec.epilog.scalar.ph.prol.loopexit ]
  %179 = load i8, ptr %40, align 1, !tbaa !9, !range !16, !noundef !20
  %180 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv107, i64 %indvars.iv99
  %181 = load i8, ptr %180, align 1, !tbaa !9, !range !16, !noundef !20
  %182 = and i8 %181, %179
  %.not59 = icmp eq i8 %182, 0
  br i1 %.not59, label %vec.epilog.scalar.ph.1, label %183

183:                                              ; preds = %vec.epilog.scalar.ph
  %184 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %indvars.iv99
  store i8 1, ptr %184, align 1, !tbaa !9
  br label %vec.epilog.scalar.ph.1

vec.epilog.scalar.ph.1:                           ; preds = %vec.epilog.scalar.ph, %183
  %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1
  %185 = load i8, ptr %40, align 1, !tbaa !9, !range !16, !noundef !20
  %186 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv107, i64 %indvars.iv.next100
  %187 = load i8, ptr %186, align 1, !tbaa !9, !range !16, !noundef !20
  %188 = and i8 %187, %185
  %.not59.1 = icmp eq i8 %188, 0
  br i1 %.not59.1, label %191, label %189

189:                                              ; preds = %vec.epilog.scalar.ph.1
  %190 = getelementptr inbounds [101 x [101 x i8]], ptr @posi, i64 0, i64 %indvars.iv102, i64 %indvars.iv.next100
  store i8 1, ptr %190, align 1, !tbaa !9
  br label %191

191:                                              ; preds = %189, %vec.epilog.scalar.ph.1
  %indvars.iv.next100.1 = add nuw nsw i64 %indvars.iv99, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next100.1, %wide.trip.count110
  br i1 %exitcond.not.1, label %._crit_edge, label %vec.epilog.scalar.ph, !llvm.loop !40

.preheader63:                                     ; preds = %193, %.preheader64
  %192 = phi i32 [ %37, %.preheader64 ], [ %195, %193 ]
  %.not5383 = icmp slt i32 %192, 1
  br i1 %.not5383, label %._crit_edge89, label %.lr.ph85

.lr.ph82:                                         ; preds = %.preheader64, %193
  %.03981 = phi i32 [ %194, %193 ], [ 1, %.preheader64 ]
  invoke void @_Z4compi(i32 noundef %.03981)
          to label %193 unwind label %196

193:                                              ; preds = %.lr.ph82
  %194 = add nuw nsw i32 %.03981, 1
  %195 = load i32, ptr @N, align 4, !tbaa !5
  %.not52.not = icmp slt i32 %.03981, %195
  br i1 %.not52.not, label %.lr.ph82, label %.preheader63, !llvm.loop !41

196:                                              ; preds = %.lr.ph82
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %232

.preheader:                                       ; preds = %.lr.ph85
  %.not5486 = icmp slt i32 %199, 1
  br i1 %.not5486, label %._crit_edge89, label %.lr.ph88

.lr.ph85:                                         ; preds = %.preheader63, %.lr.ph85
  %.03884 = phi i32 [ %198, %.lr.ph85 ], [ 1, %.preheader63 ]
  call void @_Z2f1i(i32 noundef %.03884)
  %198 = add nuw nsw i32 %.03884, 1
  %199 = load i32, ptr @N, align 4, !tbaa !5
  %.not53.not = icmp slt i32 %.03884, %199
  br i1 %.not53.not, label %.lr.ph85, label %.preheader, !llvm.loop !42

._crit_edge89:                                    ; preds = %.lr.ph88, %.preheader67, %.preheader68, %.preheader63, %.preheader
  %200 = phi i32 [ %199, %.preheader ], [ %192, %.preheader63 ], [ %37, %.preheader67 ], [ %6, %.preheader68 ], [ %204, %.lr.ph88 ]
  %201 = load i32, ptr getelementptr inbounds (i8, ptr @B, i64 4), align 4, !tbaa !5
  %202 = icmp eq i32 %201, 0
  br i1 %202, label %205, label %207

.lr.ph88:                                         ; preds = %.preheader, %.lr.ph88
  %.03787 = phi i32 [ %203, %.lr.ph88 ], [ 1, %.preheader ]
  call void @_Z2f2i(i32 noundef %.03787)
  %203 = add nuw nsw i32 %.03787, 1
  %204 = load i32, ptr @N, align 4, !tbaa !5
  %.not54.not = icmp slt i32 %.03787, %204
  br i1 %.not54.not, label %.lr.ph88, label %._crit_edge89, !llvm.loop !43

205:                                              ; preds = %._crit_edge89
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull @.str.2)
          to label %229 unwind label %19

207:                                              ; preds = %._crit_edge89
  %208 = load i32, ptr @numcomp, align 4, !tbaa !5
  %.not5590 = icmp slt i32 %200, 1
  br i1 %.not5590, label %._crit_edge95, label %.lr.ph94

._crit_edge95:                                    ; preds = %220, %207
  %.036.lcssa = phi i32 [ %208, %207 ], [ %.1, %220 ]
  %209 = load i32, ptr @cT, align 4, !tbaa !5
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 noundef %209)
          to label %223 unwind label %230

.lr.ph94:                                         ; preds = %207, %220
  %211 = phi i32 [ %221, %220 ], [ %200, %207 ]
  %indvars.iv112 = phi i64 [ %indvars.iv.next113, %220 ], [ 1, %207 ]
  %.03691 = phi i32 [ %.1, %220 ], [ %208, %207 ]
  %212 = getelementptr inbounds [101 x i32], ptr @T, i64 0, i64 %indvars.iv112
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %.not56 = icmp eq i32 %213, 0
  br i1 %.not56, label %220, label %214

214:                                              ; preds = %.lr.ph94
  %215 = getelementptr inbounds [101 x i32], ptr @B, i64 0, i64 %indvars.iv112
  %216 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %212, ptr noundef nonnull align 4 dereferenceable(4) %215)
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = add i32 %.03691, -1
  %219 = add i32 %218, %217
  %.pre = load i32, ptr @N, align 4, !tbaa !5
  br label %220

220:                                              ; preds = %.lr.ph94, %214
  %221 = phi i32 [ %.pre, %214 ], [ %211, %.lr.ph94 ]
  %.1 = phi i32 [ %219, %214 ], [ %.03691, %.lr.ph94 ]
  %indvars.iv.next113 = add nuw nsw i64 %indvars.iv112, 1
  %222 = sext i32 %221 to i64
  %.not55.not = icmp slt i64 %indvars.iv112, %222
  br i1 %.not55.not, label %.lr.ph94, label %._crit_edge95, !llvm.loop !44

223:                                              ; preds = %._crit_edge95
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @.str.3)
          to label %225 unwind label %230

225:                                              ; preds = %223
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 noundef %.036.lcssa)
          to label %227 unwind label %230

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull @.str.3)
          to label %229 unwind label %230

229:                                              ; preds = %227, %205
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %2) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %2) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %1) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %1) #7
  ret i32 0

230:                                              ; preds = %227, %225, %223, %._crit_edge95
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %232

232:                                              ; preds = %230, %196, %34, %19
  %.pn = phi { ptr, i32 } [ %35, %34 ], [ %197, %196 ], [ %20, %19 ], [ %231, %230 ]
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %2) #7
  br label %233

233:                                              ; preds = %232, %17
  %.pn.pn = phi { ptr, i32 } [ %.pn, %232 ], [ %18, %17 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %2) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %1) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %1) #7
  resume { ptr, i32 } %.pn.pn
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264)) local_unnamed_addr #2 align 2

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

; 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 #6

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

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

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

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


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