; LLVM IR from sfu-dis/mosaicdb :: benchmarks/egen/EGenValidate.ll (Z16parseCommandLineiPPKcR16BucketSimOptions)

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

%"class.std::basic_ostream" = type { ptr, %"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"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.std::allocator" = type { i8 }
%class.BucketSimOptions = type { i32, i32, i64, i64, double, i8, double, i64, i32, i32, i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZTISt9exception = external constant ptr
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 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)) #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16parseCommandLineiPPKcR16BucketSimOptions(i32 noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(72) %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i8, align 1
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca i1, align 1
  %21 = alloca ptr, align 8
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  store ptr %2, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  store i8 45, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  store i8 0, ptr %8, align 1, !tbaa !12
  %22 = load ptr, ptr %6, align 8, !tbaa !9
  %23 = getelementptr inbounds %class.BucketSimOptions, ptr %22, i32 0, i32 4
  store double 0.000000e+00, ptr %23, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %24

24:                                               ; preds = %184, %3
  %25 = load i32, ptr %9, align 4, !tbaa !5
  %26 = load i32, ptr %4, align 4, !tbaa !5
  %27 = icmp slt i32 %25, %26
  br i1 %27, label %28, label %187

28:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %29 = load ptr, ptr %5, align 8, !tbaa !9
  %30 = load i32, ptr %9, align 4, !tbaa !5
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds ptr, ptr %29, i64 %31
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  store ptr %33, ptr %10, align 8, !tbaa !9
  %34 = load ptr, ptr %10, align 8, !tbaa !9
  %35 = getelementptr inbounds i8, ptr %34, i32 1
  store ptr %35, ptr %10, align 8, !tbaa !9
  %36 = load i8, ptr %34, align 1, !tbaa !11
  %37 = sext i8 %36 to i32
  %38 = icmp ne i32 %37, 45
  br i1 %38, label %39, label %40

39:                                               ; preds = %28
  store i32 2, ptr %11, align 4
  br label %181

40:                                               ; preds = %28
  br label %41

41:                                               ; preds = %178, %40
  %42 = load ptr, ptr %10, align 8, !tbaa !9
  %43 = load i8, ptr %42, align 1, !tbaa !11
  %44 = icmp ne i8 %43, 0
  br i1 %44, label %45, label %180

45:                                               ; preds = %41
  %46 = load ptr, ptr %10, align 8, !tbaa !9
  %47 = getelementptr inbounds i8, ptr %46, i32 1
  store ptr %47, ptr %10, align 8, !tbaa !9
  %48 = load i8, ptr %46, align 1, !tbaa !11
  store i8 %48, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #9
  store i8 1, ptr %12, align 1, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %49 = load ptr, ptr %10, align 8, !tbaa !9
  store ptr %49, ptr %14, align 8, !tbaa !9
  %50 = load ptr, ptr %10, align 8, !tbaa !9
  %51 = load i8, ptr %50, align 1, !tbaa !11
  %52 = sext i8 %51 to i32
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %65

54:                                               ; preds = %45
  store i32 1, ptr %13, align 4, !tbaa !5
  %55 = load ptr, ptr %5, align 8, !tbaa !9
  %56 = load i32, ptr %9, align 4, !tbaa !5
  %57 = add nsw i32 %56, 1
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds ptr, ptr %55, i64 %58
  %60 = load ptr, ptr %59, align 8, !tbaa !9
  store ptr %60, ptr %14, align 8, !tbaa !9
  %61 = load ptr, ptr %14, align 8, !tbaa !9
  %62 = icmp eq ptr %61, null
  br i1 %62, label %63, label %64

63:                                               ; preds = %54
  store ptr @.str.14, ptr %14, align 8, !tbaa !9
  br label %64

64:                                               ; preds = %63, %54
  br label %65

65:                                               ; preds = %64, %45
  %66 = load i8, ptr %7, align 1, !tbaa !11
  %67 = sext i8 %66 to i32
  switch i32 %67, label %146 [
    i32 118, label %68
    i32 63, label %73
    i32 104, label %73
    i32 83, label %78
    i32 99, label %88
    i32 110, label %94
    i32 105, label %101
    i32 114, label %108
    i32 101, label %114
    i32 116, label %120
    i32 115, label %127
    i32 117, label %135
  ]

68:                                               ; preds = %65
  store i8 0, ptr %12, align 1, !tbaa !12
  %69 = load ptr, ptr %6, align 8, !tbaa !9
  %70 = getelementptr inbounds %class.BucketSimOptions, ptr %69, i32 0, i32 0
  %71 = load i32, ptr %70, align 8, !tbaa !18
  %72 = add nsw i32 %71, 1
  store i32 %72, ptr %70, align 8, !tbaa !18
  br label %168

73:                                               ; preds = %65, %65
  store i8 0, ptr %12, align 1, !tbaa !12
  %74 = load ptr, ptr %6, align 8, !tbaa !9
  %75 = getelementptr inbounds %class.BucketSimOptions, ptr %74, i32 0, i32 1
  %76 = load i32, ptr %75, align 4, !tbaa !19
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr %75, align 4, !tbaa !19
  br label %168

78:                                               ; preds = %65
  %79 = load ptr, ptr %14, align 8, !tbaa !9
  %80 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %79)
          to label %81 unwind label %84

81:                                               ; preds = %78
  %82 = load ptr, ptr %6, align 8, !tbaa !9
  %83 = getelementptr inbounds %class.BucketSimOptions, ptr %82, i32 0, i32 2
  store i64 %80, ptr %83, align 8, !tbaa !20
  br label %168

84:                                               ; preds = %135, %127, %120, %114, %108, %101, %94, %88, %78
  %85 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %15, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %16, align 4
  br label %179

88:                                               ; preds = %65
  %89 = load ptr, ptr %14, align 8, !tbaa !9
  %90 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %89)
          to label %91 unwind label %84

91:                                               ; preds = %88
  %92 = load ptr, ptr %6, align 8, !tbaa !9
  %93 = getelementptr inbounds %class.BucketSimOptions, ptr %92, i32 0, i32 3
  store i64 %90, ptr %93, align 8, !tbaa !21
  br label %168

94:                                               ; preds = %65
  %95 = load ptr, ptr %14, align 8, !tbaa !9
  %96 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %95)
          to label %97 unwind label %84

97:                                               ; preds = %94
  %98 = trunc i64 %96 to i32
  %99 = load ptr, ptr %6, align 8, !tbaa !9
  %100 = getelementptr inbounds %class.BucketSimOptions, ptr %99, i32 0, i32 8
  store i32 %98, ptr %100, align 8, !tbaa !22
  br label %168

101:                                              ; preds = %65
  %102 = load ptr, ptr %14, align 8, !tbaa !9
  %103 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %102)
          to label %104 unwind label %84

104:                                              ; preds = %101
  %105 = trunc i64 %103 to i32
  %106 = load ptr, ptr %6, align 8, !tbaa !9
  %107 = getelementptr inbounds %class.BucketSimOptions, ptr %106, i32 0, i32 9
  store i32 %105, ptr %107, align 4, !tbaa !23
  br label %168

108:                                              ; preds = %65
  %109 = load ptr, ptr %14, align 8, !tbaa !9
  %110 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef %109)
          to label %111 unwind label %84

111:                                              ; preds = %108
  %112 = load ptr, ptr %6, align 8, !tbaa !9
  %113 = getelementptr inbounds %class.BucketSimOptions, ptr %112, i32 0, i32 7
  store i64 %110, ptr %113, align 8, !tbaa !24
  br label %168

114:                                              ; preds = %65
  store i8 1, ptr %8, align 1, !tbaa !12
  %115 = load ptr, ptr %14, align 8, !tbaa !9
  %116 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %115)
          to label %117 unwind label %84

117:                                              ; preds = %114
  %118 = load ptr, ptr %6, align 8, !tbaa !9
  %119 = getelementptr inbounds %class.BucketSimOptions, ptr %118, i32 0, i32 4
  store double %116, ptr %119, align 8, !tbaa !14
  br label %168

120:                                              ; preds = %65
  %121 = load ptr, ptr %14, align 8, !tbaa !9
  %122 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %121)
          to label %123 unwind label %84

123:                                              ; preds = %120
  %124 = trunc i64 %122 to i32
  %125 = load ptr, ptr %6, align 8, !tbaa !9
  %126 = getelementptr inbounds %class.BucketSimOptions, ptr %125, i32 0, i32 10
  store i32 %124, ptr %126, align 8, !tbaa !25
  br label %168

127:                                              ; preds = %65
  %128 = load ptr, ptr %6, align 8, !tbaa !9
  %129 = getelementptr inbounds %class.BucketSimOptions, ptr %128, i32 0, i32 5
  store i8 1, ptr %129, align 8, !tbaa !26
  %130 = load ptr, ptr %14, align 8, !tbaa !9
  %131 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %130)
          to label %132 unwind label %84

132:                                              ; preds = %127
  %133 = load ptr, ptr %6, align 8, !tbaa !9
  %134 = getelementptr inbounds %class.BucketSimOptions, ptr %133, i32 0, i32 6
  store double %131, ptr %134, align 8, !tbaa !27
  br label %168

135:                                              ; preds = %65
  %136 = load ptr, ptr %14, align 8, !tbaa !9
  %137 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef %136)
          to label %138 unwind label %84

138:                                              ; preds = %135
  %139 = trunc i64 %137 to i32
  %140 = load ptr, ptr %6, align 8, !tbaa !9
  %141 = getelementptr inbounds %class.BucketSimOptions, ptr %140, i32 0, i32 11
  store i32 %139, ptr %141, align 4, !tbaa !28
  %142 = load ptr, ptr %6, align 8, !tbaa !9
  %143 = getelementptr inbounds %class.BucketSimOptions, ptr %142, i32 0, i32 0
  %144 = load i32, ptr %143, align 8, !tbaa !18
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr %143, align 8, !tbaa !18
  br label %168

146:                                              ; preds = %65
  call void @llvm.lifetime.start.p0(i64 376, ptr %17) #9
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17)
          to label %147 unwind label %151

147:                                              ; preds = %146
  store i1 true, ptr %20, align 1
  %148 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %149 unwind label %155

149:                                              ; preds = %147
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %150 unwind label %159

150:                                              ; preds = %149
  store i1 false, ptr %20, align 1
  invoke void @__cxa_throw(ptr %148, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %346 unwind label %159

151:                                              ; preds = %146
  %152 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %15, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %16, align 4
  br label %167

155:                                              ; preds = %147
  %156 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %15, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %16, align 4
  br label %163

159:                                              ; preds = %150, %149
  %160 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %15, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %163

163:                                              ; preds = %159, %155
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  %164 = load i1, ptr %20, align 1
  br i1 %164, label %165, label %166

165:                                              ; preds = %163
  call void @__cxa_free_exception(ptr %148) #9
  br label %166

166:                                              ; preds = %165, %163
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17) #9
  br label %167

167:                                              ; preds = %166, %151
  call void @llvm.lifetime.end.p0(i64 376, ptr %17) #9
  br label %179

168:                                              ; preds = %138, %132, %123, %117, %111, %104, %97, %91, %81, %73, %68
  %169 = load i8, ptr %12, align 1, !tbaa !12, !range !29, !noundef !30
  %170 = trunc i8 %169 to i1
  br i1 %170, label %171, label %175

171:                                              ; preds = %168
  %172 = load i32, ptr %13, align 4, !tbaa !5
  %173 = load i32, ptr %9, align 4, !tbaa !5
  %174 = add nsw i32 %173, %172
  store i32 %174, ptr %9, align 4, !tbaa !5
  store i32 6, ptr %11, align 4
  br label %176

175:                                              ; preds = %168
  store i32 0, ptr %11, align 4
  br label %176

176:                                              ; preds = %175, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #9
  %177 = load i32, ptr %11, align 4
  switch i32 %177, label %346 [
    i32 0, label %178
    i32 6, label %180
  ]

178:                                              ; preds = %176
  br label %41, !llvm.loop !31

179:                                              ; preds = %167, %84
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  br label %302

180:                                              ; preds = %176, %41
  store i32 0, ptr %11, align 4
  br label %181

181:                                              ; preds = %180, %39
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %182 = load i32, ptr %11, align 4
  switch i32 %182, label %346 [
    i32 0, label %183
    i32 2, label %187
  ]

183:                                              ; preds = %181
  br label %184

184:                                              ; preds = %183
  %185 = load i32, ptr %9, align 4, !tbaa !5
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr %9, align 4, !tbaa !5
  br label %24, !llvm.loop !33

187:                                              ; preds = %181, %24
  %188 = load i32, ptr %9, align 4, !tbaa !5
  %189 = load i32, ptr %4, align 4, !tbaa !5
  %190 = icmp slt i32 %188, %189
  br i1 %190, label %191, label %208

191:                                              ; preds = %187
  %192 = load ptr, ptr %6, align 8, !tbaa !9
  %193 = getelementptr inbounds %class.BucketSimOptions, ptr %192, i32 0, i32 5
  store i8 1, ptr %193, align 8, !tbaa !26
  %194 = load ptr, ptr %5, align 8, !tbaa !9
  %195 = load i32, ptr %9, align 4, !tbaa !5
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %9, align 4, !tbaa !5
  %197 = sext i32 %195 to i64
  %198 = getelementptr inbounds ptr, ptr %194, i64 %197
  %199 = load ptr, ptr %198, align 8, !tbaa !9
  %200 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %199)
          to label %201 unwind label %204

201:                                              ; preds = %191
  %202 = load ptr, ptr %6, align 8, !tbaa !9
  %203 = getelementptr inbounds %class.BucketSimOptions, ptr %202, i32 0, i32 6
  store double %200, ptr %203, align 8, !tbaa !27
  br label %208

204:                                              ; preds = %295, %263, %261, %259, %242, %227, %212, %191
  %205 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %15, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %16, align 4
  br label %302

208:                                              ; preds = %201, %187
  %209 = load i32, ptr %9, align 4, !tbaa !5
  %210 = load i32, ptr %4, align 4, !tbaa !5
  %211 = icmp slt i32 %209, %210
  br i1 %211, label %212, label %223

212:                                              ; preds = %208
  store i8 99, ptr %7, align 1, !tbaa !11
  %213 = load ptr, ptr %5, align 8, !tbaa !9
  %214 = load i32, ptr %9, align 4, !tbaa !5
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %9, align 4, !tbaa !5
  %216 = sext i32 %214 to i64
  %217 = getelementptr inbounds ptr, ptr %213, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !9
  %219 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %218)
          to label %220 unwind label %204

220:                                              ; preds = %212
  %221 = load ptr, ptr %6, align 8, !tbaa !9
  %222 = getelementptr inbounds %class.BucketSimOptions, ptr %221, i32 0, i32 3
  store i64 %219, ptr %222, align 8, !tbaa !21
  br label %223

223:                                              ; preds = %220, %208
  %224 = load i32, ptr %9, align 4, !tbaa !5
  %225 = load i32, ptr %4, align 4, !tbaa !5
  %226 = icmp slt i32 %224, %225
  br i1 %226, label %227, label %238

227:                                              ; preds = %223
  store i8 116, ptr %7, align 1, !tbaa !11
  store i8 1, ptr %8, align 1, !tbaa !12
  %228 = load ptr, ptr %5, align 8, !tbaa !9
  %229 = load i32, ptr %9, align 4, !tbaa !5
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %9, align 4, !tbaa !5
  %231 = sext i32 %229 to i64
  %232 = getelementptr inbounds ptr, ptr %228, i64 %231
  %233 = load ptr, ptr %232, align 8, !tbaa !9
  %234 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %233)
          to label %235 unwind label %204

235:                                              ; preds = %227
  %236 = load ptr, ptr %6, align 8, !tbaa !9
  %237 = getelementptr inbounds %class.BucketSimOptions, ptr %236, i32 0, i32 4
  store double %234, ptr %237, align 8, !tbaa !14
  br label %238

238:                                              ; preds = %235, %223
  %239 = load i32, ptr %9, align 4, !tbaa !5
  %240 = load i32, ptr %4, align 4, !tbaa !5
  %241 = icmp slt i32 %239, %240
  br i1 %241, label %242, label %255

242:                                              ; preds = %238
  store i8 114, ptr %7, align 1, !tbaa !11
  %243 = load ptr, ptr %5, align 8, !tbaa !9
  %244 = load i32, ptr %9, align 4, !tbaa !5
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %9, align 4, !tbaa !5
  %246 = sext i32 %244 to i64
  %247 = getelementptr inbounds ptr, ptr %243, i64 %246
  %248 = load ptr, ptr %247, align 8, !tbaa !9
  %249 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef %248)
          to label %250 unwind label %204

250:                                              ; preds = %242
  %251 = trunc i64 %249 to i32
  %252 = zext i32 %251 to i64
  %253 = load ptr, ptr %6, align 8, !tbaa !9
  %254 = getelementptr inbounds %class.BucketSimOptions, ptr %253, i32 0, i32 7
  store i64 %252, ptr %254, align 8, !tbaa !24
  br label %255

255:                                              ; preds = %250, %238
  %256 = load i32, ptr %9, align 4, !tbaa !5
  %257 = load i32, ptr %4, align 4, !tbaa !5
  %258 = icmp slt i32 %256, %257
  br i1 %258, label %259, label %269

259:                                              ; preds = %255
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.16)
          to label %261 unwind label %204

261:                                              ; preds = %259
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %263 unwind label %204

263:                                              ; preds = %261
  %264 = load ptr, ptr %5, align 8, !tbaa !9
  %265 = getelementptr inbounds ptr, ptr %264, i64 0
  %266 = load ptr, ptr %265, align 8, !tbaa !9
  %267 = load ptr, ptr %6, align 8, !tbaa !9
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %266, ptr noundef nonnull align 8 dereferenceable(72) %267, i1 noundef zeroext true)
          to label %268 unwind label %204

268:                                              ; preds = %263
  br label %269

269:                                              ; preds = %268, %255
  %270 = load i8, ptr %8, align 1, !tbaa !12, !range !29, !noundef !30
  %271 = trunc i8 %270 to i1
  br i1 %271, label %280, label %272

272:                                              ; preds = %269
  %273 = load ptr, ptr %6, align 8, !tbaa !9
  %274 = getelementptr inbounds %class.BucketSimOptions, ptr %273, i32 0, i32 3
  %275 = load i64, ptr %274, align 8, !tbaa !21
  %276 = sitofp i64 %275 to double
  %277 = fdiv double %276, 5.000000e+02
  %278 = load ptr, ptr %6, align 8, !tbaa !9
  %279 = getelementptr inbounds %class.BucketSimOptions, ptr %278, i32 0, i32 4
  store double %277, ptr %279, align 8, !tbaa !14
  br label %280

280:                                              ; preds = %272, %269
  %281 = load ptr, ptr %6, align 8, !tbaa !9
  %282 = getelementptr inbounds %class.BucketSimOptions, ptr %281, i32 0, i32 1
  %283 = load i32, ptr %282, align 4, !tbaa !19
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %295, label %285

285:                                              ; preds = %280
  %286 = load ptr, ptr %6, align 8, !tbaa !9
  %287 = getelementptr inbounds %class.BucketSimOptions, ptr %286, i32 0, i32 3
  %288 = load i64, ptr %287, align 8, !tbaa !21
  %289 = icmp eq i64 %288, 0
  br i1 %289, label %295, label %290

290:                                              ; preds = %285
  %291 = load ptr, ptr %6, align 8, !tbaa !9
  %292 = getelementptr inbounds %class.BucketSimOptions, ptr %291, i32 0, i32 5
  %293 = load i8, ptr %292, align 8, !tbaa !26, !range !29, !noundef !30
  %294 = trunc i8 %293 to i1
  br i1 %294, label %301, label %295

295:                                              ; preds = %290, %285, %280
  %296 = load ptr, ptr %5, align 8, !tbaa !9
  %297 = getelementptr inbounds ptr, ptr %296, i64 0
  %298 = load ptr, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %6, align 8, !tbaa !9
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %298, ptr noundef nonnull align 8 dereferenceable(72) %299, i1 noundef zeroext false)
          to label %300 unwind label %204

300:                                              ; preds = %295
  br label %301

301:                                              ; preds = %300, %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  br label %336

302:                                              ; preds = %204, %179
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  br label %303

303:                                              ; preds = %302
  %304 = load i32, ptr %16, align 4
  %305 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #9
  %306 = icmp eq i32 %304, %305
  br i1 %306, label %307, label %337

307:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %308 = load ptr, ptr %15, align 8
  %309 = call ptr @__cxa_begin_catch(ptr %308) #9
  store ptr %309, ptr %21, align 8
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.17)
          to label %311 unwind label %331

311:                                              ; preds = %307
  %312 = load i8, ptr %7, align 1, !tbaa !11
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %310, i8 noundef signext %312)
          to label %314 unwind label %331

314:                                              ; preds = %311
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef @.str.18)
          to label %316 unwind label %331

316:                                              ; preds = %314
  %317 = load ptr, ptr %21, align 8, !tbaa !9
  %318 = load ptr, ptr %317, align 8, !tbaa !34
  %319 = getelementptr inbounds ptr, ptr %318, i64 2
  %320 = load ptr, ptr %319, align 8
  %321 = call noundef ptr %320(ptr noundef nonnull align 8 dereferenceable(8) %317) #9
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef %321)
          to label %323 unwind label %331

323:                                              ; preds = %316
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %325 unwind label %331

325:                                              ; preds = %323
  %326 = load ptr, ptr %5, align 8, !tbaa !9
  %327 = getelementptr inbounds ptr, ptr %326, i64 0
  %328 = load ptr, ptr %327, align 8, !tbaa !9
  %329 = load ptr, ptr %6, align 8, !tbaa !9
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %328, ptr noundef nonnull align 8 dereferenceable(72) %329, i1 noundef zeroext true)
          to label %330 unwind label %331

330:                                              ; preds = %325
  call void @exit(i32 noundef 1) #11
  unreachable

331:                                              ; preds = %325, %323, %316, %314, %311, %307
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %15, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %16, align 4
  invoke void @__cxa_end_catch()
          to label %335 unwind label %343

335:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %337

336:                                              ; preds = %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  ret void

337:                                              ; preds = %335, %303
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  br label %338

338:                                              ; preds = %337
  %339 = load ptr, ptr %15, align 8
  %340 = load i32, ptr %16, align 4
  %341 = insertvalue { ptr, i32 } poison, ptr %339, 0
  %342 = insertvalue { ptr, i32 } %341, i32 %340, 1
  resume { ptr, i32 } %342

343:                                              ; preds = %331
  %344 = landingpad { ptr, i32 }
          catch ptr null
  %345 = extractvalue { ptr, i32 } %344, 0
  call void @__clang_call_terminate(ptr %345) #11
  unreachable

346:                                              ; preds = %181, %176, %150
  unreachable
}

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

declare noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef) #4

declare i32 @__gxx_personality_v0(...)

declare noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef) #4

declare noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef) #4

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

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #1

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!15, !17, i64 24}
!15 = !{!"_ZTS16BucketSimOptions", !6, i64 0, !6, i64 4, !16, i64 8, !16, i64 16, !17, i64 24, !13, i64 32, !17, i64 40, !16, i64 48, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68}
!16 = !{!"long long", !7, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = !{!15, !6, i64 0}
!19 = !{!15, !6, i64 4}
!20 = !{!15, !16, i64 8}
!21 = !{!15, !16, i64 16}
!22 = !{!15, !6, i64 56}
!23 = !{!15, !6, i64 60}
!24 = !{!15, !16, i64 48}
!25 = !{!15, !6, i64 64}
!26 = !{!15, !13, i64 32}
!27 = !{!15, !17, i64 40}
!28 = !{!15, !6, i64 68}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = !{!35, !35, i64 0}
!35 = !{!"vtable pointer", !8, i64 0}


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

%"class.std::basic_ostream" = type { ptr, %"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"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.std::allocator" = type { i8 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZTISt9exception = external constant ptr
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [4 x i8], align 1

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

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

; 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 #0 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)) #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16parseCommandLineiPPKcR16BucketSimOptions(i32 noundef %0, ptr nocapture noundef readonly %1, ptr noundef nonnull align 8 dereferenceable(72) %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = getelementptr inbounds i8, ptr %2, i64 24
  store double 0.000000e+00, ptr %7, align 8, !tbaa !5
  %8 = icmp sgt i32 %0, 1
  br i1 %8, label %.lr.ph203, label %._crit_edge

.lr.ph203:                                        ; preds = %3
  %invariant.gep = getelementptr i8, ptr %1, i64 8
  %9 = getelementptr inbounds i8, ptr %2, i64 4
  %10 = getelementptr inbounds i8, ptr %2, i64 68
  %11 = getelementptr inbounds i8, ptr %2, i64 32
  %12 = getelementptr inbounds i8, ptr %2, i64 40
  %13 = getelementptr inbounds i8, ptr %2, i64 64
  %14 = getelementptr inbounds i8, ptr %2, i64 48
  %15 = getelementptr inbounds i8, ptr %2, i64 60
  %16 = getelementptr inbounds i8, ptr %2, i64 56
  %17 = getelementptr inbounds i8, ptr %2, i64 16
  %18 = getelementptr inbounds i8, ptr %2, i64 8
  br label %19

19:                                               ; preds = %.lr.ph203, %.loopexit
  %.0202 = phi i8 [ 45, %.lr.ph203 ], [ %.3.ph, %.loopexit ]
  %.0101201 = phi i32 [ 1, %.lr.ph203 ], [ %94, %.loopexit ]
  %.0111200 = phi i1 [ false, %.lr.ph203 ], [ %.4115.ph, %.loopexit ]
  %20 = sext i32 %.0101201 to i64
  %21 = getelementptr inbounds ptr, ptr %1, i64 %20
  %22 = load ptr, ptr %21, align 8, !tbaa !13
  %23 = getelementptr inbounds i8, ptr %22, i64 1
  %24 = load i8, ptr %22, align 1, !tbaa !15
  %.not = icmp eq i8 %24, 45
  br i1 %.not, label %.preheader, label %._crit_edge

.preheader:                                       ; preds = %19
  %25 = load i8, ptr %23, align 1, !tbaa !15
  %.not119197 = icmp eq i8 %25, 0
  br i1 %.not119197, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %.promoted = load i32, ptr %2, align 8, !tbaa !16
  %gep = getelementptr ptr, ptr %invariant.gep, i64 %20
  %.promoted199 = load i32, ptr %9, align 4, !tbaa !17
  br label %26

26:                                               ; preds = %.lr.ph, %90
  %27 = phi i32 [ %.promoted199, %.lr.ph ], [ %91, %90 ]
  %28 = phi i8 [ %25, %.lr.ph ], [ %93, %90 ]
  %.0100198 = phi ptr [ %23, %.lr.ph ], [ %30, %90 ]
  %29 = phi i32 [ %.promoted, %.lr.ph ], [ %92, %90 ]
  %30 = getelementptr inbounds i8, ptr %.0100198, i64 1
  %31 = load i8, ptr %30, align 1, !tbaa !15
  %32 = icmp eq i8 %31, 0
  br i1 %32, label %33, label %36

33:                                               ; preds = %26
  %34 = load ptr, ptr %gep, align 8, !tbaa !13
  %35 = icmp eq ptr %34, null
  %spec.store.select = select i1 %35, ptr @.str.14, ptr %34
  br label %36

36:                                               ; preds = %33, %26
  %.096 = phi i32 [ 1, %33 ], [ 0, %26 ]
  %.095 = phi ptr [ %spec.store.select, %33 ], [ %30, %26 ]
  switch i8 %28, label %76 [
    i8 118, label %37
    i8 63, label %39
    i8 104, label %39
    i8 83, label %41
    i8 99, label %46
    i8 110, label %49
    i8 105, label %53
    i8 114, label %57
    i8 101, label %60
    i8 116, label %63
    i8 115, label %67
    i8 117, label %70
  ]

37:                                               ; preds = %36
  %38 = add nsw i32 %29, 1
  store i32 %38, ptr %2, align 8, !tbaa !16
  br label %90

39:                                               ; preds = %36, %36
  %40 = add nsw i32 %27, 1
  store i32 %40, ptr %9, align 4, !tbaa !17
  br label %90

41:                                               ; preds = %36
  %42 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef nonnull %.095)
          to label %43 unwind label %44

43:                                               ; preds = %41
  store i64 %42, ptr %18, align 8, !tbaa !18
  br label %.thread139

44:                                               ; preds = %70, %67, %63, %60, %57, %53, %49, %46, %41
  %45 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %160

46:                                               ; preds = %36
  %47 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef nonnull %.095)
          to label %48 unwind label %44

48:                                               ; preds = %46
  store i64 %47, ptr %17, align 8, !tbaa !19
  br label %.thread139

49:                                               ; preds = %36
  %50 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef nonnull %.095)
          to label %51 unwind label %44

51:                                               ; preds = %49
  %52 = trunc i64 %50 to i32
  store i32 %52, ptr %16, align 8, !tbaa !20
  br label %.thread139

53:                                               ; preds = %36
  %54 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef nonnull %.095)
          to label %55 unwind label %44

55:                                               ; preds = %53
  %56 = trunc i64 %54 to i32
  store i32 %56, ptr %15, align 4, !tbaa !21
  br label %.thread139

57:                                               ; preds = %36
  %58 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef nonnull %.095)
          to label %59 unwind label %44

59:                                               ; preds = %57
  store i64 %58, ptr %14, align 8, !tbaa !22
  br label %.thread139

60:                                               ; preds = %36
  %61 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef nonnull %.095)
          to label %62 unwind label %44

62:                                               ; preds = %60
  store double %61, ptr %7, align 8, !tbaa !5
  br label %.thread139

63:                                               ; preds = %36
  %64 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef nonnull %.095)
          to label %65 unwind label %44

65:                                               ; preds = %63
  %66 = trunc i64 %64 to i32
  store i32 %66, ptr %13, align 8, !tbaa !23
  br label %.thread139

67:                                               ; preds = %36
  store i8 1, ptr %11, align 8, !tbaa !24
  %68 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef nonnull %.095)
          to label %69 unwind label %44

69:                                               ; preds = %67
  store double %68, ptr %12, align 8, !tbaa !25
  br label %.thread139

70:                                               ; preds = %36
  %71 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef nonnull %.095)
          to label %72 unwind label %44

72:                                               ; preds = %70
  %73 = trunc i64 %71 to i32
  store i32 %73, ptr %10, align 4, !tbaa !26
  %74 = load i32, ptr %2, align 8, !tbaa !16
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr %2, align 8, !tbaa !16
  br label %.thread139

76:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %4) #9
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %77 unwind label %81

77:                                               ; preds = %76
  %78 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %79 unwind label %.thread

79:                                               ; preds = %77
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %80 unwind label %84

80:                                               ; preds = %79
  invoke void @__cxa_throw(ptr nonnull %78, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %187 unwind label %84

81:                                               ; preds = %76
  %82 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %88

.thread:                                          ; preds = %77
  %83 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %86

84:                                               ; preds = %79, %80
  %.083 = phi i1 [ false, %80 ], [ true, %79 ]
  %85 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br i1 %.083, label %86, label %87

86:                                               ; preds = %.thread, %84
  %.pn131 = phi { ptr, i32 } [ %83, %.thread ], [ %85, %84 ]
  call void @__cxa_free_exception(ptr %78) #9
  br label %87

87:                                               ; preds = %86, %84
  %.pn130 = phi { ptr, i32 } [ %.pn131, %86 ], [ %85, %84 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4) #9
  br label %88

88:                                               ; preds = %87, %81
  %.pn.pn = phi { ptr, i32 } [ %.pn130, %87 ], [ %82, %81 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %4) #9
  br label %160

.thread139:                                       ; preds = %43, %48, %51, %55, %59, %62, %65, %69, %72
  %.2113.ph = phi i1 [ %.0111200, %43 ], [ %.0111200, %48 ], [ %.0111200, %51 ], [ %.0111200, %55 ], [ %.0111200, %59 ], [ true, %62 ], [ %.0111200, %65 ], [ %.0111200, %69 ], [ %.0111200, %72 ]
  %89 = add nsw i32 %.096, %.0101201
  br label %.loopexit

90:                                               ; preds = %37, %39
  %91 = phi i32 [ %27, %37 ], [ %40, %39 ]
  %92 = phi i32 [ %38, %37 ], [ %29, %39 ]
  %93 = load i8, ptr %30, align 1, !tbaa !15
  %.not119 = icmp eq i8 %93, 0
  br i1 %.not119, label %.loopexit, label %26

.loopexit:                                        ; preds = %90, %.preheader, %.thread139
  %.4115.ph = phi i1 [ %.2113.ph, %.thread139 ], [ %.0111200, %.preheader ], [ %.0111200, %90 ]
  %.4105.ph = phi i32 [ %89, %.thread139 ], [ %.0101201, %.preheader ], [ %.0101201, %90 ]
  %.3.ph = phi i8 [ %28, %.thread139 ], [ %.0202, %.preheader ], [ %28, %90 ]
  %94 = add nsw i32 %.4105.ph, 1
  %95 = icmp slt i32 %94, %0
  br i1 %95, label %19, label %._crit_edge, !llvm.loop !27

._crit_edge:                                      ; preds = %.loopexit, %19, %3
  %.0111.lcssa = phi i1 [ false, %3 ], [ %.0111200, %19 ], [ %.4115.ph, %.loopexit ]
  %.0101.lcssa = phi i32 [ 1, %3 ], [ %.0101201, %19 ], [ %94, %.loopexit ]
  %.0.lcssa = phi i8 [ 45, %3 ], [ %.0202, %19 ], [ %.3.ph, %.loopexit ]
  %96 = icmp slt i32 %.0101.lcssa, %0
  br i1 %96, label %97, label %108

97:                                               ; preds = %._crit_edge
  %98 = getelementptr inbounds i8, ptr %2, i64 32
  store i8 1, ptr %98, align 8, !tbaa !24
  %99 = sext i32 %.0101.lcssa to i64
  %100 = getelementptr inbounds ptr, ptr %1, i64 %99
  %101 = load ptr, ptr %100, align 8, !tbaa !13
  %102 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %101)
          to label %103 unwind label %106

103:                                              ; preds = %97
  %104 = add nsw i32 %.0101.lcssa, 1
  %105 = getelementptr inbounds i8, ptr %2, i64 40
  store double %102, ptr %105, align 8, !tbaa !25
  br label %108

106:                                              ; preds = %157, %144, %142, %140, %129, %120, %110, %97
  %.5 = phi i8 [ %.8, %157 ], [ %.8, %144 ], [ %.8, %142 ], [ %.8, %140 ], [ 114, %129 ], [ 116, %120 ], [ 99, %110 ], [ %.0.lcssa, %97 ]
  %107 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %160

108:                                              ; preds = %103, %._crit_edge
  %.6107 = phi i32 [ %104, %103 ], [ %.0101.lcssa, %._crit_edge ]
  %109 = icmp slt i32 %.6107, %0
  br i1 %109, label %110, label %118

110:                                              ; preds = %108
  %111 = sext i32 %.6107 to i64
  %112 = getelementptr inbounds ptr, ptr %1, i64 %111
  %113 = load ptr, ptr %112, align 8, !tbaa !13
  %114 = invoke noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef %113)
          to label %115 unwind label %106

115:                                              ; preds = %110
  %116 = add nsw i32 %.6107, 1
  %117 = getelementptr inbounds i8, ptr %2, i64 16
  store i64 %114, ptr %117, align 8, !tbaa !19
  br label %118

118:                                              ; preds = %115, %108
  %.7108 = phi i32 [ %116, %115 ], [ %.6107, %108 ]
  %.6 = phi i8 [ 99, %115 ], [ %.0.lcssa, %108 ]
  %119 = icmp slt i32 %.7108, %0
  br i1 %119, label %120, label %127

120:                                              ; preds = %118
  %121 = sext i32 %.7108 to i64
  %122 = getelementptr inbounds ptr, ptr %1, i64 %121
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = invoke noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef %123)
          to label %125 unwind label %106

125:                                              ; preds = %120
  %126 = add nsw i32 %.7108, 1
  store double %124, ptr %7, align 8, !tbaa !5
  br label %127

127:                                              ; preds = %125, %118
  %.6117 = phi i1 [ true, %125 ], [ %.0111.lcssa, %118 ]
  %.8109 = phi i32 [ %126, %125 ], [ %.7108, %118 ]
  %.7 = phi i8 [ 116, %125 ], [ %.6, %118 ]
  %128 = icmp slt i32 %.8109, %0
  br i1 %128, label %129, label %138

129:                                              ; preds = %127
  %130 = sext i32 %.8109 to i64
  %131 = getelementptr inbounds ptr, ptr %1, i64 %130
  %132 = load ptr, ptr %131, align 8, !tbaa !13
  %133 = invoke noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef %132)
          to label %134 unwind label %106

134:                                              ; preds = %129
  %135 = add nsw i32 %.8109, 1
  %136 = and i64 %133, 4294967295
  %137 = getelementptr inbounds i8, ptr %2, i64 48
  store i64 %136, ptr %137, align 8, !tbaa !22
  br label %138

138:                                              ; preds = %134, %127
  %.9110 = phi i32 [ %135, %134 ], [ %.8109, %127 ]
  %.8 = phi i8 [ 114, %134 ], [ %.7, %127 ]
  %139 = icmp slt i32 %.9110, %0
  br i1 %139, label %140, label %146

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.16)
          to label %142 unwind label %106

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %144 unwind label %106

144:                                              ; preds = %142
  %145 = load ptr, ptr %1, align 8, !tbaa !13
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %145, ptr noundef nonnull align 8 dereferenceable(72) %2, i1 noundef zeroext true)
          to label %146 unwind label %106

146:                                              ; preds = %144, %138
  %.phi.trans.insert = getelementptr inbounds i8, ptr %2, i64 16
  %.pre = load i64, ptr %.phi.trans.insert, align 8
  br i1 %.6117, label %._crit_edge242, label %147

147:                                              ; preds = %146
  %148 = sitofp i64 %.pre to double
  %149 = fdiv double %148, 5.000000e+02
  store double %149, ptr %7, align 8, !tbaa !5
  br label %._crit_edge242

._crit_edge242:                                   ; preds = %146, %147
  %150 = getelementptr inbounds i8, ptr %2, i64 4
  %151 = load i32, ptr %150, align 4, !tbaa !17
  %.not123 = icmp ne i32 %151, 0
  %152 = icmp eq i64 %.pre, 0
  %or.cond = select i1 %.not123, i1 true, i1 %152
  br i1 %or.cond, label %157, label %153

153:                                              ; preds = %._crit_edge242
  %154 = getelementptr inbounds i8, ptr %2, i64 32
  %155 = load i8, ptr %154, align 8, !tbaa !24, !range !29, !noundef !30
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %159, label %157

157:                                              ; preds = %153, %._crit_edge242
  %158 = load ptr, ptr %1, align 8, !tbaa !13
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %158, ptr noundef nonnull align 8 dereferenceable(72) %2, i1 noundef zeroext false)
          to label %159 unwind label %106

159:                                              ; preds = %157, %153
  ret void

160:                                              ; preds = %44, %88, %106
  %.pn124 = phi { ptr, i32 } [ %107, %106 ], [ %.pn.pn, %88 ], [ %45, %44 ]
  %.9 = phi i8 [ %.5, %106 ], [ %28, %88 ], [ %28, %44 ]
  %.388 = extractvalue { ptr, i32 } %.pn124, 1
  %161 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #9
  %162 = icmp eq i32 %.388, %161
  br i1 %162, label %163, label %183

163:                                              ; preds = %160
  %.393 = extractvalue { ptr, i32 } %.pn124, 0
  %164 = call ptr @__cxa_begin_catch(ptr %.393) #9
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.17)
          to label %166 unwind label %181

166:                                              ; preds = %163
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %165, i8 noundef signext %.9)
          to label %168 unwind label %181

168:                                              ; preds = %166
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull @.str.18)
          to label %170 unwind label %181

170:                                              ; preds = %168
  %171 = load ptr, ptr %164, align 8, !tbaa !31
  %172 = getelementptr inbounds i8, ptr %171, i64 16
  %173 = load ptr, ptr %172, align 8
  %174 = call noundef ptr %173(ptr noundef nonnull align 8 dereferenceable(8) %164) #9
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef %174)
          to label %176 unwind label %181

176:                                              ; preds = %170
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %178 unwind label %181

178:                                              ; preds = %176
  %179 = load ptr, ptr %1, align 8, !tbaa !13
  invoke void @_Z5usagePKcR16BucketSimOptionsb(ptr noundef %179, ptr noundef nonnull align 8 dereferenceable(72) %2, i1 noundef zeroext true)
          to label %180 unwind label %181

180:                                              ; preds = %178
  call void @exit(i32 noundef 1) #11
  unreachable

181:                                              ; preds = %178, %176, %170, %168, %166, %163
  %182 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %183 unwind label %184

183:                                              ; preds = %181, %160
  %.merged = phi { ptr, i32 } [ %.pn124, %160 ], [ %182, %181 ]
  resume { ptr, i32 } %.merged

184:                                              ; preds = %181
  %185 = landingpad { ptr, i32 }
          catch ptr null
  %186 = extractvalue { ptr, i32 } %185, 0
  call void @__clang_call_terminate(ptr %186) #11
  unreachable

187:                                              ; preds = %80
  unreachable
}

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

declare noundef i64 @_ZN4TPCE10strtoint64EPKc(ptr noundef) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

declare noundef i64 @_ZN4TPCE14timestrtoint64EPKc(ptr noundef) local_unnamed_addr #4

declare noundef double @_ZN4TPCE8strtodblEPKc(ptr noundef) local_unnamed_addr #4

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #5 align 2

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #1

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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


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