; LLVM IR from eyangch/competitive-programming :: AdventOfCode/2020/day16 (2)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"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::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@have = external dso_local global [2000 x i8], align 16
@h = external dso_local global [2000 x %"class.std::vector"], align 16
@via = external dso_local global [2000 x %"class.std::set"], align 16
@v = external dso_local global %"class.std::vector.3", align 8
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@stdin = external global ptr, align 8
@_ZSt3cin = external global %"class.std::basic_istream", align 8
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

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

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

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #1 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca i32, align 4
  %4 = alloca i64, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca i32, align 4
  %24 = alloca i8, align 1
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %"struct.std::pair", align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::set", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"struct.std::pair", align 8
  %43 = alloca %"class.std::vector", align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %46 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca i32, align 4
  %52 = alloca [50 x i32], align 16
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  %60 = load ptr, ptr @stdin, align 8, !tbaa !5
  %61 = call ptr @freopen(ptr noundef @.str, ptr noundef @.str.5, ptr noundef %60)
  call void @llvm.lifetime.start.p0(i64 32, ptr %2) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  store i32 0, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  store i64 1, ptr %4, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %62

62:                                               ; preds = %405, %86, %82, %74, %0
  %63 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %64 unwind label %75

64:                                               ; preds = %62
  %65 = load ptr, ptr %63, align 8, !tbaa !13
  %66 = getelementptr i8, ptr %65, i64 -24
  %67 = load i64, ptr %66, align 8
  %68 = getelementptr inbounds i8, ptr %63, i64 %67
  %69 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %68)
          to label %70 unwind label %75

70:                                               ; preds = %64
  br i1 %69, label %71, label %406

71:                                               ; preds = %70
  %72 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @.str.6)
          to label %73 unwind label %75

73:                                               ; preds = %71
  br i1 %72, label %74, label %79

74:                                               ; preds = %73
  br label %62, !llvm.loop !15

75:                                               ; preds = %83, %79, %71, %64, %62
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %6, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %7, align 4
  br label %635

79:                                               ; preds = %73
  %80 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @.str.7)
          to label %81 unwind label %75

81:                                               ; preds = %79
  br i1 %80, label %82, label %83

82:                                               ; preds = %81
  store i32 1, ptr %3, align 4, !tbaa !9
  br label %62, !llvm.loop !15

83:                                               ; preds = %81
  %84 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @.str.8)
          to label %85 unwind label %75

85:                                               ; preds = %83
  br i1 %84, label %86, label %87

86:                                               ; preds = %85
  store i32 2, ptr %3, align 4, !tbaa !9
  br label %62, !llvm.loop !15

87:                                               ; preds = %85
  %88 = load i32, ptr %3, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %306

90:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %114, %90
  br i1 true, label %92, label %117

92:                                               ; preds = %91
  %93 = load i32, ptr %8, align 4, !tbaa !9
  %94 = sext i32 %93 to i64
  %95 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %94)
          to label %96 unwind label %109

96:                                               ; preds = %92
  %97 = load i8, ptr %95, align 1, !tbaa !17
  %98 = sext i8 %97 to i32
  %99 = icmp sge i32 %98, 48
  br i1 %99, label %100, label %113

100:                                              ; preds = %96
  %101 = load i32, ptr %8, align 4, !tbaa !9
  %102 = sext i32 %101 to i64
  %103 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %102)
          to label %104 unwind label %109

104:                                              ; preds = %100
  %105 = load i8, ptr %103, align 1, !tbaa !17
  %106 = sext i8 %105 to i32
  %107 = icmp sle i32 %106, 57
  br i1 %107, label %108, label %113

108:                                              ; preds = %104
  br label %117

109:                                              ; preds = %100, %92
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %6, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %7, align 4
  br label %305

113:                                              ; preds = %104, %96
  br label %114

114:                                              ; preds = %113
  %115 = load i32, ptr %8, align 4, !tbaa !9
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %8, align 4, !tbaa !9
  br label %91, !llvm.loop !18

117:                                              ; preds = %108, %91
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  %118 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %118, ptr %9, align 4, !tbaa !9
  br label %119

119:                                              ; preds = %134, %117
  br i1 true, label %120, label %137

120:                                              ; preds = %119
  %121 = load i32, ptr %9, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %122)
          to label %124 unwind label %129

124:                                              ; preds = %120
  %125 = load i8, ptr %123, align 1, !tbaa !17
  %126 = sext i8 %125 to i32
  %127 = icmp eq i32 %126, 45
  br i1 %127, label %128, label %133

128:                                              ; preds = %124
  br label %137

129:                                              ; preds = %120
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %6, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %7, align 4
  br label %304

133:                                              ; preds = %124
  br label %134

134:                                              ; preds = %133
  %135 = load i32, ptr %9, align 4, !tbaa !9
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr %9, align 4, !tbaa !9
  br label %119, !llvm.loop !19

137:                                              ; preds = %128, %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  %138 = load i32, ptr %8, align 4, !tbaa !9
  %139 = sext i32 %138 to i64
  %140 = load i32, ptr %9, align 4, !tbaa !9
  %141 = load i32, ptr %8, align 4, !tbaa !9
  %142 = sub nsw i32 %140, %141
  %143 = sext i32 %142 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %139, i64 noundef %143)
          to label %144 unwind label %160

144:                                              ; preds = %137
  %145 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef null, i32 noundef 10)
          to label %146 unwind label %164

146:                                              ; preds = %144
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  store i32 %145, ptr %10, align 4, !tbaa !9
  %147 = load i32, ptr %9, align 4, !tbaa !9
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %149 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %149, ptr %12, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %174, %146
  br i1 true, label %151, label %177

151:                                              ; preds = %150
  %152 = load i32, ptr %12, align 4, !tbaa !9
  %153 = sext i32 %152 to i64
  %154 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %153)
          to label %155 unwind label %169

155:                                              ; preds = %151
  %156 = load i8, ptr %154, align 1, !tbaa !17
  %157 = sext i8 %156 to i32
  %158 = icmp eq i32 %157, 32
  br i1 %158, label %159, label %173

159:                                              ; preds = %155
  br label %177

160:                                              ; preds = %137
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %6, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %7, align 4
  br label %168

164:                                              ; preds = %144
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %6, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %168

168:                                              ; preds = %164, %160
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %303

169:                                              ; preds = %151
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %6, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %7, align 4
  br label %302

173:                                              ; preds = %155
  br label %174

174:                                              ; preds = %173
  %175 = load i32, ptr %12, align 4, !tbaa !9
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %12, align 4, !tbaa !9
  br label %150, !llvm.loop !20

177:                                              ; preds = %159, %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  %178 = load i32, ptr %9, align 4, !tbaa !9
  %179 = sext i32 %178 to i64
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = load i32, ptr %9, align 4, !tbaa !9
  %182 = sub nsw i32 %180, %181
  %183 = sext i32 %182 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %179, i64 noundef %183)
          to label %184 unwind label %200

184:                                              ; preds = %177
  %185 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef null, i32 noundef 10)
          to label %186 unwind label %204

186:                                              ; preds = %184
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  store i32 %185, ptr %13, align 4, !tbaa !9
  %187 = load i32, ptr %12, align 4, !tbaa !9
  %188 = add nsw i32 %187, 4
  store i32 %188, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %189 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %189, ptr %15, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %214, %186
  br i1 true, label %191, label %217

191:                                              ; preds = %190
  %192 = load i32, ptr %15, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %193)
          to label %195 unwind label %209

195:                                              ; preds = %191
  %196 = load i8, ptr %194, align 1, !tbaa !17
  %197 = sext i8 %196 to i32
  %198 = icmp eq i32 %197, 45
  br i1 %198, label %199, label %213

199:                                              ; preds = %195
  br label %217

200:                                              ; preds = %177
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %6, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %7, align 4
  br label %208

204:                                              ; preds = %184
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %6, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %208

208:                                              ; preds = %204, %200
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  br label %301

209:                                              ; preds = %191
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %6, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %7, align 4
  br label %300

213:                                              ; preds = %195
  br label %214

214:                                              ; preds = %213
  %215 = load i32, ptr %15, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %15, align 4, !tbaa !9
  br label %190, !llvm.loop !21

217:                                              ; preds = %199, %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  %218 = load i32, ptr %12, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = load i32, ptr %15, align 4, !tbaa !9
  %221 = load i32, ptr %12, align 4, !tbaa !9
  %222 = sub nsw i32 %220, %221
  %223 = sext i32 %222 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %219, i64 noundef %223)
          to label %224 unwind label %240

224:                                              ; preds = %217
  %225 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef null, i32 noundef 10)
          to label %226 unwind label %244

226:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  store i32 %225, ptr %16, align 4, !tbaa !9
  %227 = load i32, ptr %15, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  %229 = load i32, ptr %15, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %230, i64 noundef -1)
          to label %231 unwind label %249

231:                                              ; preds = %226
  %232 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef null, i32 noundef 10)
          to label %233 unwind label %253

233:                                              ; preds = %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  store i32 %232, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %234 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %234, ptr %20, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %266, %233
  %236 = load i32, ptr %20, align 4, !tbaa !9
  %237 = load i32, ptr %13, align 4, !tbaa !9
  %238 = icmp sle i32 %236, %237
  br i1 %238, label %258, label %239

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

240:                                              ; preds = %217
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %6, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %7, align 4
  br label %248

244:                                              ; preds = %224
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %6, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %248

248:                                              ; preds = %244, %240
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  br label %299

249:                                              ; preds = %226
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %6, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %7, align 4
  br label %257

253:                                              ; preds = %231
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %6, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %257

257:                                              ; preds = %253, %249
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %298

258:                                              ; preds = %235
  %259 = load i32, ptr %20, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %260
  store i8 1, ptr %261, align 1, !tbaa !22
  %262 = load i32, ptr %20, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %263
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %264, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %265 unwind label %269

265:                                              ; preds = %258
  br label %266

266:                                              ; preds = %265
  %267 = load i32, ptr %20, align 4, !tbaa !9
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr %20, align 4, !tbaa !9
  br label %235, !llvm.loop !24

269:                                              ; preds = %258
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %6, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %298

273:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %274 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %274, ptr %21, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %288, %273
  %276 = load i32, ptr %21, align 4, !tbaa !9
  %277 = load i32, ptr %18, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %280, label %279

279:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %295

280:                                              ; preds = %275
  %281 = load i32, ptr %21, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %282
  store i8 1, ptr %283, align 1, !tbaa !22
  %284 = load i32, ptr %21, align 4, !tbaa !9
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %285
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %286, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %287 unwind label %291

287:                                              ; preds = %280
  br label %288

288:                                              ; preds = %287
  %289 = load i32, ptr %21, align 4, !tbaa !9
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %21, align 4, !tbaa !9
  br label %275, !llvm.loop !25

291:                                              ; preds = %280
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %6, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %298

295:                                              ; preds = %279
  %296 = load i32, ptr %5, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %405

298:                                              ; preds = %291, %269, %257
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %299

299:                                              ; preds = %298, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %300

300:                                              ; preds = %299, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %301

301:                                              ; preds = %300, %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %302

302:                                              ; preds = %301, %169
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %303

303:                                              ; preds = %302, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %304

304:                                              ; preds = %303, %129
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %305

305:                                              ; preds = %304, %109
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %635

306:                                              ; preds = %87
  %307 = load i32, ptr %3, align 4, !tbaa !9
  %308 = icmp eq i32 %307, 1
  br i1 %308, label %312, label %309

309:                                              ; preds = %306
  %310 = load i32, ptr %3, align 4, !tbaa !9
  %311 = icmp eq i32 %310, 2
  br i1 %311, label %312, label %404

312:                                              ; preds = %309, %306
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  store i8 1, ptr %24, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %366, %312
  %314 = load i32, ptr %25, align 4, !tbaa !9
  %315 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  %316 = trunc i64 %315 to i32
  %317 = icmp slt i32 %314, %316
  br i1 %317, label %319, label %318

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

319:                                              ; preds = %313
  %320 = load i32, ptr %25, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %321)
          to label %323 unwind label %343

323:                                              ; preds = %319
  %324 = load i8, ptr %322, align 1, !tbaa !17
  %325 = sext i8 %324 to i32
  %326 = icmp eq i32 %325, 44
  br i1 %326, label %327, label %365

327:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  %328 = load i32, ptr %23, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = load i32, ptr %25, align 4, !tbaa !9
  %331 = load i32, ptr %23, align 4, !tbaa !9
  %332 = sub nsw i32 %330, %331
  %333 = sext i32 %332 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %329, i64 noundef %333)
          to label %334 unwind label %347

334:                                              ; preds = %327
  %335 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef null, i32 noundef 10)
          to label %336 unwind label %351

336:                                              ; preds = %334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  store i32 %335, ptr %26, align 4, !tbaa !9
  %337 = load i32, ptr %26, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %338
  %340 = load i8, ptr %339, align 1, !tbaa !22, !range !26, !noundef !27
  %341 = trunc i8 %340 to i1
  br i1 %341, label %356, label %342

342:                                              ; preds = %336
  store i8 0, ptr %24, align 1, !tbaa !22
  br label %356

343:                                              ; preds = %319
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %6, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %7, align 4
  br label %369

347:                                              ; preds = %327
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %6, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %7, align 4
  br label %355

351:                                              ; preds = %334
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %6, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %355

355:                                              ; preds = %351, %347
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  br label %364

356:                                              ; preds = %342, %336
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %357 unwind label %360

357:                                              ; preds = %356
  %358 = load i32, ptr %25, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %365

360:                                              ; preds = %356
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %6, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %7, align 4
  br label %364

364:                                              ; preds = %360, %355
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %369

365:                                              ; preds = %357, %323
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %25, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %25, align 4, !tbaa !9
  br label %313, !llvm.loop !28

369:                                              ; preds = %364, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %403

370:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %371 = load i32, ptr %23, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %372, i64 noundef -1)
          to label %373 unwind label %382

373:                                              ; preds = %370
  %374 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef null, i32 noundef 10)
          to label %375 unwind label %386

375:                                              ; preds = %373
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  store i32 %374, ptr %28, align 4, !tbaa !9
  %376 = load i32, ptr %28, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %377
  %379 = load i8, ptr %378, align 1, !tbaa !22, !range !26, !noundef !27
  %380 = trunc i8 %379 to i1
  br i1 %380, label %391, label %381

381:                                              ; preds = %375
  store i8 0, ptr %24, align 1, !tbaa !22
  br label %391

382:                                              ; preds = %370
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %6, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %7, align 4
  br label %390

386:                                              ; preds = %373
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %6, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %390

390:                                              ; preds = %386, %382
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  br label %402

391:                                              ; preds = %381, %375
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %392 unwind label %397

392:                                              ; preds = %391
  %393 = load i8, ptr %24, align 1, !tbaa !22, !range !26, !noundef !27
  %394 = trunc i8 %393 to i1
  br i1 %394, label %395, label %401

395:                                              ; preds = %392
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) @v, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %396 unwind label %397

396:                                              ; preds = %395
  br label %401

397:                                              ; preds = %395, %391
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %6, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %7, align 4
  br label %402

401:                                              ; preds = %396, %392
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %404

402:                                              ; preds = %397, %390
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %403

403:                                              ; preds = %402, %369
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %635

404:                                              ; preds = %401, %309
  br label %405

405:                                              ; preds = %404, %295
  br label %62, !llvm.loop !15

406:                                              ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %407 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef 0) #7
  %408 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %407) #7
  %409 = trunc i64 %408 to i32
  store i32 %409, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %410 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @v) #7
  %411 = trunc i64 %410 to i32
  store i32 %411, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %538, %406
  %413 = load i32, ptr %32, align 4, !tbaa !9
  %414 = load i32, ptr %30, align 4, !tbaa !9
  %415 = icmp slt i32 %413, %414
  br i1 %415, label %417, label %416

416:                                              ; preds = %412
  store i32 25, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %542

417:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %432, %417
  %419 = load i32, ptr %34, align 4, !tbaa !9
  %420 = icmp slt i32 %419, 2000
  br i1 %420, label %422, label %421

421:                                              ; preds = %418
  store i32 28, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %439

422:                                              ; preds = %418
  %423 = load i32, ptr %32, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %424
  %426 = invoke { ptr, i8 } @_ZNSt3setIiSt4lessIiESaIiEE6insertERKi(ptr noundef nonnull align 8 dereferenceable(48) %425, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %427 unwind label %435

427:                                              ; preds = %422
  %428 = getelementptr inbounds { ptr, i8 }, ptr %35, i32 0, i32 0
  %429 = extractvalue { ptr, i8 } %426, 0
  store ptr %429, ptr %428, align 8
  %430 = getelementptr inbounds { ptr, i8 }, ptr %35, i32 0, i32 1
  %431 = extractvalue { ptr, i8 } %426, 1
  store i8 %431, ptr %430, align 8
  br label %432

432:                                              ; preds = %427
  %433 = load i32, ptr %34, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %34, align 4, !tbaa !9
  br label %418, !llvm.loop !29

435:                                              ; preds = %422
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %6, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %541

439:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %532, %439
  %441 = load i32, ptr %36, align 4, !tbaa !9
  %442 = load i32, ptr %31, align 4, !tbaa !9
  %443 = icmp slt i32 %441, %442
  br i1 %443, label %445, label %444

444:                                              ; preds = %440
  store i32 31, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %537

445:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 48, ptr %37) #7
  call void @_ZNSt3setIiSt4lessIiESaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %446 = load i32, ptr %36, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef %447) #7
  %449 = load i32, ptr %32, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %450) #7
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %453
  store ptr %454, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %455 = load ptr, ptr %38, align 8, !tbaa !5
  %456 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %455) #7
  %457 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %39, i32 0, i32 0
  store ptr %456, ptr %457, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %458 = load ptr, ptr %38, align 8, !tbaa !5
  %459 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %458) #7
  %460 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %40, i32 0, i32 0
  store ptr %459, ptr %460, align 8
  br label %461

461:                                              ; preds = %473, %445
  %462 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %462, label %464, label %463

463:                                              ; preds = %461
  store i32 34, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %479

464:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %465 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  %466 = load i32, ptr %465, align 4, !tbaa !9
  store i32 %466, ptr %41, align 4, !tbaa !9
  %467 = invoke { ptr, i8 } @_ZNSt3setIiSt4lessIiESaIiEE6insertERKi(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %468 unwind label %475

468:                                              ; preds = %464
  %469 = getelementptr inbounds { ptr, i8 }, ptr %42, i32 0, i32 0
  %470 = extractvalue { ptr, i8 } %467, 0
  store ptr %470, ptr %469, align 8
  %471 = getelementptr inbounds { ptr, i8 }, ptr %42, i32 0, i32 1
  %472 = extractvalue { ptr, i8 } %467, 1
  store i8 %472, ptr %471, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %473

473:                                              ; preds = %468
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %461

475:                                              ; preds = %464
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %6, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %536

479:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %480 = load i32, ptr %32, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %481
  store ptr %482, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %483 = load ptr, ptr %44, align 8, !tbaa !5
  %484 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %483) #7
  %485 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %45, i32 0, i32 0
  store ptr %484, ptr %485, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %486 = load ptr, ptr %44, align 8, !tbaa !5
  %487 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %486) #7
  %488 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %46, i32 0, i32 0
  store ptr %487, ptr %488, align 8
  br label %489

489:                                              ; preds = %505, %479
  %490 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIiES2_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br i1 %490, label %492, label %491

491:                                              ; preds = %489
  store i32 36, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %507

492:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %493 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt23_Rb_tree_const_iteratorIiEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  %494 = load i32, ptr %493, align 4, !tbaa !9
  store i32 %494, ptr %47, align 4, !tbaa !9
  %495 = invoke noundef i64 @_ZNKSt3setIiSt4lessIiESaIiEE5countERKi(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %496 unwind label %500

496:                                              ; preds = %492
  %497 = icmp ne i64 %495, 0
  br i1 %497, label %504, label %498

498:                                              ; preds = %496
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %499 unwind label %500

499:                                              ; preds = %498
  br label %504

500:                                              ; preds = %498, %492
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %6, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %535

504:                                              ; preds = %499, %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %505

505:                                              ; preds = %504
  %506 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIiEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br label %489

507:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  store ptr %43, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %508 = load ptr, ptr %48, align 8, !tbaa !5
  %509 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %508) #7
  %510 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %49, i32 0, i32 0
  store ptr %509, ptr %510, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %511 = load ptr, ptr %48, align 8, !tbaa !5
  %512 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %511) #7
  %513 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %512, ptr %513, align 8
  br label %514

514:                                              ; preds = %525, %507
  %515 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br i1 %515, label %517, label %516

516:                                              ; preds = %514
  store i32 38, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %531

517:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  %519 = load i32, ptr %518, align 4, !tbaa !9
  store i32 %519, ptr %51, align 4, !tbaa !9
  %520 = load i32, ptr %32, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %521
  %523 = invoke noundef i64 @_ZNSt3setIiSt4lessIiESaIiEE5eraseERKi(ptr noundef nonnull align 8 dereferenceable(48) %522, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %524 unwind label %527

524:                                              ; preds = %517
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %525

525:                                              ; preds = %524
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %514

527:                                              ; preds = %517
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %6, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %535

531:                                              ; preds = %516
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  call void @_ZNSt3setIiSt4lessIiESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %37) #7
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr %36, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %36, align 4, !tbaa !9
  br label %440, !llvm.loop !30

535:                                              ; preds = %527, %500
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #7
  br label %536

536:                                              ; preds = %535, %475
  call void @_ZNSt3setIiSt4lessIiESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %541

537:                                              ; preds = %444
  br label %538

538:                                              ; preds = %537
  %539 = load i32, ptr %32, align 4, !tbaa !9
  %540 = add nsw i32 %539, 1
  store i32 %540, ptr %32, align 4, !tbaa !9
  br label %412, !llvm.loop !31

541:                                              ; preds = %536, %435
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %634

542:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 200, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %603, %542
  %544 = load i32, ptr %53, align 4, !tbaa !9
  %545 = load i32, ptr %30, align 4, !tbaa !9
  %546 = icmp slt i32 %544, %545
  br i1 %546, label %548, label %547

547:                                              ; preds = %543
  store i32 40, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  br label %606

548:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  store i32 0, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  store i32 0, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %549

549:                                              ; preds = %571, %548
  %550 = load i32, ptr %56, align 4, !tbaa !9
  %551 = load i32, ptr %30, align 4, !tbaa !9
  %552 = icmp slt i32 %550, %551
  br i1 %552, label %554, label %553

553:                                              ; preds = %549
  store i32 43, ptr %33, align 4
  br label %574

554:                                              ; preds = %549
  %555 = load i32, ptr %56, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %556
  %558 = call noundef i64 @_ZNKSt3setIiSt4lessIiESaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %557) #7
  %559 = trunc i64 %558 to i32
  %560 = icmp eq i32 %559, 1
  br i1 %560, label %561, label %570

561:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %562 = load i32, ptr %56, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %563
  %565 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %564) #7
  %566 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %57, i32 0, i32 0
  store ptr %565, ptr %566, align 8
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt23_Rb_tree_const_iteratorIiEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  %568 = load i32, ptr %567, align 4, !tbaa !9
  store i32 %568, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  %569 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %569, ptr %55, align 4, !tbaa !9
  store i32 43, ptr %33, align 4
  br label %574

570:                                              ; preds = %554
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %56, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %56, align 4, !tbaa !9
  br label %549, !llvm.loop !32

574:                                              ; preds = %561, %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  br label %575

575:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %576

576:                                              ; preds = %587, %575
  %577 = load i32, ptr %58, align 4, !tbaa !9
  %578 = load i32, ptr %30, align 4, !tbaa !9
  %579 = icmp slt i32 %577, %578
  br i1 %579, label %581, label %580

580:                                              ; preds = %576
  store i32 46, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  br label %594

581:                                              ; preds = %576
  %582 = load i32, ptr %58, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %583
  %585 = invoke noundef i64 @_ZNSt3setIiSt4lessIiESaIiEE5eraseERKi(ptr noundef nonnull align 8 dereferenceable(48) %584, ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %586 unwind label %590

586:                                              ; preds = %581
  br label %587

587:                                              ; preds = %586
  %588 = load i32, ptr %58, align 4, !tbaa !9
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %58, align 4, !tbaa !9
  br label %576, !llvm.loop !33

590:                                              ; preds = %581
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %6, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  br label %633

594:                                              ; preds = %580
  %595 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef 0) #7
  %596 = load i32, ptr %55, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %595, i64 noundef %597) #7
  %599 = load i32, ptr %598, align 4, !tbaa !9
  %600 = load i32, ptr %54, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [50 x i32], ptr %52, i64 0, i64 %601
  store i32 %599, ptr %602, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  br label %603

603:                                              ; preds = %594
  %604 = load i32, ptr %53, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %53, align 4, !tbaa !9
  br label %543, !llvm.loop !34

606:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %607

607:                                              ; preds = %619, %606
  %608 = load i32, ptr %59, align 4, !tbaa !9
  %609 = icmp slt i32 %608, 6
  br i1 %609, label %611, label %610

610:                                              ; preds = %607
  store i32 49, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %622

611:                                              ; preds = %607
  %612 = load i32, ptr %59, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds [50 x i32], ptr %52, i64 0, i64 %613
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = load i64, ptr %4, align 8, !tbaa !11
  %618 = mul nsw i64 %617, %616
  store i64 %618, ptr %4, align 8, !tbaa !11
  br label %619

619:                                              ; preds = %611
  %620 = load i32, ptr %59, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  store i32 %621, ptr %59, align 4, !tbaa !9
  br label %607, !llvm.loop !35

622:                                              ; preds = %610
  %623 = load i64, ptr %4, align 8, !tbaa !11
  %624 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEx(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i64 noundef %623)
          to label %625 unwind label %629

625:                                              ; preds = %622
  %626 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %624, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %627 unwind label %629

627:                                              ; preds = %625
  call void @llvm.lifetime.end.p0(i64 200, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %2) #7
  %628 = load i32, ptr %1, align 4
  ret i32 %628

629:                                              ; preds = %625, %622
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %6, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %7, align 4
  br label %633

633:                                              ; preds = %629, %590
  call void @llvm.lifetime.end.p0(i64 200, ptr %52) #7
  br label %634

634:                                              ; preds = %633, %541
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  br label %635

635:                                              ; preds = %634, %403, %305, %75
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %2) #7
  br label %636

636:                                              ; preds = %635
  %637 = load ptr, ptr %6, align 8
  %638 = load i32, ptr %7, align 4
  %639 = insertvalue { ptr, i32 } poison, ptr %637, 0
  %640 = insertvalue { ptr, i32 } %639, i32 %638, 1
  resume { ptr, i32 } %640
}

declare ptr @freopen(ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #4

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNKSt3setIiSt4lessIiESaIiEE5countERKi(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(4)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNSt3setIiSt4lessIiESaIiEE5eraseERKi(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(4)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

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


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, int, std::_Identity<int>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"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::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }

@have = external dso_local local_unnamed_addr global [2000 x i8], align 16
@h = external dso_local global [2000 x %"class.std::vector"], align 16
@via = external dso_local global [2000 x %"class.std::set"], align 16
@v = external dso_local global %"class.std::vector.3", align 8
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@stdin = external local_unnamed_addr global ptr, align 8
@_ZSt3cin = external global %"class.std::basic_istream", align 8
@.str.6 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [16 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

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

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

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
.outer.split.us.preheader.critedge:
  %0 = alloca %"class.std::__cxx11::basic_string", align 8
  %1 = alloca i32, align 4
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::set", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %18 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca i32, align 4
  %23 = alloca [50 x i32], align 16
  %24 = alloca i32, align 4
  %25 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %26 = load ptr, ptr @stdin, align 8, !tbaa !5
  %27 = tail call ptr @freopen(ptr noundef nonnull @.str, ptr noundef nonnull @.str.5, ptr noundef %26)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %0) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #7
  store i32 0, ptr %1, align 4, !tbaa !9
  br label %.outer.split.us

.outer.split.us:                                  ; preds = %.outer.split.us.backedge, %.outer.split.us.preheader.critedge
  %28 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %29 unwind label %.split.us

29:                                               ; preds = %.outer.split.us
  %30 = load ptr, ptr %28, align 8, !tbaa !11
  %31 = getelementptr i8, ptr %30, i64 -24
  %32 = load i64, ptr %31, align 8
  %33 = getelementptr inbounds i8, ptr %28, i64 %32
  %34 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %33)
          to label %35 unwind label %.split.us

35:                                               ; preds = %29
  br i1 %34, label %36, label %.split190.us

36:                                               ; preds = %35
  %37 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.6)
  br i1 %37, label %.outer.split.us.backedge, label %38

38:                                               ; preds = %36
  %39 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.7)
  br i1 %39, label %.outer.split.preheader, label %40, !llvm.loop !13

.outer.split.preheader:                           ; preds = %40, %38
  br label %.outer.split

40:                                               ; preds = %38
  %41 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.8)
  br i1 %41, label %.outer.split.preheader, label %.preheader168.us, !llvm.loop !13

.preheader168.us:                                 ; preds = %40, %49
  %indvars.iv283 = phi i32 [ %indvars.iv.next284, %49 ], [ 5, %40 ]
  %indvars.iv276 = phi i64 [ %indvars.iv.next277, %49 ], [ 1, %40 ]
  %indvars.iv270 = phi i64 [ %indvars.iv.next271, %49 ], [ 0, %40 ]
  %42 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv270)
  %43 = load i8, ptr %42, align 1, !tbaa !15
  %44 = icmp sgt i8 %43, 47
  br i1 %44, label %45, label %49

45:                                               ; preds = %.preheader168.us
  %46 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv270)
  %47 = load i8, ptr %46, align 1, !tbaa !15
  %48 = icmp slt i8 %47, 58
  br i1 %48, label %.preheader167.us, label %49

49:                                               ; preds = %45, %.preheader168.us
  %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1
  %indvars.iv.next277 = add nuw i64 %indvars.iv276, 1
  %indvars.iv.next284 = add i32 %indvars.iv283, 1
  br label %.preheader168.us, !llvm.loop !16

.preheader167.us:                                 ; preds = %45, %.preheader167.us
  %indvars.iv285 = phi i32 [ %indvars.iv.next286, %.preheader167.us ], [ %indvars.iv283, %45 ]
  %indvars.iv278 = phi i64 [ %indvars.iv.next279, %.preheader167.us ], [ %indvars.iv276, %45 ]
  %indvars.iv273 = phi i64 [ %indvars.iv.next274, %.preheader167.us ], [ %indvars.iv270, %45 ]
  %50 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv273)
  %51 = load i8, ptr %50, align 1, !tbaa !15
  %52 = icmp eq i8 %51, 45
  %indvars.iv.next274 = add nuw nsw i64 %indvars.iv273, 1
  %indvars.iv.next279 = add i64 %indvars.iv278, 1
  %indvars.iv.next286 = add i32 %indvars.iv285, 1
  br i1 %52, label %53, label %.preheader167.us, !llvm.loop !17

53:                                               ; preds = %.preheader167.us
  %54 = trunc nuw nsw i64 %indvars.iv273 to i32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #7
  %55 = sub nsw i64 %indvars.iv273, %indvars.iv270
  %sext339 = shl i64 %55, 32
  %56 = ashr exact i64 %sext339, 32
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv270, i64 noundef %56)
          to label %57 unwind label %.split193.us

57:                                               ; preds = %53
  %58 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef null, i32 noundef 10)
          to label %59 unwind label %.split196.us

59:                                               ; preds = %57
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  br label %60

60:                                               ; preds = %60, %59
  %indvars.iv287 = phi i32 [ %indvars.iv.next288, %60 ], [ %indvars.iv285, %59 ]
  %indvars.iv280 = phi i64 [ %indvars.iv.next281, %60 ], [ %indvars.iv278, %59 ]
  %61 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv280)
  %62 = load i8, ptr %61, align 1, !tbaa !15
  %63 = icmp eq i8 %62, 32
  %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1
  %indvars.iv.next288 = add i32 %indvars.iv287, 1
  br i1 %63, label %64, label %60, !llvm.loop !18

64:                                               ; preds = %60
  %65 = add nuw nsw i32 %54, 1
  %66 = trunc nuw i64 %indvars.iv280 to i32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  %67 = zext nneg i32 %65 to i64
  %68 = sub nsw i32 %66, %65
  %69 = sext i32 %68 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %67, i64 noundef %69)
          to label %70 unwind label %.split199.us

70:                                               ; preds = %64
  %71 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef null, i32 noundef 10)
          to label %72 unwind label %.split202.us

72:                                               ; preds = %70
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  %73 = zext i32 %indvars.iv287 to i64
  br label %74

74:                                               ; preds = %74, %72
  %indvars.iv289 = phi i64 [ %indvars.iv.next290, %74 ], [ %73, %72 ]
  %75 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv289)
  %76 = load i8, ptr %75, align 1, !tbaa !15
  %77 = icmp eq i8 %76, 45
  %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, 1
  br i1 %77, label %78, label %74, !llvm.loop !19

78:                                               ; preds = %74
  %79 = add nuw nsw i32 %66, 4
  %80 = trunc nuw i64 %indvars.iv289 to i32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  %81 = zext nneg i32 %79 to i64
  %82 = sub nsw i32 %80, %79
  %83 = sext i32 %82 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %81, i64 noundef %83)
          to label %84 unwind label %.split205.us

84:                                               ; preds = %78
  %85 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef null, i32 noundef 10)
          to label %86 unwind label %.split208.us

86:                                               ; preds = %84
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  %87 = shl i64 %indvars.iv289, 32
  %sext340 = add i64 %87, 4294967296
  %88 = ashr exact i64 %sext340, 32
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %88, i64 noundef -1)
          to label %89 unwind label %.split211.us

89:                                               ; preds = %86
  %90 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef null, i32 noundef 10)
          to label %91 unwind label %.split214.us

91:                                               ; preds = %89
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  %.not157181.us = icmp sgt i32 %58, %71
  br i1 %.not157181.us, label %.preheader166.us, label %.lr.ph184.us.preheader

.lr.ph184.us.preheader:                           ; preds = %91
  %92 = sext i32 %58 to i64
  %93 = add i32 %71, 1
  br label %.lr.ph184.us

.lr.ph184.us:                                     ; preds = %.lr.ph184.us.preheader, %96
  %indvars.iv292 = phi i64 [ %92, %.lr.ph184.us.preheader ], [ %indvars.iv.next293, %96 ]
  %94 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %indvars.iv292
  store i8 1, ptr %94, align 1, !tbaa !20
  %95 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %indvars.iv292
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 4 dereferenceable(4) %1)
          to label %96 unwind label %.split217.us

96:                                               ; preds = %.lr.ph184.us
  %indvars.iv.next293 = add nsw i64 %indvars.iv292, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next293 to i32
  %exitcond.not = icmp eq i32 %93, %lftr.wideiv
  br i1 %exitcond.not, label %.preheader166.us, label %.lr.ph184.us, !llvm.loop !22

.lr.ph187.us:                                     ; preds = %.lr.ph187.us.preheader, %99
  %indvars.iv295 = phi i64 [ %102, %.lr.ph187.us.preheader ], [ %indvars.iv.next296, %99 ]
  %97 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %indvars.iv295
  store i8 1, ptr %97, align 1, !tbaa !20
  %98 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %indvars.iv295
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 4 dereferenceable(4) %1)
          to label %99 unwind label %.split220.us

99:                                               ; preds = %.lr.ph187.us
  %indvars.iv.next296 = add nsw i64 %indvars.iv295, 1
  %lftr.wideiv298 = trunc i64 %indvars.iv.next296 to i32
  %exitcond299.not = icmp eq i32 %103, %lftr.wideiv298
  br i1 %exitcond299.not, label %._crit_edge188.us, label %.lr.ph187.us, !llvm.loop !23

._crit_edge188.us:                                ; preds = %99, %.preheader166.us
  %100 = load i32, ptr %1, align 4, !tbaa !9
  %101 = add nsw i32 %100, 1
  store i32 %101, ptr %1, align 4, !tbaa !9
  br label %.outer.split.us.backedge

.outer.split.us.backedge:                         ; preds = %._crit_edge188.us, %36
  br label %.outer.split.us, !llvm.loop !13

.preheader166.us:                                 ; preds = %96, %91
  %.not158185.us = icmp sgt i32 %85, %90
  br i1 %.not158185.us, label %._crit_edge188.us, label %.lr.ph187.us.preheader

.lr.ph187.us.preheader:                           ; preds = %.preheader166.us
  %102 = sext i32 %85 to i64
  %103 = add i32 %90, 1
  br label %.lr.ph187.us

.split.us:                                        ; preds = %29, %.outer.split.us
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %295

.split193.us:                                     ; preds = %53
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %134

.split196.us:                                     ; preds = %57
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  br label %134

.split199.us:                                     ; preds = %64
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %135

.split202.us:                                     ; preds = %70
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %135

.split205.us:                                     ; preds = %78
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %136

.split208.us:                                     ; preds = %84
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %136

.split211.us:                                     ; preds = %86
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %137

.split214.us:                                     ; preds = %89
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %137

.split217.us:                                     ; preds = %.lr.ph184.us
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %295

.split220.us:                                     ; preds = %.lr.ph187.us
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %295

.outer.split:                                     ; preds = %.outer.split.backedge, %.outer.split.preheader
  %115 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %116 unwind label %.split

116:                                              ; preds = %.outer.split
  %117 = load ptr, ptr %115, align 8, !tbaa !11
  %118 = getelementptr i8, ptr %117, i64 -24
  %119 = load i64, ptr %118, align 8
  %120 = getelementptr inbounds i8, ptr %115, i64 %119
  %121 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %120)
          to label %122 unwind label %.split

122:                                              ; preds = %116
  br i1 %121, label %123, label %.split190.us

123:                                              ; preds = %122
  %124 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.6)
  br i1 %124, label %.outer.split.backedge, label %126

.split:                                           ; preds = %116, %.outer.split
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %295

126:                                              ; preds = %123
  %127 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.7)
  br i1 %127, label %.outer.split.backedge, label %128

128:                                              ; preds = %126
  %129 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.8)
  br i1 %129, label %.outer.split.backedge, label %130

.outer.split.backedge:                            ; preds = %128, %126, %186, %123
  br label %.outer.split, !llvm.loop !13

130:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  %131 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  %132 = trunc i64 %131 to i32
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %.lr.ph, label %._crit_edge

134:                                              ; preds = %.split196.us, %.split193.us
  %.pn149 = phi { ptr, i32 } [ %106, %.split196.us ], [ %105, %.split193.us ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  br label %295

135:                                              ; preds = %.split202.us, %.split199.us
  %.pn151 = phi { ptr, i32 } [ %108, %.split202.us ], [ %107, %.split199.us ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %295

136:                                              ; preds = %.split208.us, %.split205.us
  %.pn153 = phi { ptr, i32 } [ %110, %.split208.us ], [ %109, %.split205.us ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %295

137:                                              ; preds = %.split214.us, %.split211.us
  %.pn155 = phi { ptr, i32 } [ %112, %.split214.us ], [ %111, %.split211.us ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %295

._crit_edge:                                      ; preds = %165, %130
  %.0128.lcssa = phi i32 [ 0, %130 ], [ %.1129, %165 ]
  %.0124.lcssa = phi i1 [ true, %130 ], [ %.2126, %165 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  %138 = sext i32 %.0128.lcssa to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %138, i64 noundef -1)
          to label %169 unwind label %175

.lr.ph:                                           ; preds = %130, %165
  %indvars.iv = phi i64 [ %indvars.iv.next.pre-phi, %165 ], [ 0, %130 ]
  %.0124178 = phi i1 [ %.2126, %165 ], [ true, %130 ]
  %.0128177 = phi i32 [ %.1129, %165 ], [ 0, %130 ]
  %139 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %indvars.iv)
  %140 = load i8, ptr %139, align 1, !tbaa !15
  %141 = icmp eq i8 %140, 44
  br i1 %141, label %142, label %.lr.ph._crit_edge

.lr.ph._crit_edge:                                ; preds = %.lr.ph
  %.pre338 = add nuw nsw i64 %indvars.iv, 1
  br label %165

142:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  %143 = sext i32 %.0128177 to i64
  %144 = trunc nuw nsw i64 %indvars.iv to i32
  %145 = sub nsw i32 %144, %.0128177
  %146 = sext i32 %145 to i64
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %143, i64 noundef %146)
          to label %147 unwind label %153

147:                                              ; preds = %142
  %148 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef null, i32 noundef 10)
          to label %149 unwind label %155

149:                                              ; preds = %147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  store i32 %148, ptr %7, align 4, !tbaa !9
  %150 = sext i32 %148 to i64
  %151 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %150
  %152 = load i8, ptr %151, align 1, !tbaa !20, !range !24, !noundef !25
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %158 unwind label %162

153:                                              ; preds = %142
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %147
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %157

157:                                              ; preds = %155, %153
  %.pn144 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %164

158:                                              ; preds = %149
  %159 = trunc nuw i8 %152 to i1
  %spec.select = select i1 %159, i1 %.0124178, i1 false
  %160 = add nuw nsw i64 %indvars.iv, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  %161 = trunc nuw nsw i64 %160 to i32
  br label %165

162:                                              ; preds = %149
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %164

164:                                              ; preds = %162, %157
  %.pn146 = phi { ptr, i32 } [ %163, %162 ], [ %.pn144, %157 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %188

165:                                              ; preds = %.lr.ph._crit_edge, %158
  %indvars.iv.next.pre-phi = phi i64 [ %.pre338, %.lr.ph._crit_edge ], [ %160, %158 ]
  %.1129 = phi i32 [ %.0128177, %.lr.ph._crit_edge ], [ %161, %158 ]
  %.2126 = phi i1 [ %.0124178, %.lr.ph._crit_edge ], [ %spec.select, %158 ]
  %166 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  %sext = shl i64 %166, 32
  %167 = ashr exact i64 %sext, 32
  %168 = icmp slt i64 %indvars.iv.next.pre-phi, %167
  br i1 %168, label %.lr.ph, label %._crit_edge, !llvm.loop !26

169:                                              ; preds = %._crit_edge
  %170 = invoke noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef null, i32 noundef 10)
          to label %171 unwind label %177

171:                                              ; preds = %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  store i32 %170, ptr %9, align 4, !tbaa !9
  %172 = sext i32 %170 to i64
  %173 = getelementptr inbounds [2000 x i8], ptr @have, i64 0, i64 %172
  %174 = load i8, ptr %173, align 1, !tbaa !20, !range !24, !noundef !25
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %180 unwind label %184

175:                                              ; preds = %._crit_edge
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %179

177:                                              ; preds = %169
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %179

179:                                              ; preds = %177, %175
  %.pn140 = phi { ptr, i32 } [ %178, %177 ], [ %176, %175 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %187

180:                                              ; preds = %171
  %181 = trunc nuw i8 %174 to i1
  %182 = select i1 %181, i1 %.0124.lcssa, i1 false
  br i1 %182, label %183, label %186

183:                                              ; preds = %180
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) @v, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %186 unwind label %184

184:                                              ; preds = %183, %171
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %187

186:                                              ; preds = %183, %180
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  br label %.outer.split.backedge

187:                                              ; preds = %184, %179
  %.pn142 = phi { ptr, i32 } [ %185, %184 ], [ %.pn140, %179 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %188

188:                                              ; preds = %187, %164
  %.pn146.pn = phi { ptr, i32 } [ %.pn146, %164 ], [ %.pn142, %187 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  br label %295

.split190.us:                                     ; preds = %35, %122
  %189 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef 0) #7
  %190 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #7
  %191 = trunc i64 %190 to i32
  %192 = call noundef i64 @_ZNKSt6vectorIS_IiSaIiEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @v) #7
  %193 = icmp sgt i32 %191, 0
  br i1 %193, label %.lr.ph237, label %._crit_edge238.thread

._crit_edge238.thread:                            ; preds = %.split190.us
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %23) #7
  br label %.preheader

.lr.ph237:                                        ; preds = %.split190.us
  %194 = trunc i64 %192 to i32
  %195 = icmp sgt i32 %194, 0
  %wide.trip.count312 = and i64 %190, 2147483647
  br i1 %195, label %.lr.ph237.split.us.preheader, label %.lr.ph237.split

.lr.ph237.split.us.preheader:                     ; preds = %.lr.ph237
  %wide.trip.count307 = and i64 %192, 2147483647
  br label %.lr.ph237.split.us

.lr.ph237.split.us:                               ; preds = %.lr.ph237.split.us.preheader, %._crit_edge234.us
  %indvars.iv309 = phi i64 [ 0, %.lr.ph237.split.us.preheader ], [ %indvars.iv.next310, %._crit_edge234.us ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %196 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %indvars.iv309
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %232

.lr.ph233.us:                                     ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %197

197:                                              ; preds = %.lr.ph233.us, %._crit_edge230.us
  %indvars.iv304 = phi i64 [ 0, %.lr.ph233.us ], [ %indvars.iv.next305, %._crit_edge230.us ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #7
  call void @_ZNSt3setIiSt4lessIiESaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  %198 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef %indvars.iv304) #7
  %199 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %198, i64 noundef %indvars.iv309) #7
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [2000 x %"class.std::vector"], ptr @h, i64 0, i64 %201
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %203 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %202) #7
  store ptr %203, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %204 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %202) #7
  store ptr %204, ptr %14, align 8
  %205 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br i1 %205, label %.lr.ph223.us, label %._crit_edge224.us

._crit_edge224.us:                                ; preds = %229, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %206 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %196) #7
  store ptr %206, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %207 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %196) #7
  store ptr %207, ptr %18, align 8
  %208 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIiES2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br i1 %208, label %.lr.ph226.us, label %._crit_edge227.us

._crit_edge227.us:                                ; preds = %223, %._crit_edge224.us
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %209 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  store ptr %209, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %210 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  store ptr %210, ptr %21, align 8
  %211 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %211, label %.lr.ph229.us, label %._crit_edge230.us

._crit_edge230.us:                                ; preds = %215, %._crit_edge227.us
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZNSt3setIiSt4lessIiESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #7
  %indvars.iv.next305 = add nuw nsw i64 %indvars.iv304, 1
  %exitcond308.not = icmp eq i64 %indvars.iv.next305, %wide.trip.count307
  br i1 %exitcond308.not, label %._crit_edge234.us, label %197, !llvm.loop !27

.lr.ph229.us:                                     ; preds = %._crit_edge227.us, %215
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %213 = load i32, ptr %212, align 4, !tbaa !9
  store i32 %213, ptr %22, align 4, !tbaa !9
  %214 = invoke noundef i64 @_ZNSt3setIiSt4lessIiESaIiEE5eraseERKi(ptr noundef nonnull align 8 dereferenceable(48) %196, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %215 unwind label %.split240.us

215:                                              ; preds = %.lr.ph229.us
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %217 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br i1 %217, label %.lr.ph229.us, label %._crit_edge230.us

.lr.ph226.us:                                     ; preds = %._crit_edge224.us, %223
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt23_Rb_tree_const_iteratorIiEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %19, align 4, !tbaa !9
  %220 = invoke noundef i64 @_ZNKSt3setIiSt4lessIiESaIiEE5countERKi(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %221 unwind label %.split243.us

221:                                              ; preds = %.lr.ph226.us
  %.not.us = icmp eq i64 %220, 0
  br i1 %.not.us, label %222, label %223

222:                                              ; preds = %221
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %223 unwind label %.split243.us

223:                                              ; preds = %222, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIiEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  %225 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIiES2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  br i1 %225, label %.lr.ph226.us, label %._crit_edge227.us

.lr.ph223.us:                                     ; preds = %197, %229
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  %227 = load i32, ptr %226, align 4, !tbaa !9
  store i32 %227, ptr %15, align 4, !tbaa !9
  %228 = invoke { ptr, i8 } @_ZNSt3setIiSt4lessIiESaIiEE6insertERKi(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %229 unwind label %.split246.us

229:                                              ; preds = %.lr.ph223.us
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  %231 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br i1 %231, label %.lr.ph223.us, label %._crit_edge224.us

232:                                              ; preds = %234, %.lr.ph237.split.us
  %233 = invoke { ptr, i8 } @_ZNSt3setIiSt4lessIiESaIiEE6insertERKi(ptr noundef nonnull align 8 dereferenceable(48) %196, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %234 unwind label %.split249.us

234:                                              ; preds = %232
  %235 = load i32, ptr %11, align 4, !tbaa !9
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %11, align 4, !tbaa !9
  %237 = icmp slt i32 %235, 1999
  br i1 %237, label %232, label %.lr.ph233.us, !llvm.loop !28

._crit_edge234.us:                                ; preds = %._crit_edge230.us
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %exitcond313.not = icmp eq i64 %indvars.iv.next310, %wide.trip.count312
  br i1 %exitcond313.not, label %._crit_edge238, label %.lr.ph237.split.us, !llvm.loop !29

.split240.us:                                     ; preds = %.lr.ph229.us
  %238 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %252

.split243.us:                                     ; preds = %222, %.lr.ph226.us
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %252

.split246.us:                                     ; preds = %.lr.ph223.us
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br label %253

.split249.us:                                     ; preds = %232
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %251

._crit_edge238:                                   ; preds = %243, %._crit_edge234.us
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %23) #7
  br i1 %193, label %.lr.ph260, label %.preheader

.lr.ph260:                                        ; preds = %._crit_edge238
  %wide.trip.count317 = and i64 %190, 2147483647
  %wide.trip.count322 = and i64 %190, 2147483647
  br label %.lr.ph253.preheader

.lr.ph237.split:                                  ; preds = %.lr.ph237, %243
  %indvars.iv300 = phi i64 [ %indvars.iv.next301, %243 ], [ 0, %.lr.ph237 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %242 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %indvars.iv300
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %244

243:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  %indvars.iv.next301 = add nuw nsw i64 %indvars.iv300, 1
  %exitcond303.not = icmp eq i64 %indvars.iv.next301, %wide.trip.count312
  br i1 %exitcond303.not, label %._crit_edge238, label %.lr.ph237.split, !llvm.loop !29

244:                                              ; preds = %.lr.ph237.split, %246
  %245 = invoke { ptr, i8 } @_ZNSt3setIiSt4lessIiESaIiEE6insertERKi(ptr noundef nonnull align 8 dereferenceable(48) %242, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %246 unwind label %.split249

246:                                              ; preds = %244
  %247 = load i32, ptr %11, align 4, !tbaa !9
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %11, align 4, !tbaa !9
  %249 = icmp slt i32 %247, 1999
  br i1 %249, label %244, label %243, !llvm.loop !28

.split249:                                        ; preds = %244
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %251

251:                                              ; preds = %.split249.us, %.split249
  %.us-phi250 = phi { ptr, i32 } [ %250, %.split249 ], [ %241, %.split249.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %295

252:                                              ; preds = %.split240.us, %.split243.us
  %.pn133 = phi { ptr, i32 } [ %239, %.split243.us ], [ %238, %.split240.us ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  br label %253

253:                                              ; preds = %252, %.split246.us
  %.pn135 = phi { ptr, i32 } [ %240, %.split246.us ], [ %.pn133, %252 ]
  call void @_ZNSt3setIiSt4lessIiESaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #7
  br label %295

.preheader.loopexit:                              ; preds = %._crit_edge257
  %.pre = load i32, ptr %23, align 16, !tbaa !9
  %.phi.trans.insert = getelementptr inbounds i8, ptr %23, i64 4
  %.pre329 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !9
  %.phi.trans.insert330 = getelementptr inbounds i8, ptr %23, i64 8
  %.pre331 = load i32, ptr %.phi.trans.insert330, align 8, !tbaa !9
  %.phi.trans.insert332 = getelementptr inbounds i8, ptr %23, i64 12
  %.pre333 = load i32, ptr %.phi.trans.insert332, align 4, !tbaa !9
  %.phi.trans.insert334 = getelementptr inbounds i8, ptr %23, i64 16
  %.pre335 = load i32, ptr %.phi.trans.insert334, align 16, !tbaa !9
  %.phi.trans.insert336 = getelementptr inbounds i8, ptr %23, i64 20
  %.pre337 = load i32, ptr %.phi.trans.insert336, align 4, !tbaa !9
  %254 = sext i32 %.pre to i64
  %255 = sext i32 %.pre329 to i64
  %256 = mul nsw i64 %254, %255
  %257 = sext i32 %.pre331 to i64
  %258 = mul nsw i64 %256, %257
  %259 = sext i32 %.pre333 to i64
  %260 = mul nsw i64 %258, %259
  %261 = sext i32 %.pre335 to i64
  %262 = mul nsw i64 %260, %261
  %263 = sext i32 %.pre337 to i64
  %264 = mul nsw i64 %262, %263
  br label %.preheader

.preheader:                                       ; preds = %._crit_edge238.thread, %.preheader.loopexit, %._crit_edge238
  %265 = phi i64 [ %264, %.preheader.loopexit ], [ 0, %._crit_edge238 ], [ 0, %._crit_edge238.thread ]
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEx(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i64 noundef %265)
          to label %289 unwind label %292

.lr.ph253.preheader:                              ; preds = %._crit_edge257, %.lr.ph260
  %.093258 = phi i32 [ 0, %.lr.ph260 ], [ %283, %._crit_edge257 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %.lr.ph253

.lr.ph253:                                        ; preds = %.lr.ph253.preheader, %275
  %indvars.iv314 = phi i64 [ 0, %.lr.ph253.preheader ], [ %indvars.iv.next315, %275 ]
  %267 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %indvars.iv314
  %268 = call noundef i64 @_ZNKSt3setIiSt4lessIiESaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %267) #7
  %269 = and i64 %268, 4294967295
  %270 = icmp eq i64 %269, 1
  br i1 %270, label %271, label %275

271:                                              ; preds = %.lr.ph253
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %272 = call ptr @_ZNKSt3setIiSt4lessIiESaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %267) #7
  store ptr %272, ptr %25, align 8
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt23_Rb_tree_const_iteratorIiEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %274 = load i32, ptr %273, align 4, !tbaa !9
  store i32 %274, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  br label %.lr.ph256.preheader

275:                                              ; preds = %.lr.ph253
  %indvars.iv.next315 = add nuw nsw i64 %indvars.iv314, 1
  %exitcond318.not = icmp eq i64 %indvars.iv.next315, %wide.trip.count317
  br i1 %exitcond318.not, label %.lr.ph256.preheader, label %.lr.ph253, !llvm.loop !30

.lr.ph256.preheader:                              ; preds = %275, %271
  %.092 = phi i64 [ %indvars.iv314, %271 ], [ 0, %275 ]
  br label %.lr.ph256

._crit_edge257:                                   ; preds = %286
  %276 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @v, i64 noundef 0) #7
  %277 = and i64 %.092, 4294967295
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %276, i64 noundef %277) #7
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = load i32, ptr %24, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [50 x i32], ptr %23, i64 0, i64 %281
  store i32 %279, ptr %282, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  %283 = add nuw nsw i32 %.093258, 1
  %exitcond324.not = icmp eq i32 %283, %191
  br i1 %exitcond324.not, label %.preheader.loopexit, label %.lr.ph253.preheader, !llvm.loop !31

.lr.ph256:                                        ; preds = %.lr.ph256.preheader, %286
  %indvars.iv319 = phi i64 [ 0, %.lr.ph256.preheader ], [ %indvars.iv.next320, %286 ]
  %284 = getelementptr inbounds [2000 x %"class.std::set"], ptr @via, i64 0, i64 %indvars.iv319
  %285 = invoke noundef i64 @_ZNSt3setIiSt4lessIiESaIiEE5eraseERKi(ptr noundef nonnull align 8 dereferenceable(48) %284, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %286 unwind label %287

286:                                              ; preds = %.lr.ph256
  %indvars.iv.next320 = add nuw nsw i64 %indvars.iv319, 1
  %exitcond323.not = icmp eq i64 %indvars.iv.next320, %wide.trip.count322
  br i1 %exitcond323.not, label %._crit_edge257, label %.lr.ph256, !llvm.loop !32

287:                                              ; preds = %.lr.ph256
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  br label %294

289:                                              ; preds = %.preheader
  %290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %291 unwind label %292

291:                                              ; preds = %289
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %0) #7
  ret i32 0

292:                                              ; preds = %289, %.preheader
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %294

294:                                              ; preds = %292, %287
  %.pn = phi { ptr, i32 } [ %288, %287 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %23) #7
  br label %295

295:                                              ; preds = %.split, %.split.us, %294, %253, %251, %134, %136, %.split220.us, %.split217.us, %137, %135, %188
  %.pn159.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn146.pn, %188 ], [ %.pn149, %134 ], [ %.pn151, %135 ], [ %.pn153, %136 ], [ %113, %.split217.us ], [ %114, %.split220.us ], [ %.pn155, %137 ], [ %.pn, %294 ], [ %.us-phi250, %251 ], [ %.pn135, %253 ], [ %125, %.split ], [ %104, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %0) #7
  resume { ptr, i32 } %.pn159.pn.pn.pn.pn
}

declare ptr @freopen(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNSt7__cxx114stoiERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEPmi(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

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


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