; LLVM IR from jdlph/TransOMS :: src/utils.ll (ZN6miocsv6Reader6split3Ev)

; 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.miocsv::Row" = type { %"class.std::vector", ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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::istreambuf_iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator.8" = type { ptr }
%"class.std::allocator" = type { i8 }
%"class.miocsv::Reader" = type { ptr, %"class.std::basic_ifstream", i8, [7 x i8], %"class.std::istreambuf_iterator", %"class.std::istreambuf_iterator", %"class.miocsv::BaseReader.base" }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.6 }
%union.anon.6 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.miocsv::BaseReader.base" = type <{ ptr, i8, [7 x i8], i64, %"class.miocsv::Row", i8, i8 }>
%"class.miocsv::BaseReader" = type <{ ptr, i8, [7 x i8], i64, %"class.miocsv::Row", i8, i8, [6 x i8] }>

@_ZTIN6miocsv10BaseReader10InvalidRowE = external dso_local constant { ptr, ptr, ptr }, align 8

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6miocsv3Row6appendERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6miocsv3Row6appendEONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6miocsv6Reader6split3Ev(ptr dead_on_unwind noalias writable sret(%"class.miocsv::Row") align 8 %0, ptr noundef nonnull align 8 dereferenceable(568) %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca i8, align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::istreambuf_iterator", align 8
  %11 = alloca { ptr, i32 }, align 8
  %12 = alloca %"class.std::istreambuf_iterator", align 8
  %13 = alloca %"class.std::istreambuf_iterator", align 8
  %14 = alloca %"class.std::istreambuf_iterator", align 8
  %15 = alloca { ptr, i32 }, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::istreambuf_iterator", align 8
  %23 = alloca { ptr, i32 }, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %24 = load ptr, ptr %4, align 8
  store i1 false, ptr %5, align 1
  call void @_ZN6miocsv3RowC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  store i8 0, ptr %7, align 1, !tbaa !9
  br label %25

25:                                               ; preds = %224, %2
  br label %26

26:                                               ; preds = %25
  %27 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %28 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %27)
          to label %29 unwind label %118

29:                                               ; preds = %26
  %30 = sext i8 %28 to i32
  %31 = load ptr, ptr %24, align 8, !tbaa !11
  %32 = getelementptr i8, ptr %31, i64 -24
  %33 = load i64, ptr %32, align 8
  %34 = getelementptr inbounds i8, ptr %24, i64 %33
  %35 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %34, i32 0, i32 1
  %36 = load i8, ptr %35, align 8, !tbaa !13
  %37 = sext i8 %36 to i32
  %38 = icmp eq i32 %30, %37
  br i1 %38, label %39, label %135

39:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #6
  %40 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %41 = invoke { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12) %40, i32 noundef 0)
          to label %42 unwind label %122

42:                                               ; preds = %39
  store { ptr, i32 } %41, ptr %11, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %10, ptr align 8 %11, i64 12, i1 false)
  %43 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %10)
          to label %44 unwind label %122

44:                                               ; preds = %42
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 noundef signext %43)
          to label %45 unwind label %122

45:                                               ; preds = %44
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #6
  %46 = load i8, ptr %7, align 1, !tbaa !9, !range !21, !noundef !22
  %47 = trunc i8 %46 to i1
  %48 = zext i1 %47 to i32
  %49 = xor i32 %48, 1
  %50 = icmp ne i32 %49, 0
  %51 = zext i1 %50 to i8
  store i8 %51, ptr %7, align 1, !tbaa !9
  %52 = load i8, ptr %7, align 1, !tbaa !9, !range !21, !noundef !22
  %53 = trunc i8 %52 to i1
  br i1 %53, label %134, label %54

54:                                               ; preds = %45
  %55 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %56 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %55)
          to label %57 unwind label %118

57:                                               ; preds = %54
  %58 = sext i8 %56 to i32
  %59 = load ptr, ptr %24, align 8, !tbaa !11
  %60 = getelementptr i8, ptr %59, i64 -24
  %61 = load i64, ptr %60, align 8
  %62 = getelementptr inbounds i8, ptr %24, i64 %61
  %63 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %62, i32 0, i32 1
  %64 = load i8, ptr %63, align 8, !tbaa !13
  %65 = sext i8 %64 to i32
  %66 = icmp ne i32 %58, %65
  br i1 %66, label %67, label %134

67:                                               ; preds = %57
  %68 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %69 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %68)
          to label %70 unwind label %118

70:                                               ; preds = %67
  %71 = sext i8 %69 to i32
  %72 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 2
  %73 = load i8, ptr %72, align 8, !tbaa !23
  %74 = sext i8 %73 to i32
  %75 = icmp ne i32 %71, %74
  br i1 %75, label %76, label %134

76:                                               ; preds = %70
  %77 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %78 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %77)
          to label %79 unwind label %118

79:                                               ; preds = %76
  %80 = sext i8 %78 to i32
  %81 = load ptr, ptr %24, align 8, !tbaa !11
  %82 = getelementptr i8, ptr %81, i64 -24
  %83 = load i64, ptr %82, align 8
  %84 = getelementptr inbounds i8, ptr %24, i64 %83
  %85 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %84, i32 0, i32 6
  %86 = load i8, ptr %85, align 1, !tbaa !35
  %87 = sext i8 %86 to i32
  %88 = icmp ne i32 %80, %87
  br i1 %88, label %89, label %134

89:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #6
  %90 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %90, i64 16, i1 false)
  %91 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 8 %91, i64 16, i1 false)
  %92 = load ptr, ptr %24, align 8, !tbaa !11
  %93 = getelementptr i8, ptr %92, i64 -24
  %94 = load i64, ptr %93, align 8
  %95 = getelementptr inbounds i8, ptr %24, i64 %94
  %96 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %95, i32 0, i32 6
  %97 = getelementptr inbounds { ptr, i32 }, ptr %13, i32 0, i32 0
  %98 = load ptr, ptr %97, align 8
  %99 = getelementptr inbounds { ptr, i32 }, ptr %13, i32 0, i32 1
  %100 = load i32, ptr %99, align 8
  %101 = getelementptr inbounds { ptr, i32 }, ptr %14, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8
  %103 = getelementptr inbounds { ptr, i32 }, ptr %14, i32 0, i32 1
  %104 = load i32, ptr %103, align 8
  %105 = invoke { ptr, i32 } @_ZSt4findIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueESt19istreambuf_iteratorIS2_St11char_traitsIS2_EEE6__typeES6_S6_RKS2_(ptr %98, i32 %100, ptr %102, i32 %104, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %106 unwind label %126

106:                                              ; preds = %89
  store { ptr, i32 } %105, ptr %15, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %12, ptr align 8 %15, i64 12, i1 false)
  %107 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %108 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %107)
          to label %109 unwind label %126

109:                                              ; preds = %106
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %108, ptr align 8 %12, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  %110 = call ptr @__cxa_allocate_exception(i64 16) #6
  %111 = load ptr, ptr %24, align 8, !tbaa !11
  %112 = getelementptr i8, ptr %111, i64 -24
  %113 = load i64, ptr %112, align 8
  %114 = getelementptr inbounds i8, ptr %24, i64 %113
  %115 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %114, i32 0, i32 3
  %116 = load i64, ptr %115, align 8, !tbaa !36
  invoke void @_ZN6miocsv10BaseReader10InvalidRowC2EmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %110, i64 noundef %116, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %117 unwind label %130

117:                                              ; preds = %109
  invoke void @__cxa_throw(ptr %110, ptr @_ZTIN6miocsv10BaseReader10InvalidRowE, ptr @_ZNSt13runtime_errorD2Ev) #7
          to label %235 unwind label %118

118:                                              ; preds = %204, %200, %177, %152, %148, %147, %135, %117, %76, %67, %54, %26
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %8, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %9, align 4
  br label %227

122:                                              ; preds = %44, %42, %39
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %8, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #6
  br label %227

126:                                              ; preds = %106, %89
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %8, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  br label %227

130:                                              ; preds = %109
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %8, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %9, align 4
  call void @__cxa_free_exception(ptr %110) #6
  br label %227

134:                                              ; preds = %79, %70, %57, %45
  br label %224

135:                                              ; preds = %29
  %136 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %137 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %136)
          to label %138 unwind label %118

138:                                              ; preds = %135
  %139 = sext i8 %137 to i32
  %140 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 2
  %141 = load i8, ptr %140, align 8, !tbaa !23
  %142 = sext i8 %141 to i32
  %143 = icmp eq i32 %139, %142
  br i1 %143, label %144, label %152

144:                                              ; preds = %138
  %145 = load i8, ptr %7, align 1, !tbaa !9, !range !21, !noundef !22
  %146 = trunc i8 %145 to i1
  br i1 %146, label %152, label %147

147:                                              ; preds = %144
  invoke void @_ZN6miocsv3Row6appendERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %148 unwind label %118

148:                                              ; preds = %147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  %149 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %150 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %149)
          to label %151 unwind label %118

151:                                              ; preds = %148
  br label %223

152:                                              ; preds = %144, %138
  %153 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %154 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %153)
          to label %155 unwind label %118

155:                                              ; preds = %152
  %156 = sext i8 %154 to i32
  %157 = load ptr, ptr %24, align 8, !tbaa !11
  %158 = getelementptr i8, ptr %157, i64 -24
  %159 = load i64, ptr %158, align 8
  %160 = getelementptr inbounds i8, ptr %24, i64 %159
  %161 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %160, i32 0, i32 6
  %162 = load i8, ptr %161, align 1, !tbaa !35
  %163 = sext i8 %162 to i32
  %164 = icmp eq i32 %156, %163
  br i1 %164, label %165, label %204

165:                                              ; preds = %155
  %166 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  %167 = load i8, ptr %166, align 1, !tbaa !37
  %168 = sext i8 %167 to i32
  %169 = load ptr, ptr %24, align 8, !tbaa !11
  %170 = getelementptr i8, ptr %169, i64 -24
  %171 = load i64, ptr %170, align 8
  %172 = getelementptr inbounds i8, ptr %24, i64 %171
  %173 = getelementptr inbounds %"class.miocsv::BaseReader", ptr %172, i32 0, i32 5
  %174 = load i8, ptr %173, align 8, !tbaa !38
  %175 = sext i8 %174 to i32
  %176 = icmp ne i32 %168, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %165
  invoke void @_ZN6miocsv3Row6appendERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %178 unwind label %118

178:                                              ; preds = %177
  br label %200

179:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  %180 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  %181 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %17, i32 0, i32 0
  store ptr %180, ptr %181, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %182 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  %183 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %19, i32 0, i32 0
  store ptr %182, ptr %183, align 8
  %184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %184, i64 8, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  %185 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %17, i32 0, i32 0
  %186 = load ptr, ptr %185, align 8
  %187 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %18, i32 0, i32 0
  %188 = load ptr, ptr %187, align 8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr %186, ptr %188, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %189 unwind label %191

189:                                              ; preds = %179
  invoke void @_ZN6miocsv3Row6appendEONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %190 unwind label %195

190:                                              ; preds = %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %200

191:                                              ; preds = %179
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %8, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %9, align 4
  br label %199

195:                                              ; preds = %189
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %8, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %199

199:                                              ; preds = %195, %191
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %227

200:                                              ; preds = %190, %178
  %201 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %202 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %201)
          to label %203 unwind label %118

203:                                              ; preds = %200
  store i1 true, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %225

204:                                              ; preds = %155
  %205 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %206 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 5
  %207 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbRKSt19istreambuf_iteratorIT_T0_ES7_(ptr noundef nonnull align 8 dereferenceable(12) %205, ptr noundef nonnull align 8 dereferenceable(12) %206)
          to label %208 unwind label %118

208:                                              ; preds = %204
  br i1 %207, label %209, label %210

209:                                              ; preds = %208
  store i1 true, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %225

210:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  %211 = getelementptr inbounds %"class.miocsv::Reader", ptr %24, i32 0, i32 4
  %212 = invoke { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12) %211, i32 noundef 0)
          to label %213 unwind label %217

213:                                              ; preds = %210
  store { ptr, i32 } %212, ptr %23, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %23, i64 12, i1 false)
  %214 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
          to label %215 unwind label %217

215:                                              ; preds = %213
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 noundef signext %214)
          to label %216 unwind label %217

216:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br label %221

217:                                              ; preds = %215, %213, %210
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %8, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br label %227

221:                                              ; preds = %216
  br label %222

222:                                              ; preds = %221
  br label %223

223:                                              ; preds = %222, %151
  br label %224

224:                                              ; preds = %223, %134
  br label %25, !llvm.loop !40

225:                                              ; preds = %209, %203
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  %226 = load i1, ptr %5, align 1
  br i1 %226, label %229, label %228

227:                                              ; preds = %217, %199, %130, %126, %122, %118
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  call void @_ZN6miocsv3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #6
  br label %230

228:                                              ; preds = %225
  call void @_ZN6miocsv3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #6
  br label %229

229:                                              ; preds = %228, %225
  ret void

230:                                              ; preds = %227
  %231 = load ptr, ptr %8, align 8
  %232 = load i32, ptr %9, align 4
  %233 = insertvalue { ptr, i32 } poison, ptr %231, 0
  %234 = insertvalue { ptr, i32 } %233, i32 %232, 1
  resume { ptr, i32 } %234

235:                                              ; preds = %117
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12)) #3 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZSt4findIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueESt19istreambuf_iteratorIS2_St11char_traitsIS2_EEE6__typeES6_S6_RKS2_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbRKSt19istreambuf_iteratorIT_T0_ES7_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #4

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #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 = { 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 #6 = { nounwind }
attributes #7 = { noreturn }

!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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !7, i64 8}
!14 = !{!"_ZTSN6miocsv10BaseReaderE", !7, i64 8, !15, i64 16, !16, i64 24, !7, i64 56, !7, i64 57}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSN6miocsv3RowE", !17, i64 0, !6, i64 24}
!17 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!24, !7, i64 528}
!24 = !{!"_ZTSN6miocsv6ReaderE", !25, i64 8, !7, i64 528, !34, i64 536, !34, i64 552}
!25 = !{!"_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE", !26, i64 0, !27, i64 16}
!26 = !{!"_ZTSSi", !15, i64 8}
!27 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !28, i64 0, !7, i64 64, !30, i64 104, !31, i64 120, !32, i64 124, !32, i64 132, !32, i64 140, !6, i64 152, !15, i64 160, !10, i64 168, !10, i64 169, !10, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !10, i64 192, !6, i64 200, !6, i64 208, !15, i64 216, !6, i64 224, !6, i64 232}
!28 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !29, i64 56}
!29 = !{!"_ZTSSt6locale", !6, i64 0}
!30 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !10, i64 8}
!31 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!32 = !{!"_ZTS11__mbstate_t", !33, i64 0, !7, i64 4}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSSt19istreambuf_iteratorIcSt11char_traitsIcEE", !6, i64 0, !33, i64 8}
!35 = !{!14, !7, i64 57}
!36 = !{!14, !15, i64 16}
!37 = !{!7, !7, i64 0}
!38 = !{!14, !7, i64 56}
!39 = !{i64 0, i64 8, !5}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}


; 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.miocsv::Row" = type { %"class.std::vector", ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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::istreambuf_iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator.8" = type { ptr }
%"class.std::allocator" = type { i8 }

@_ZTIN6miocsv10BaseReader10InvalidRowE = external dso_local constant { ptr, ptr, ptr }, align 8

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6miocsv10BaseReader10InvalidRowC2EmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6miocsv6Reader6split3Ev(ptr dead_on_unwind noalias nonnull writable sret(%"class.miocsv::Row") align 8 %0, ptr noundef nonnull align 8 dereferenceable(568) %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::istreambuf_iterator", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::istreambuf_iterator", align 8
  tail call void @_ZN6miocsv3RowC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  %9 = getelementptr inbounds i8, ptr %1, i64 536
  %invariant.gep = getelementptr inbounds i8, ptr %1, i64 8
  %invariant.gep40 = getelementptr inbounds i8, ptr %1, i64 57
  %10 = getelementptr inbounds i8, ptr %1, i64 528
  %11 = getelementptr inbounds i8, ptr %1, i64 552
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8
  %.sroa.216.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8
  br label %.outer

.outer:                                           ; preds = %.outer.backedge, %2
  %.022.ph = phi i8 [ 0, %2 ], [ %.022.ph.be, %.outer.backedge ]
  %12 = trunc nuw i8 %.022.ph to i1
  br label %13

13:                                               ; preds = %.backedge, %.outer
  %14 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %15 unwind label %.loopexit.loopexit

15:                                               ; preds = %13
  %16 = load ptr, ptr %1, align 8, !tbaa !5
  %17 = getelementptr i8, ptr %16, i64 -24
  %18 = load i64, ptr %17, align 8
  %gep = getelementptr i8, ptr %invariant.gep, i64 %18
  %19 = load i8, ptr %gep, align 8, !tbaa !8
  %20 = icmp eq i8 %14, %19
  br i1 %20, label %21, label %70

21:                                               ; preds = %15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  %22 = invoke { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef 0)
          to label %23 unwind label %64

23:                                               ; preds = %21
  %.fca.0.extract13 = extractvalue { ptr, i32 } %22, 0
  %.fca.1.extract14 = extractvalue { ptr, i32 } %22, 1
  store ptr %.fca.0.extract13, ptr %4, align 8
  store i32 %.fca.1.extract14, ptr %.sroa.216.0..sroa_idx, align 8
  %24 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %4)
          to label %25 unwind label %64

25:                                               ; preds = %23
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 noundef signext %24)
          to label %26 unwind label %64

26:                                               ; preds = %25
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  %27 = and i8 %.022.ph, 1
  %28 = icmp eq i8 %27, 0
  %29 = xor i8 %27, 1
  br i1 %28, label %.outer.backedge, label %30

.outer.backedge:                                  ; preds = %26, %43, %39, %32
  %.022.ph.be = phi i8 [ %29, %32 ], [ %29, %39 ], [ %29, %43 ], [ 1, %26 ]
  br label %.outer, !llvm.loop !18

30:                                               ; preds = %26
  %31 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %32 unwind label %.loopexit.loopexit.split-lp

32:                                               ; preds = %30
  %33 = load ptr, ptr %1, align 8, !tbaa !5
  %34 = getelementptr i8, ptr %33, i64 -24
  %35 = load i64, ptr %34, align 8
  %gep43 = getelementptr i8, ptr %invariant.gep, i64 %35
  %36 = load i8, ptr %gep43, align 8, !tbaa !8
  %.not28 = icmp eq i8 %31, %36
  br i1 %.not28, label %.outer.backedge, label %37

37:                                               ; preds = %32
  %38 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %39 unwind label %.loopexit.loopexit.split-lp

39:                                               ; preds = %37
  %40 = load i8, ptr %10, align 8, !tbaa !20
  %.not29 = icmp eq i8 %38, %40
  br i1 %.not29, label %.outer.backedge, label %41

41:                                               ; preds = %39
  %42 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %43 unwind label %.loopexit.loopexit.split-lp

43:                                               ; preds = %41
  %44 = load ptr, ptr %1, align 8, !tbaa !5
  %45 = getelementptr i8, ptr %44, i64 -24
  %46 = load i64, ptr %45, align 8
  %47 = getelementptr inbounds i8, ptr %1, i64 %46
  %48 = getelementptr inbounds i8, ptr %47, i64 57
  %49 = load i8, ptr %48, align 1, !tbaa !33
  %.not30 = icmp eq i8 %42, %49
  br i1 %.not30, label %.outer.backedge, label %50

50:                                               ; preds = %43
  %51 = getelementptr inbounds i8, ptr %47, i64 57
  %.sroa.09.0.copyload = load ptr, ptr %9, align 8
  %.sroa.210.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 544
  %.sroa.210.0.copyload = load i32, ptr %.sroa.210.0..sroa_idx, align 8
  %.sroa.07.0.copyload = load ptr, ptr %11, align 8
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 560
  %.sroa.28.0.copyload = load i32, ptr %.sroa.28.0..sroa_idx, align 8
  %52 = invoke { ptr, i32 } @_ZSt4findIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueESt19istreambuf_iteratorIS2_St11char_traitsIS2_EEE6__typeES6_S6_RKS2_(ptr %.sroa.09.0.copyload, i32 %.sroa.210.0.copyload, ptr %.sroa.07.0.copyload, i32 %.sroa.28.0.copyload, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %53 unwind label %66

53:                                               ; preds = %50
  %54 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %55 unwind label %66

55:                                               ; preds = %53
  %.fca.1.extract4 = extractvalue { ptr, i32 } %52, 1
  %.fca.0.extract3 = extractvalue { ptr, i32 } %52, 0
  store ptr %.fca.0.extract3, ptr %54, align 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %54, i64 8
  store i32 %.fca.1.extract4, ptr %.sroa.5.0..sroa_idx, align 8
  %56 = call ptr @__cxa_allocate_exception(i64 16) #5
  %57 = load ptr, ptr %1, align 8, !tbaa !5
  %58 = getelementptr i8, ptr %57, i64 -24
  %59 = load i64, ptr %58, align 8
  %60 = getelementptr inbounds i8, ptr %1, i64 %59
  %61 = getelementptr inbounds i8, ptr %60, i64 16
  %62 = load i64, ptr %61, align 8, !tbaa !34
  invoke void @_ZN6miocsv10BaseReader10InvalidRowC2EmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %56, i64 noundef %62, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %63 unwind label %68

63:                                               ; preds = %55
  invoke void @__cxa_throw(ptr nonnull %56, ptr nonnull @_ZTIN6miocsv10BaseReader10InvalidRowE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
          to label %120 unwind label %.loopexit.split-lp

.loopexit.loopexit:                               ; preds = %109, %78, %76, %75, %70, %13
  %lpad.loopexit45 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.loopexit.loopexit.split-lp:                      ; preds = %41, %37, %30
  %lpad.loopexit.split-lp46 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

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

64:                                               ; preds = %25, %23, %21
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  br label %.loopexit

66:                                               ; preds = %53, %50
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

68:                                               ; preds = %55
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %56) #5
  br label %.loopexit

70:                                               ; preds = %15
  %71 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %72 unwind label %.loopexit.loopexit

72:                                               ; preds = %70
  %73 = load i8, ptr %10, align 8, !tbaa !20
  %74 = icmp eq i8 %71, %73
  %.not47 = xor i1 %74, true
  %brmerge = select i1 %.not47, i1 true, i1 %12
  br i1 %brmerge, label %78, label %75

75:                                               ; preds = %72
  invoke void @_ZN6miocsv3Row6appendERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %76 unwind label %.loopexit.loopexit

76:                                               ; preds = %75
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  %77 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %.backedge unwind label %.loopexit.loopexit

78:                                               ; preds = %72
  %79 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %80 unwind label %.loopexit.loopexit

80:                                               ; preds = %78
  %81 = load ptr, ptr %1, align 8, !tbaa !5
  %82 = getelementptr i8, ptr %81, i64 -24
  %83 = load i64, ptr %82, align 8
  %gep41 = getelementptr i8, ptr %invariant.gep40, i64 %83
  %84 = load i8, ptr %gep41, align 1, !tbaa !33
  %85 = icmp eq i8 %79, %84
  br i1 %85, label %86, label %109

86:                                               ; preds = %80
  %87 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  %88 = load i8, ptr %87, align 1, !tbaa !35
  %89 = load ptr, ptr %1, align 8, !tbaa !5
  %90 = getelementptr i8, ptr %89, i64 -24
  %91 = load i64, ptr %90, align 8
  %92 = getelementptr inbounds i8, ptr %1, i64 %91
  %93 = getelementptr inbounds i8, ptr %92, i64 56
  %94 = load i8, ptr %93, align 8, !tbaa !36
  %.not = icmp eq i8 %88, %94
  br i1 %.not, label %96, label %95

95:                                               ; preds = %86
  invoke void @_ZN6miocsv3Row6appendERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %107 unwind label %.loopexit.split-lp

96:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #5
  %97 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %98 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  store ptr %98, ptr %6, align 8
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %.sroa.01.0.copyload = load ptr, ptr %99, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr %97, ptr %.sroa.01.0.copyload, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %100 unwind label %102

100:                                              ; preds = %96
  invoke void @_ZN6miocsv3Row6appendEONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %101 unwind label %104

101:                                              ; preds = %100
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  br label %107

102:                                              ; preds = %96
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %106

104:                                              ; preds = %100
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #5
  br label %106

106:                                              ; preds = %104, %102
  %.pn = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #5
  br label %.loopexit

107:                                              ; preds = %95, %101
  %108 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %9)
          to label %.loopexit33 unwind label %.loopexit.split-lp

109:                                              ; preds = %80
  %110 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbRKSt19istreambuf_iteratorIT_T0_ES7_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %11)
          to label %111 unwind label %.loopexit.loopexit

111:                                              ; preds = %109
  br i1 %110, label %.loopexit33, label %112

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  %113 = invoke { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef 0)
          to label %114 unwind label %118

114:                                              ; preds = %112
  %.fca.0.extract = extractvalue { ptr, i32 } %113, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %113, 1
  store ptr %.fca.0.extract, ptr %8, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %115 = invoke noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12) %8)
          to label %116 unwind label %118

116:                                              ; preds = %114
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 noundef signext %115)
          to label %117 unwind label %118

117:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %.backedge

.backedge:                                        ; preds = %117, %76
  br label %13, !llvm.loop !18

118:                                              ; preds = %116, %114, %112
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %.loopexit

.loopexit33:                                      ; preds = %111, %107
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  ret void

.loopexit:                                        ; preds = %.loopexit.loopexit, %.loopexit.loopexit.split-lp, %.loopexit.split-lp, %118, %106, %68, %66, %64
  %.pn31 = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ], [ %65, %64 ], [ %.pn, %106 ], [ %119, %118 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit45, %.loopexit.loopexit ], [ %lpad.loopexit.split-lp46, %.loopexit.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #5
  call void @_ZN6miocsv3RowD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #5
  resume { ptr, i32 } %.pn31

120:                                              ; preds = %63
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEEdeEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEi(ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i32 } @_ZSt4findIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueESt19istreambuf_iteratorIS2_St11char_traitsIS2_EEE6__typeES6_S6_RKS2_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbRKSt19istreambuf_iteratorIT_T0_ES7_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3

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

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

!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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 8}
!9 = !{!"_ZTSN6miocsv10BaseReaderE", !10, i64 8, !11, i64 16, !12, i64 24, !10, i64 56, !10, i64 57}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!"long", !10, i64 0}
!12 = !{!"_ZTSN6miocsv3RowE", !13, i64 0, !17, i64 24}
!13 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !10, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!21, !10, i64 528}
!21 = !{!"_ZTSN6miocsv6ReaderE", !22, i64 8, !10, i64 528, !32, i64 536, !32, i64 552}
!22 = !{!"_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE", !23, i64 0, !24, i64 16}
!23 = !{!"_ZTSSi", !11, i64 8}
!24 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !25, i64 0, !10, i64 64, !27, i64 104, !29, i64 120, !30, i64 124, !30, i64 132, !30, i64 140, !17, i64 152, !11, i64 160, !28, i64 168, !28, i64 169, !28, i64 170, !10, i64 171, !17, i64 176, !17, i64 184, !28, i64 192, !17, i64 200, !17, i64 208, !11, i64 216, !17, i64 224, !17, i64 232}
!25 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !26, i64 56}
!26 = !{!"_ZTSSt6locale", !17, i64 0}
!27 = !{!"_ZTSSt12__basic_fileIcE", !17, i64 0, !28, i64 8}
!28 = !{!"bool", !10, i64 0}
!29 = !{!"_ZTSSt13_Ios_Openmode", !10, i64 0}
!30 = !{!"_ZTS11__mbstate_t", !31, i64 0, !10, i64 4}
!31 = !{!"int", !10, i64 0}
!32 = !{!"_ZTSSt19istreambuf_iteratorIcSt11char_traitsIcEE", !17, i64 0, !31, i64 8}
!33 = !{!9, !10, i64 57}
!34 = !{!9, !11, i64 16}
!35 = !{!10, !10, i64 0}
!36 = !{!9, !10, i64 56}
!37 = !{!17, !17, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass