; LLVM IR from fritzsedlazeck/SURVIVOR :: src/convert (Convert_Bionano)

; 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::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" }
%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.10 }
%union.anon.10 = type { i32 }
%struct.strvcfentry = type <{ %"class.std::__cxx11::basic_string", %struct.strcoordinate, %struct.strcoordinate, i16, [6 x i8], %"class.std::map", i32, i32, %"class.std::vector", %"struct.std::pair", [2 x i8], %"struct.std::pair.6", [4 x i8], %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"struct.std::pair.8", %"struct.std::pair.6", %"struct.std::pair.6", i32, [4 x i8] }>
%struct.strcoordinate = type { i32, %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i8, i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.std::pair.8" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"struct.std::pair.6" = type { i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [38 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i16 @_Z14trans_type_bioNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) #0

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13parse_BionanoNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI11strvcfentrySaIS6_EE(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::basic_ifstream", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.strvcfentry, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca double, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  store i64 2000000, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %19 = load i64, ptr %5, align 8, !tbaa !9
  %20 = call noalias noundef nonnull ptr @_Znam(i64 noundef %19) #9
  store ptr %20, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 520, ptr %7) #8
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7)
  %21 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %7, ptr noundef %21, i32 noundef 8)
          to label %22 unwind label %37

22:                                               ; preds = %2
  %23 = load ptr, ptr %7, align 8, !tbaa !11
  %24 = getelementptr i8, ptr %23, i64 -24
  %25 = load i64, ptr %24, align 8
  %26 = getelementptr inbounds i8, ptr %7, i64 %25
  %27 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %26)
          to label %28 unwind label %37

28:                                               ; preds = %22
  br i1 %27, label %41, label %29

29:                                               ; preds = %28
  %30 = 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 %31 unwind label %37

31:                                               ; preds = %29
  %32 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  %33 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef %32)
          to label %34 unwind label %37

34:                                               ; preds = %31
  %35 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %36 unwind label %37

36:                                               ; preds = %34
  call void @exit(i32 noundef 0) #10
  unreachable

37:                                               ; preds = %351, %72, %66, %56, %45, %41, %34, %31, %29, %22, %2
  %38 = landingpad { ptr, i32 }
          cleanup
  %39 = extractvalue { ptr, i32 } %38, 0
  store ptr %39, ptr %8, align 8
  %40 = extractvalue { ptr, i32 } %38, 1
  store i32 %40, ptr %9, align 4
  br label %353

41:                                               ; preds = %28
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = load i64, ptr %5, align 8, !tbaa !9
  %44 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %42, i64 noundef %43)
          to label %45 unwind label %37

45:                                               ; preds = %41
  %46 = load ptr, ptr %6, align 8, !tbaa !5
  %47 = load i64, ptr %5, align 8, !tbaa !9
  %48 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %46, i64 noundef %47)
          to label %49 unwind label %37

49:                                               ; preds = %45
  br label %50

50:                                               ; preds = %70, %49
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = getelementptr inbounds i8, ptr %51, i64 0
  %53 = load i8, ptr %52, align 1, !tbaa !13
  %54 = sext i8 %53 to i32
  %55 = icmp eq i32 %54, 35
  br i1 %55, label %56, label %64

56:                                               ; preds = %50
  %57 = load ptr, ptr %7, align 8, !tbaa !11
  %58 = getelementptr i8, ptr %57, i64 -24
  %59 = load i64, ptr %58, align 8
  %60 = getelementptr inbounds i8, ptr %7, i64 %59
  %61 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %60)
          to label %62 unwind label %37

62:                                               ; preds = %56
  %63 = xor i1 %61, true
  br label %64

64:                                               ; preds = %62, %50
  %65 = phi i1 [ false, %50 ], [ %63, %62 ]
  br i1 %65, label %66, label %71

66:                                               ; preds = %64
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = load i64, ptr %5, align 8, !tbaa !9
  %69 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %67, i64 noundef %68)
          to label %70 unwind label %37

70:                                               ; preds = %66
  br label %50, !llvm.loop !14

71:                                               ; preds = %64
  br label %72

72:                                               ; preds = %344, %71
  %73 = load ptr, ptr %7, align 8, !tbaa !11
  %74 = getelementptr i8, ptr %73, i64 -24
  %75 = load i64, ptr %74, align 8
  %76 = getelementptr inbounds i8, ptr %7, i64 %75
  %77 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %76)
          to label %78 unwind label %37

78:                                               ; preds = %72
  %79 = xor i1 %77, true
  br i1 %79, label %80, label %351

80:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  store i32 0, ptr %10, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 424, ptr %11) #8
  invoke void @_ZN11strvcfentryC2Ev(ptr noundef nonnull align 8 dereferenceable(420) %11)
          to label %81 unwind label %103

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %82

82:                                               ; preds = %265, %81
  %83 = load i64, ptr %15, align 8, !tbaa !9
  %84 = load i64, ptr %5, align 8, !tbaa !9
  %85 = icmp ult i64 %83, %84
  br i1 %85, label %86, label %100

86:                                               ; preds = %82
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = load i64, ptr %15, align 8, !tbaa !9
  %89 = getelementptr inbounds i8, ptr %87, i64 %88
  %90 = load i8, ptr %89, align 1, !tbaa !13
  %91 = sext i8 %90 to i32
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %93, label %100

93:                                               ; preds = %86
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  %95 = load i64, ptr %15, align 8, !tbaa !9
  %96 = getelementptr inbounds i8, ptr %94, i64 %95
  %97 = load i8, ptr %96, align 1, !tbaa !13
  %98 = sext i8 %97 to i32
  %99 = icmp ne i32 %98, 10
  br label %100

100:                                              ; preds = %93, %86, %82
  %101 = phi i1 [ false, %86 ], [ false, %82 ], [ %99, %93 ]
  br i1 %101, label %107, label %102

102:                                              ; preds = %100
  store i32 6, ptr %16, align 4
  br label %268

103:                                              ; preds = %80
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %8, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %9, align 4
  br label %350

107:                                              ; preds = %100
  %108 = load i32, ptr %10, align 4, !tbaa !16
  %109 = icmp eq i32 %108, 2
  br i1 %109, label %110, label %130

110:                                              ; preds = %107
  %111 = load ptr, ptr %6, align 8, !tbaa !5
  %112 = load i64, ptr %15, align 8, !tbaa !9
  %113 = getelementptr inbounds i8, ptr %111, i64 %112
  %114 = load i8, ptr %113, align 1, !tbaa !13
  %115 = sext i8 %114 to i32
  %116 = icmp ne i32 %115, 9
  br i1 %116, label %117, label %130

117:                                              ; preds = %110
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = load i64, ptr %15, align 8, !tbaa !9
  %120 = getelementptr inbounds i8, ptr %118, i64 %119
  %121 = load i8, ptr %120, align 1, !tbaa !13
  %122 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %123 = getelementptr inbounds %struct.strcoordinate, ptr %122, i32 0, i32 1
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %123, i8 noundef signext %121)
          to label %125 unwind label %126

125:                                              ; preds = %117
  br label %130

126:                                              ; preds = %245, %227, %140, %117
  %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
  br label %269

130:                                              ; preds = %125, %110, %107
  %131 = load i32, ptr %10, align 4, !tbaa !16
  %132 = icmp eq i32 %131, 3
  br i1 %132, label %133, label %149

133:                                              ; preds = %130
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = load i64, ptr %15, align 8, !tbaa !9
  %136 = getelementptr inbounds i8, ptr %134, i64 %135
  %137 = load i8, ptr %136, align 1, !tbaa !13
  %138 = sext i8 %137 to i32
  %139 = icmp ne i32 %138, 9
  br i1 %139, label %140, label %149

140:                                              ; preds = %133
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = load i64, ptr %15, align 8, !tbaa !9
  %143 = getelementptr inbounds i8, ptr %141, i64 %142
  %144 = load i8, ptr %143, align 1, !tbaa !13
  %145 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %146 = getelementptr inbounds %struct.strcoordinate, ptr %145, i32 0, i32 1
  %147 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %146, i8 noundef signext %144)
          to label %148 unwind label %126

148:                                              ; preds = %140
  br label %149

149:                                              ; preds = %148, %133, %130
  %150 = load i32, ptr %10, align 4, !tbaa !16
  %151 = icmp eq i32 %150, 4
  br i1 %151, label %152, label %165

152:                                              ; preds = %149
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  %154 = load i64, ptr %15, align 8, !tbaa !9
  %155 = sub i64 %154, 1
  %156 = getelementptr inbounds i8, ptr %153, i64 %155
  %157 = load i8, ptr %156, align 1, !tbaa !13
  %158 = sext i8 %157 to i32
  %159 = icmp eq i32 %158, 9
  br i1 %159, label %160, label %165

160:                                              ; preds = %152
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = load i64, ptr %15, align 8, !tbaa !9
  %163 = getelementptr inbounds i8, ptr %161, i64 %162
  %164 = call i32 @atoi(ptr noundef %163) #11
  store i32 %164, ptr %13, align 4, !tbaa !16
  br label %165

165:                                              ; preds = %160, %152, %149
  %166 = load i32, ptr %10, align 4, !tbaa !16
  %167 = icmp eq i32 %166, 5
  br i1 %167, label %168, label %181

168:                                              ; preds = %165
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = load i64, ptr %15, align 8, !tbaa !9
  %171 = sub i64 %170, 1
  %172 = getelementptr inbounds i8, ptr %169, i64 %171
  %173 = load i8, ptr %172, align 1, !tbaa !13
  %174 = sext i8 %173 to i32
  %175 = icmp eq i32 %174, 9
  br i1 %175, label %176, label %181

176:                                              ; preds = %168
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = load i64, ptr %15, align 8, !tbaa !9
  %179 = getelementptr inbounds i8, ptr %177, i64 %178
  %180 = call i32 @atoi(ptr noundef %179) #11
  store i32 %180, ptr %14, align 4, !tbaa !16
  br label %181

181:                                              ; preds = %176, %168, %165
  %182 = load i32, ptr %10, align 4, !tbaa !16
  %183 = icmp eq i32 %182, 6
  br i1 %183, label %184, label %199

184:                                              ; preds = %181
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = load i64, ptr %15, align 8, !tbaa !9
  %187 = sub i64 %186, 1
  %188 = getelementptr inbounds i8, ptr %185, i64 %187
  %189 = load i8, ptr %188, align 1, !tbaa !13
  %190 = sext i8 %189 to i32
  %191 = icmp eq i32 %190, 9
  br i1 %191, label %192, label %199

192:                                              ; preds = %184
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = load i64, ptr %15, align 8, !tbaa !9
  %195 = getelementptr inbounds i8, ptr %193, i64 %194
  %196 = call i32 @atoi(ptr noundef %195) #11
  %197 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %198 = getelementptr inbounds %struct.strcoordinate, ptr %197, i32 0, i32 0
  store i32 %196, ptr %198, align 8, !tbaa !18
  br label %199

199:                                              ; preds = %192, %184, %181
  %200 = load i32, ptr %10, align 4, !tbaa !16
  %201 = icmp eq i32 %200, 7
  br i1 %201, label %202, label %217

202:                                              ; preds = %199
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = load i64, ptr %15, align 8, !tbaa !9
  %205 = sub i64 %204, 1
  %206 = getelementptr inbounds i8, ptr %203, i64 %205
  %207 = load i8, ptr %206, align 1, !tbaa !13
  %208 = sext i8 %207 to i32
  %209 = icmp eq i32 %208, 9
  br i1 %209, label %210, label %217

210:                                              ; preds = %202
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = load i64, ptr %15, align 8, !tbaa !9
  %213 = getelementptr inbounds i8, ptr %211, i64 %212
  %214 = call i32 @atoi(ptr noundef %213) #11
  %215 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %216 = getelementptr inbounds %struct.strcoordinate, ptr %215, i32 0, i32 0
  store i32 %214, ptr %216, align 8, !tbaa !41
  br label %217

217:                                              ; preds = %210, %202, %199
  %218 = load i32, ptr %10, align 4, !tbaa !16
  %219 = icmp eq i32 %218, 9
  br i1 %219, label %220, label %234

220:                                              ; preds = %217
  %221 = load ptr, ptr %6, align 8, !tbaa !5
  %222 = load i64, ptr %15, align 8, !tbaa !9
  %223 = getelementptr inbounds i8, ptr %221, i64 %222
  %224 = load i8, ptr %223, align 1, !tbaa !13
  %225 = sext i8 %224 to i32
  %226 = icmp ne i32 %225, 9
  br i1 %226, label %227, label %234

227:                                              ; preds = %220
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = load i64, ptr %15, align 8, !tbaa !9
  %230 = getelementptr inbounds i8, ptr %228, i64 %229
  %231 = load i8, ptr %230, align 1, !tbaa !13
  %232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 noundef signext %231)
          to label %233 unwind label %126

233:                                              ; preds = %227
  br label %234

234:                                              ; preds = %233, %220, %217
  %235 = load i32, ptr %10, align 4, !tbaa !16
  %236 = icmp eq i32 %235, 10
  br i1 %236, label %237, label %254

237:                                              ; preds = %234
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  %239 = load i64, ptr %15, align 8, !tbaa !9
  %240 = sub i64 %239, 1
  %241 = getelementptr inbounds i8, ptr %238, i64 %240
  %242 = load i8, ptr %241, align 1, !tbaa !13
  %243 = sext i8 %242 to i32
  %244 = icmp eq i32 %243, 9
  br i1 %244, label %245, label %254

245:                                              ; preds = %237
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %246 unwind label %126

246:                                              ; preds = %245
  %247 = invoke noundef signext i16 @_Z14trans_type_bioNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %17)
          to label %248 unwind label %250

248:                                              ; preds = %246
  %249 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 3
  store i16 %247, ptr %249, align 8, !tbaa !42
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  store i32 6, ptr %16, align 4
  br label %268

250:                                              ; preds = %246
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %8, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %269

254:                                              ; preds = %237, %234
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = load i64, ptr %15, align 8, !tbaa !9
  %257 = getelementptr inbounds i8, ptr %255, i64 %256
  %258 = load i8, ptr %257, align 1, !tbaa !13
  %259 = sext i8 %258 to i32
  %260 = icmp eq i32 %259, 9
  br i1 %260, label %261, label %264

261:                                              ; preds = %254
  %262 = load i32, ptr %10, align 4, !tbaa !16
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %10, align 4, !tbaa !16
  br label %264

264:                                              ; preds = %261, %254
  br label %265

265:                                              ; preds = %264
  %266 = load i64, ptr %15, align 8, !tbaa !9
  %267 = add i64 %266, 1
  store i64 %267, ptr %15, align 8, !tbaa !9
  br label %82, !llvm.loop !43

268:                                              ; preds = %248, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %270

269:                                              ; preds = %250, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %349

270:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %271 = load i32, ptr %14, align 4, !tbaa !16
  %272 = load i32, ptr %13, align 4, !tbaa !16
  %273 = sub nsw i32 %271, %272
  %274 = sdiv i32 %273, 2
  %275 = sitofp i32 %274 to double
  store double %275, ptr %18, align 8, !tbaa !44
  %276 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 3
  %277 = load i16, ptr %276, align 8, !tbaa !42
  %278 = sext i16 %277 to i32
  %279 = icmp eq i32 %278, 0
  br i1 %279, label %280, label %307

280:                                              ; preds = %270
  %281 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %282 = getelementptr inbounds %struct.strcoordinate, ptr %281, i32 0, i32 0
  %283 = load i32, ptr %282, align 8, !tbaa !18
  %284 = sitofp i32 %283 to double
  %285 = load double, ptr %18, align 8, !tbaa !44
  %286 = fadd double %284, %285
  %287 = fptosi double %286 to i32
  %288 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %289 = getelementptr inbounds %struct.strcoordinate, ptr %288, i32 0, i32 0
  store i32 %287, ptr %289, align 8, !tbaa !18
  %290 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %291 = getelementptr inbounds %struct.strcoordinate, ptr %290, i32 0, i32 0
  %292 = load i32, ptr %291, align 8, !tbaa !41
  %293 = sitofp i32 %292 to double
  %294 = load double, ptr %18, align 8, !tbaa !44
  %295 = fsub double %293, %294
  %296 = fptosi double %295 to i32
  %297 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %298 = getelementptr inbounds %struct.strcoordinate, ptr %297, i32 0, i32 0
  store i32 %296, ptr %298, align 8, !tbaa !41
  %299 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %300 = getelementptr inbounds %struct.strcoordinate, ptr %299, i32 0, i32 0
  %301 = load i32, ptr %300, align 8, !tbaa !41
  %302 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %303 = getelementptr inbounds %struct.strcoordinate, ptr %302, i32 0, i32 0
  %304 = load i32, ptr %303, align 8, !tbaa !18
  %305 = sub nsw i32 %301, %304
  %306 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 14
  store i32 %305, ptr %306, align 8, !tbaa !45
  br label %338

307:                                              ; preds = %270
  %308 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 3
  %309 = load i16, ptr %308, align 8, !tbaa !42
  %310 = sext i16 %309 to i32
  %311 = icmp eq i32 %310, 4
  br i1 %311, label %312, label %337

312:                                              ; preds = %307
  %313 = load i32, ptr %13, align 4, !tbaa !16
  %314 = load i32, ptr %14, align 4, !tbaa !16
  %315 = sub nsw i32 %313, %314
  %316 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %317 = getelementptr inbounds %struct.strcoordinate, ptr %316, i32 0, i32 0
  %318 = load i32, ptr %317, align 8, !tbaa !41
  %319 = add nsw i32 %315, %318
  %320 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %321 = getelementptr inbounds %struct.strcoordinate, ptr %320, i32 0, i32 0
  %322 = load i32, ptr %321, align 8, !tbaa !18
  %323 = sub nsw i32 %319, %322
  %324 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 14
  store i32 %323, ptr %324, align 8, !tbaa !45
  %325 = load i32, ptr %14, align 4, !tbaa !16
  %326 = load i32, ptr %13, align 4, !tbaa !16
  %327 = add nsw i32 %325, %326
  %328 = sdiv i32 %327, 2
  %329 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %330 = getelementptr inbounds %struct.strcoordinate, ptr %329, i32 0, i32 0
  store i32 %328, ptr %330, align 8, !tbaa !18
  %331 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 1
  %332 = getelementptr inbounds %struct.strcoordinate, ptr %331, i32 0, i32 0
  %333 = load i32, ptr %332, align 8, !tbaa !18
  %334 = add nsw i32 %333, 1
  %335 = getelementptr inbounds %struct.strvcfentry, ptr %11, i32 0, i32 2
  %336 = getelementptr inbounds %struct.strcoordinate, ptr %335, i32 0, i32 0
  store i32 %334, ptr %336, align 8, !tbaa !41
  br label %337

337:                                              ; preds = %312, %307
  br label %338

338:                                              ; preds = %337, %280
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNSt6vectorI11strvcfentrySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %339, ptr noundef nonnull align 8 dereferenceable(420) %11)
          to label %340 unwind label %345

340:                                              ; preds = %338
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = load i64, ptr %5, align 8, !tbaa !9
  %343 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %341, i64 noundef %342)
          to label %344 unwind label %345

344:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420) %11) #8
  call void @llvm.lifetime.end.p0(i64 424, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %72, !llvm.loop !46

345:                                              ; preds = %340, %338
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %8, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %349

349:                                              ; preds = %345, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420) %11) #8
  br label %350

350:                                              ; preds = %349, %103
  call void @llvm.lifetime.end.p0(i64 424, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %353

351:                                              ; preds = %78
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %7)
          to label %352 unwind label %37

352:                                              ; preds = %351
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7) #8
  call void @llvm.lifetime.end.p0(i64 520, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  ret void

353:                                              ; preds = %350, %37
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7) #8
  call void @llvm.lifetime.end.p0(i64 520, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %354

354:                                              ; preds = %353
  %355 = load ptr, ptr %8, align 8
  %356 = load i32, ptr %9, align 4
  %357 = insertvalue { ptr, i32 } poison, ptr %355, 0
  %358 = insertvalue { ptr, i32 } %357, i32 %356, 1
  resume { ptr, i32 } %358
}

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11strvcfentryC2Ev(ptr noundef nonnull align 8 dereferenceable(420)) unnamed_addr #2 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 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 = { 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 = { 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(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 = { 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 #6 = { inlinehint mustprogress nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { noreturn nounwind }
attributes #11 = { nounwind willreturn memory(read) }

!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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !17, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = !{!19, !17, i64 32}
!19 = !{!"_ZTS11strvcfentry", !20, i64 0, !22, i64 32, !22, i64 72, !23, i64 112, !24, i64 120, !17, i64 168, !17, i64 172, !32, i64 176, !36, i64 200, !38, i64 204, !20, i64 216, !17, i64 248, !20, i64 256, !39, i64 288, !20, i64 296, !17, i64 328, !40, i64 336, !38, i64 400, !38, i64 408, !17, i64 416}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !10, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!22 = !{!"_ZTS13strcoordinate", !17, i64 0, !20, i64 8}
!23 = !{!"short", !7, i64 0}
!24 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !27, i64 0, !29, i64 8}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !10, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!32 = !{!"_ZTSSt6vectorIiSaIiEE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSSt4pairIbbE", !37, i64 0, !37, i64 1}
!37 = !{!"bool", !7, i64 0}
!38 = !{!"_ZTSSt4pairIiiE", !17, i64 0, !17, i64 4}
!39 = !{!"double", !7, i64 0}
!40 = !{!"_ZTSSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E", !20, i64 0, !20, i64 32}
!41 = !{!19, !17, i64 72}
!42 = !{!19, !23, i64 112}
!43 = distinct !{!43, !15}
!44 = !{!39, !39, i64 0}
!45 = !{!19, !17, i64 248}
!46 = distinct !{!46, !15}


; 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::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" }
%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.10 }
%union.anon.10 = type { i32 }
%struct.strvcfentry = type <{ %"class.std::__cxx11::basic_string", %struct.strcoordinate, %struct.strcoordinate, i16, [6 x i8], %"class.std::map", i32, i32, %"class.std::vector", %"struct.std::pair", [2 x i8], %"struct.std::pair.6", [4 x i8], %"class.std::__cxx11::basic_string", i32, [4 x i8], %"class.std::__cxx11::basic_string", double, %"class.std::__cxx11::basic_string", i32, [4 x i8], %"struct.std::pair.8", %"struct.std::pair.6", %"struct.std::pair.6", i32, [4 x i8] }>
%struct.strcoordinate = type { i32, %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i8, i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.std::pair.8" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"struct.std::pair.6" = type { i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [38 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i16 @_Z14trans_type_bioNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) local_unnamed_addr #0

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z13parse_BionanoNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI11strvcfentrySaIS6_EE(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::basic_ifstream", align 8
  %4 = alloca %struct.strvcfentry, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = tail call noalias noundef nonnull dereferenceable(2000000) ptr @_Znam(i64 noundef 2000000) #8
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %3) #9
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3)
  %8 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #9
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %3, ptr noundef %8, i32 noundef 8)
          to label %9 unwind label %.loopexit.split-lp108.loopexit.split-lp

9:                                                ; preds = %2
  %10 = load ptr, ptr %3, align 8, !tbaa !5
  %11 = getelementptr i8, ptr %10, i64 -24
  %12 = load i64, ptr %11, align 8
  %13 = getelementptr inbounds i8, ptr %3, i64 %12
  %14 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %13)
  br i1 %14, label %23, label %15

15:                                               ; preds = %9
  %16 = 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 %17 unwind label %.loopexit.split-lp108.loopexit.split-lp

17:                                               ; preds = %15
  %18 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #9
  %19 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %18)
          to label %20 unwind label %.loopexit.split-lp108.loopexit.split-lp

20:                                               ; preds = %17
  %21 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %22 unwind label %.loopexit.split-lp108.loopexit.split-lp

22:                                               ; preds = %20
  call void @exit(i32 noundef 0) #10
  unreachable

.loopexit107:                                     ; preds = %44
  %lpad.loopexit109 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp108

.loopexit.split-lp108.loopexit:                   ; preds = %36, %29
  %lpad.loopexit112 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp108

.loopexit.split-lp108.loopexit.split-lp:          ; preds = %129, %25, %23, %20, %17, %15, %2
  %lpad.loopexit.split-lp113 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp108

23:                                               ; preds = %9
  %24 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %7, i64 noundef 2000000)
          to label %25 unwind label %.loopexit.split-lp108.loopexit.split-lp

25:                                               ; preds = %23
  %26 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %7, i64 noundef 2000000)
          to label %.preheader unwind label %.loopexit.split-lp108.loopexit.split-lp

.preheader:                                       ; preds = %25, %36
  %27 = load i8, ptr %7, align 1, !tbaa !8
  %28 = icmp eq i8 %27, 35
  br i1 %28, label %29, label %.critedge

29:                                               ; preds = %.preheader
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr i8, ptr %30, i64 -24
  %32 = load i64, ptr %31, align 8
  %33 = getelementptr inbounds i8, ptr %3, i64 %32
  %34 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %33)
          to label %35 unwind label %.loopexit.split-lp108.loopexit

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

36:                                               ; preds = %35
  %37 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %7, i64 noundef 2000000)
          to label %.preheader unwind label %.loopexit.split-lp108.loopexit, !llvm.loop !10

.critedge:                                        ; preds = %.preheader, %35
  %38 = getelementptr inbounds i8, ptr %4, i64 40
  %39 = getelementptr inbounds i8, ptr %4, i64 72
  %40 = getelementptr inbounds i8, ptr %4, i64 32
  %41 = getelementptr inbounds i8, ptr %4, i64 80
  %42 = getelementptr inbounds i8, ptr %4, i64 112
  %43 = getelementptr inbounds i8, ptr %4, i64 248
  br label %44

44:                                               ; preds = %124, %.critedge
  %45 = load ptr, ptr %3, align 8, !tbaa !5
  %46 = getelementptr i8, ptr %45, i64 -24
  %47 = load i64, ptr %46, align 8
  %48 = getelementptr inbounds i8, ptr %3, i64 %47
  %49 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %48)
          to label %50 unwind label %.loopexit107

50:                                               ; preds = %44
  br i1 %49, label %129, label %51

51:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 424, ptr nonnull %4) #9
  invoke void @_ZN11strvcfentryC2Ev(ptr noundef nonnull align 8 dereferenceable(420) %4)
          to label %52 unwind label %56

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br label %53

53:                                               ; preds = %52, %.thread99
  %.070124 = phi i64 [ 0, %52 ], [ %102, %.thread99 ]
  %.071123 = phi i32 [ 0, %52 ], [ %.172103, %.thread99 ]
  %.074122 = phi i32 [ 0, %52 ], [ %.17597102, %.thread99 ]
  %.077121 = phi i32 [ 0, %52 ], [ %spec.select, %.thread99 ]
  %54 = getelementptr inbounds i8, ptr %7, i64 %.070124
  %55 = load i8, ptr %54, align 1, !tbaa !8
  switch i8 %55, label %58 [
    i8 0, label %.critedge2
    i8 10, label %.critedge2
  ]

56:                                               ; preds = %51
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %128

58:                                               ; preds = %53
  %59 = icmp ne i32 %.077121, 2
  %.not86 = icmp eq i8 %55, 9
  %or.cond = or i1 %59, %.not86
  br i1 %or.cond, label %62, label %.invoke

.invoke:                                          ; preds = %58, %88, %63
  %60 = phi ptr [ %41, %63 ], [ %5, %88 ], [ %38, %58 ]
  %61 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %60, i8 noundef signext %55)
          to label %.thread99 unwind label %.loopexit

.loopexit:                                        ; preds = %.invoke
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %127

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

62:                                               ; preds = %58
  switch i32 %.077121, label %.thread99 [
    i32 3, label %63
    i32 4, label %64
    i32 5, label %70
    i32 6, label %76
    i32 7, label %82
    i32 9, label %88
    i32 10, label %89
  ]

63:                                               ; preds = %62
  br i1 %.not86, label %.thread99, label %.invoke

64:                                               ; preds = %62
  %65 = getelementptr i8, ptr %54, i64 -1
  %66 = load i8, ptr %65, align 1, !tbaa !8
  %67 = icmp eq i8 %66, 9
  br i1 %67, label %68, label %.thread99

68:                                               ; preds = %64
  %69 = call i32 @atoi(ptr nocapture noundef %54) #11
  br label %.thread99

70:                                               ; preds = %62
  %71 = getelementptr i8, ptr %54, i64 -1
  %72 = load i8, ptr %71, align 1, !tbaa !8
  %73 = icmp eq i8 %72, 9
  br i1 %73, label %74, label %.thread99

74:                                               ; preds = %70
  %75 = call i32 @atoi(ptr nocapture noundef %54) #11
  br label %.thread99

76:                                               ; preds = %62
  %77 = getelementptr i8, ptr %54, i64 -1
  %78 = load i8, ptr %77, align 1, !tbaa !8
  %79 = icmp eq i8 %78, 9
  br i1 %79, label %80, label %.thread99

80:                                               ; preds = %76
  %81 = call i32 @atoi(ptr nocapture noundef %54) #11
  store i32 %81, ptr %40, align 8, !tbaa !12
  br label %.thread99

82:                                               ; preds = %62
  %83 = getelementptr i8, ptr %54, i64 -1
  %84 = load i8, ptr %83, align 1, !tbaa !8
  %85 = icmp eq i8 %84, 9
  br i1 %85, label %86, label %.thread99

86:                                               ; preds = %82
  %87 = call i32 @atoi(ptr nocapture noundef %54) #11
  store i32 %87, ptr %39, align 8, !tbaa !38
  br label %.thread99

88:                                               ; preds = %62
  br i1 %.not86, label %.thread99, label %.invoke

89:                                               ; preds = %62
  %90 = getelementptr i8, ptr %54, i64 -1
  %91 = load i8, ptr %90, align 1, !tbaa !8
  %92 = icmp eq i8 %91, 9
  br i1 %92, label %93, label %.thread99

93:                                               ; preds = %89
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %94 unwind label %.loopexit.split-lp

94:                                               ; preds = %93
  %95 = invoke noundef signext i16 @_Z14trans_type_bioNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %6)
          to label %96 unwind label %97

96:                                               ; preds = %94
  store i16 %95, ptr %42, align 8, !tbaa !39
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %.critedge2

97:                                               ; preds = %94
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %127

.thread99:                                        ; preds = %.invoke, %62, %63, %68, %64, %70, %74, %88, %82, %86, %76, %80, %89
  %.172103 = phi i32 [ %.071123, %89 ], [ %.071123, %80 ], [ %.071123, %76 ], [ %.071123, %86 ], [ %.071123, %82 ], [ %.071123, %88 ], [ %.071123, %70 ], [ %75, %74 ], [ %.071123, %64 ], [ %.071123, %68 ], [ %.071123, %63 ], [ %.071123, %62 ], [ %.071123, %.invoke ]
  %.17597102 = phi i32 [ %.074122, %89 ], [ %.074122, %80 ], [ %.074122, %76 ], [ %.074122, %86 ], [ %.074122, %82 ], [ %.074122, %88 ], [ %.074122, %70 ], [ %.074122, %74 ], [ %.074122, %64 ], [ %69, %68 ], [ %.074122, %63 ], [ %.074122, %62 ], [ %.074122, %.invoke ]
  %99 = load i8, ptr %54, align 1, !tbaa !8
  %100 = icmp eq i8 %99, 9
  %101 = zext i1 %100 to i32
  %spec.select = add nuw nsw i32 %.077121, %101
  %102 = add nuw nsw i64 %.070124, 1
  %exitcond.not = icmp eq i64 %102, 2000000
  br i1 %exitcond.not, label %.critedge2, label %53, !llvm.loop !40

.critedge2:                                       ; preds = %.thread99, %53, %53, %96
  %.074120 = phi i32 [ %.074122, %96 ], [ %.074122, %53 ], [ %.074122, %53 ], [ %.17597102, %.thread99 ]
  %.071117 = phi i32 [ %.071123, %96 ], [ %.071123, %53 ], [ %.071123, %53 ], [ %.172103, %.thread99 ]
  %103 = load i16, ptr %42, align 8, !tbaa !39
  switch i16 %103, label %121 [
    i16 0, label %104
    i16 4, label %112
  ]

104:                                              ; preds = %.critedge2
  %105 = sub nsw i32 %.071117, %.074120
  %106 = sdiv i32 %105, 2
  %107 = load i32, ptr %40, align 8, !tbaa !12
  %108 = add i32 %106, %107
  store i32 %108, ptr %40, align 8, !tbaa !12
  %109 = load i32, ptr %39, align 8, !tbaa !38
  %110 = sub i32 %109, %106
  store i32 %110, ptr %39, align 8, !tbaa !38
  %111 = sub nsw i32 %110, %108
  store i32 %111, ptr %43, align 8, !tbaa !41
  br label %121

112:                                              ; preds = %.critedge2
  %113 = load i32, ptr %39, align 8, !tbaa !38
  %114 = load i32, ptr %40, align 8, !tbaa !12
  %115 = add i32 %.074120, %113
  %116 = add i32 %.071117, %114
  %117 = sub i32 %115, %116
  store i32 %117, ptr %43, align 8, !tbaa !41
  %118 = add nsw i32 %.071117, %.074120
  %119 = sdiv i32 %118, 2
  store i32 %119, ptr %40, align 8, !tbaa !12
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr %39, align 8, !tbaa !38
  br label %121

121:                                              ; preds = %.critedge2, %112, %104
  invoke void @_ZNSt6vectorI11strvcfentrySaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(420) %4)
          to label %122 unwind label %125

122:                                              ; preds = %121
  %123 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi7getlineEPcl(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %7, i64 noundef 2000000)
          to label %124 unwind label %125

124:                                              ; preds = %122
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  call void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420) %4) #9
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %4) #9
  br label %44, !llvm.loop !42

125:                                              ; preds = %122, %121
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %127

127:                                              ; preds = %.loopexit, %.loopexit.split-lp, %97, %125
  %.pn90 = phi { ptr, i32 } [ %126, %125 ], [ %98, %97 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  call void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420) %4) #9
  br label %128

128:                                              ; preds = %127, %56
  %.pn90.pn = phi { ptr, i32 } [ %.pn90, %127 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 424, ptr nonnull %4) #9
  br label %.loopexit.split-lp108

129:                                              ; preds = %50
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %3)
          to label %130 unwind label %.loopexit.split-lp108.loopexit.split-lp

130:                                              ; preds = %129
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #9
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %3) #9
  ret void

.loopexit.split-lp108:                            ; preds = %.loopexit107, %.loopexit.split-lp108.loopexit.split-lp, %.loopexit.split-lp108.loopexit, %128
  %.pn93 = phi { ptr, i32 } [ %.pn90.pn, %128 ], [ %lpad.loopexit109, %.loopexit107 ], [ %lpad.loopexit112, %.loopexit.split-lp108.loopexit ], [ %lpad.loopexit.split-lp113, %.loopexit.split-lp108.loopexit.split-lp ]
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #9
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %3) #9
  resume { ptr, i32 } %.pn93
}

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN11strvcfentryC2Ev(ptr noundef nonnull align 8 dereferenceable(420)) unnamed_addr #2 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11strvcfentryD2Ev(ptr noundef nonnull align 8 dereferenceable(420)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #1 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 = { 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 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(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 = { 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 #6 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { nounwind willreturn memory(read) }

!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, !9, i64 0}
!9 = !{!"omnipotent char", !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !19, i64 32}
!13 = !{!"_ZTS11strvcfentry", !14, i64 0, !18, i64 32, !18, i64 72, !20, i64 112, !21, i64 120, !19, i64 168, !19, i64 172, !29, i64 176, !33, i64 200, !35, i64 204, !14, i64 216, !19, i64 248, !14, i64 256, !36, i64 288, !14, i64 296, !19, i64 328, !37, i64 336, !35, i64 400, !35, i64 408, !19, i64 416}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !17, i64 8, !9, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!16 = !{!"any pointer", !9, i64 0}
!17 = !{!"long", !9, i64 0}
!18 = !{!"_ZTS13strcoordinate", !19, i64 0, !14, i64 8}
!19 = !{!"int", !9, i64 0}
!20 = !{!"short", !9, i64 0}
!21 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !17, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !9, i64 0}
!29 = !{!"_ZTSSt6vectorIiSaIiEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!33 = !{!"_ZTSSt4pairIbbE", !34, i64 0, !34, i64 1}
!34 = !{!"bool", !9, i64 0}
!35 = !{!"_ZTSSt4pairIiiE", !19, i64 0, !19, i64 4}
!36 = !{!"double", !9, i64 0}
!37 = !{!"_ZTSSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_E", !14, i64 0, !14, i64 32}
!38 = !{!13, !19, i64 72}
!39 = !{!13, !20, i64 112}
!40 = distinct !{!40, !11}
!41 = !{!13, !19, i64 248}
!42 = distinct !{!42, !11}


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