; LLVM IR from bldeng/AASolver :: AndersonOpt/external/OpenMesh/Core/IO/writer (OMWriter)

; 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 }
%"struct.OpenMesh::IO::Enabler" = type { ptr }
%"class.OpenMesh::VectorT" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.OpenMesh::VectorT.18" = type { %"struct.std::array.19" }
%"struct.std::array.19" = type { [2 x float] }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl" }
%"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl" = type { %"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.OpenMesh::IO::OMFormat::Header" = type { [2 x i8], i8, i8, i32, i32, i32 }
%"struct.OpenMesh::IO::OMFormat::Chunk::Header" = type { i32 }
%"struct.OpenMesh::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.OpenMesh::VectorT.25" = type { %"struct.std::array.26" }
%"struct.std::array.26" = type { [3 x i8] }
%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: 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 dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO10_OMWriter_12write_binaryERSoRNS0_12BaseExporterENS0_7OptionsE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3) #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.OpenMesh::IO::Enabler", align 8
  %10 = alloca i64, align 8
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.OpenMesh::VectorT", align 4
  %18 = alloca %"class.OpenMesh::VectorT.18", align 4
  %19 = alloca %"class.std::vector.20", align 8
  %20 = alloca %"struct.OpenMesh::IO::OMFormat::Header", align 4
  %21 = alloca %"struct.OpenMesh::IO::OMFormat::Chunk::Header", align 4
  %22 = alloca %"class.OpenMesh::VectorT", align 4
  %23 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %24 = alloca { <2 x float>, float }, align 8
  %25 = alloca %"class.OpenMesh::VectorT", align 4
  %26 = alloca { <2 x float>, float }, align 4
  %27 = alloca %"class.OpenMesh::VectorT", align 4
  %28 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %29 = alloca { <2 x float>, float }, align 8
  %30 = alloca %"class.OpenMesh::VectorT", align 4
  %31 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %32 = alloca { <2 x float>, float }, align 8
  %33 = alloca %"class.OpenMesh::VectorT", align 4
  %34 = alloca { <2 x float>, float }, align 4
  %35 = alloca %"class.OpenMesh::VectorT", align 4
  %36 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %37 = alloca { <2 x float>, float }, align 8
  %38 = alloca %"class.OpenMesh::VectorT.25", align 1
  %39 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %40 = alloca %"class.OpenMesh::VectorT.25", align 1
  %41 = alloca i24, align 4
  %42 = alloca %"class.OpenMesh::VectorT.25", align 1
  %43 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %44 = alloca %"class.OpenMesh::VectorT.18", align 4
  %45 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %46 = alloca %"class.OpenMesh::VectorT.18", align 4
  %47 = alloca %"class.OpenMesh::VectorT.18", align 4
  %48 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %49 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i32, align 4
  %53 = alloca %"class.OpenMesh::VectorT", align 4
  %54 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %55 = alloca { <2 x float>, float }, align 8
  %56 = alloca %"class.OpenMesh::VectorT", align 4
  %57 = alloca { <2 x float>, float }, align 4
  %58 = alloca %"class.OpenMesh::VectorT", align 4
  %59 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %60 = alloca { <2 x float>, float }, align 8
  %61 = alloca %"class.OpenMesh::VectorT.25", align 1
  %62 = alloca %"class.OpenMesh::VectorT.25", align 1
  %63 = alloca i24, align 4
  %64 = alloca %"class.OpenMesh::VectorT.25", align 1
  %65 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %66 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %77 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #9
  %78 = call noundef nonnull align 8 dereferenceable(224) ptr @_Z5omlogv()
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEEC2ERS2_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(224) %78)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  store i64 0, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  %79 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 8)
          to label %80 unwind label %245

80:                                               ; preds = %4
  br i1 %79, label %85, label %81

81:                                               ; preds = %80
  %82 = invoke noundef i32 @_ZN8OpenMesh6Endian5localEv()
          to label %83 unwind label %245

83:                                               ; preds = %81
  %84 = icmp eq i32 %82, 2
  br label %85

85:                                               ; preds = %83, %80
  %86 = phi i1 [ true, %80 ], [ %84, %83 ]
  %87 = zext i1 %86 to i8
  store i8 %87, ptr %11, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #9
  invoke void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %17)
          to label %88 unwind label %249

88:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  invoke void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %18)
          to label %89 unwind label %253

89:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #9
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #9
  %90 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 0
  %91 = getelementptr inbounds [2 x i8], ptr %90, i64 0, i64 0
  store i8 79, ptr %91, align 4, !tbaa !13
  %92 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 0
  %93 = getelementptr inbounds [2 x i8], ptr %92, i64 0, i64 1
  store i8 77, ptr %93, align 1, !tbaa !13
  %94 = load ptr, ptr %7, align 8, !tbaa !5
  %95 = load ptr, ptr %94, align 8, !tbaa !14
  %96 = getelementptr inbounds ptr, ptr %95, i64 29
  %97 = load ptr, ptr %96, align 8
  %98 = invoke noundef zeroext i1 %97(ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %99 unwind label %257

99:                                               ; preds = %89
  %100 = zext i1 %98 to i64
  %101 = select i1 %98, i8 84, i8 80
  %102 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 1
  store i8 %101, ptr %102, align 2, !tbaa !16
  %103 = load i8, ptr @_ZN8OpenMesh2IO10_OMWriter_8version_E, align 1, !tbaa !13
  %104 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 2
  store i8 %103, ptr %104, align 1, !tbaa !19
  %105 = load ptr, ptr %7, align 8, !tbaa !5
  %106 = load ptr, ptr %105, align 8, !tbaa !14
  %107 = getelementptr inbounds ptr, ptr %106, i64 26
  %108 = load ptr, ptr %107, align 8
  %109 = invoke noundef i64 %108(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %110 unwind label %257

110:                                              ; preds = %99
  %111 = trunc i64 %109 to i32
  %112 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 3
  store i32 %111, ptr %112, align 4, !tbaa !20
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = load ptr, ptr %113, align 8, !tbaa !14
  %115 = getelementptr inbounds ptr, ptr %114, i64 27
  %116 = load ptr, ptr %115, align 8
  %117 = invoke noundef i64 %116(ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %118 unwind label %257

118:                                              ; preds = %110
  %119 = trunc i64 %117 to i32
  %120 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 4
  store i32 %119, ptr %120, align 4, !tbaa !21
  %121 = load ptr, ptr %7, align 8, !tbaa !5
  %122 = load ptr, ptr %121, align 8, !tbaa !14
  %123 = getelementptr inbounds ptr, ptr %122, i64 28
  %124 = load ptr, ptr %123, align 8
  %125 = invoke noundef i64 %124(ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %126 unwind label %257

126:                                              ; preds = %118
  %127 = trunc i64 %125 to i32
  %128 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 5
  store i32 %127, ptr %128, align 4, !tbaa !22
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  %130 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %131 = trunc i8 %130 to i1
  %132 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 4 dereferenceable(16) %20, i1 noundef zeroext %131)
          to label %133 unwind label %257

133:                                              ; preds = %126
  %134 = load i64, ptr %10, align 8, !tbaa !9
  %135 = add i64 %134, %132
  store i64 %135, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = load ptr, ptr %136, align 8, !tbaa !14
  %138 = getelementptr inbounds ptr, ptr %137, i64 26
  %139 = load ptr, ptr %138, align 8
  %140 = invoke noundef i64 %139(ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %141 unwind label %261

141:                                              ; preds = %133
  %142 = icmp ne i64 %140, 0
  br i1 %142, label %143, label %274

143:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 12, ptr %22) #9
  %144 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %23, i32 noundef 0)
          to label %145 unwind label %265

145:                                              ; preds = %143
  %146 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %23, i32 0, i32 0
  %147 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %146, i32 0, i32 0
  %148 = load i32, ptr %147, align 4
  %149 = load ptr, ptr %144, align 8, !tbaa !14
  %150 = getelementptr inbounds ptr, ptr %149, i64 2
  %151 = load ptr, ptr %150, align 8
  %152 = invoke { <2 x float>, float } %151(ptr noundef nonnull align 8 dereferenceable(8) %144, i32 %148)
          to label %153 unwind label %265

153:                                              ; preds = %145
  %154 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %22, i32 0, i32 0
  %155 = getelementptr inbounds %"struct.std::array", ptr %154, i32 0, i32 0
  store { <2 x float>, float } %152, ptr %24, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %155, ptr align 8 %24, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %22, i64 12, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #9
  %156 = load i32, ptr %21, align 4
  %157 = and i32 %156, -2
  %158 = or i32 %157, 0
  store i32 %158, ptr %21, align 4
  %159 = load i32, ptr %21, align 4
  %160 = and i32 %159, -3
  %161 = or i32 %160, 0
  store i32 %161, ptr %21, align 4
  %162 = load i32, ptr %21, align 4
  %163 = and i32 %162, -29
  %164 = or i32 %163, 0
  store i32 %164, ptr %21, align 4
  %165 = load i32, ptr %21, align 4
  %166 = and i32 %165, -481
  %167 = or i32 %166, 0
  store i32 %167, ptr %21, align 4
  %168 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 0)
          to label %169 unwind label %261

169:                                              ; preds = %153
  %170 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %168)
          to label %171 unwind label %261

171:                                              ; preds = %169
  %172 = zext i1 %170 to i32
  %173 = load i32, ptr %21, align 4
  %174 = and i32 %172, 1
  %175 = shl i32 %174, 9
  %176 = and i32 %173, -513
  %177 = or i32 %176, %175
  store i32 %177, ptr %21, align 4
  %178 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 0)
          to label %179 unwind label %261

179:                                              ; preds = %171
  %180 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %178)
          to label %181 unwind label %261

181:                                              ; preds = %179
  %182 = zext i1 %180 to i32
  %183 = load i32, ptr %21, align 4
  %184 = and i32 %182, 1
  %185 = shl i32 %184, 10
  %186 = and i32 %183, -1025
  %187 = or i32 %186, %185
  store i32 %187, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 4 %17, i64 12, i1 false), !tbaa.struct !25
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %25, i64 12, i1 false)
  %188 = getelementptr inbounds { <2 x float>, float }, ptr %26, i32 0, i32 0
  %189 = load <2 x float>, ptr %188, align 4
  %190 = getelementptr inbounds { <2 x float>, float }, ptr %26, i32 0, i32 1
  %191 = load float, ptr %190, align 4
  %192 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %189, float %191)
          to label %193 unwind label %261

193:                                              ; preds = %181
  %194 = load i32, ptr %21, align 4
  %195 = and i32 %192, 7
  %196 = shl i32 %195, 11
  %197 = and i32 %194, -14337
  %198 = or i32 %197, %196
  store i32 %198, ptr %21, align 4
  %199 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 0)
          to label %200 unwind label %261

200:                                              ; preds = %193
  %201 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %199)
          to label %202 unwind label %261

202:                                              ; preds = %200
  %203 = load i32, ptr %21, align 4
  %204 = and i32 %201, 3
  %205 = shl i32 %204, 14
  %206 = and i32 %203, -49153
  %207 = or i32 %206, %205
  store i32 %207, ptr %21, align 4
  %208 = load ptr, ptr %6, align 8, !tbaa !5
  %209 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %210 = trunc i8 %209 to i1
  %211 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %210)
          to label %212 unwind label %261

212:                                              ; preds = %202
  %213 = load i64, ptr %10, align 8, !tbaa !9
  %214 = add i64 %213, %211
  store i64 %214, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %215 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 3
  %216 = load i32, ptr %215, align 4, !tbaa !20
  store i32 %216, ptr %15, align 4, !tbaa !26
  br label %217

217:                                              ; preds = %242, %212
  %218 = load i32, ptr %14, align 4, !tbaa !26
  %219 = load i32, ptr %15, align 4, !tbaa !26
  %220 = icmp ult i32 %218, %219
  br i1 %220, label %221, label %273

221:                                              ; preds = %217
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %27) #9
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %28, i32 noundef %224)
          to label %225 unwind label %269

225:                                              ; preds = %221
  %226 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %28, i32 0, i32 0
  %227 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %226, i32 0, i32 0
  %228 = load i32, ptr %227, align 4
  %229 = load ptr, ptr %223, align 8, !tbaa !14
  %230 = getelementptr inbounds ptr, ptr %229, i64 2
  %231 = load ptr, ptr %230, align 8
  %232 = invoke { <2 x float>, float } %231(ptr noundef nonnull align 8 dereferenceable(8) %223, i32 %228)
          to label %233 unwind label %269

233:                                              ; preds = %225
  %234 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %27, i32 0, i32 0
  %235 = getelementptr inbounds %"struct.std::array", ptr %234, i32 0, i32 0
  store { <2 x float>, float } %232, ptr %29, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %235, ptr align 8 %29, i64 12, i1 false)
  %236 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %237 = trunc i8 %236 to i1
  %238 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull align 4 dereferenceable(12) %27, i1 noundef zeroext %237)
          to label %239 unwind label %269

239:                                              ; preds = %233
  %240 = load i64, ptr %10, align 8, !tbaa !9
  %241 = add i64 %240, %238
  store i64 %241, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #9
  br label %242

242:                                              ; preds = %239
  %243 = load i32, ptr %14, align 4, !tbaa !26
  %244 = add i32 %243, 1
  store i32 %244, ptr %14, align 4, !tbaa !26
  br label %217, !llvm.loop !27

245:                                              ; preds = %81, %4
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %12, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %13, align 4
  br label %1267

249:                                              ; preds = %85
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %12, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %13, align 4
  br label %1266

253:                                              ; preds = %88
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %12, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %13, align 4
  br label %1265

257:                                              ; preds = %126, %118, %110, %99, %89
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %12, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %13, align 4
  br label %1264

261:                                              ; preds = %870, %863, %751, %744, %686, %683, %664, %662, %638, %586, %584, %577, %566, %564, %556, %554, %541, %528, %520, %405, %402, %394, %282, %274, %202, %200, %193, %181, %179, %171, %169, %153, %133
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %12, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %13, align 4
  br label %1263

265:                                              ; preds = %145, %143
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %12, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #9
  br label %1263

269:                                              ; preds = %233, %225, %221
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %12, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #9
  br label %1263

273:                                              ; preds = %217
  br label %274

274:                                              ; preds = %273, %141
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = load ptr, ptr %275, align 8, !tbaa !14
  %277 = getelementptr inbounds ptr, ptr %276, i64 26
  %278 = load ptr, ptr %277, align 8
  %279 = invoke noundef i64 %278(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %280 unwind label %261

280:                                              ; preds = %274
  %281 = icmp ne i64 %279, 0
  br i1 %281, label %282, label %394

282:                                              ; preds = %280
  %283 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 16)
          to label %284 unwind label %261

284:                                              ; preds = %282
  br i1 %283, label %285, label %394

285:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 12, ptr %30) #9
  %286 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %31, i32 noundef 0)
          to label %287 unwind label %384

287:                                              ; preds = %285
  %288 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %31, i32 0, i32 0
  %289 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %288, i32 0, i32 0
  %290 = load i32, ptr %289, align 4
  %291 = load ptr, ptr %286, align 8, !tbaa !14
  %292 = getelementptr inbounds ptr, ptr %291, i64 3
  %293 = load ptr, ptr %292, align 8
  %294 = invoke { <2 x float>, float } %293(ptr noundef nonnull align 8 dereferenceable(8) %286, i32 %290)
          to label %295 unwind label %384

295:                                              ; preds = %287
  %296 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %30, i32 0, i32 0
  %297 = getelementptr inbounds %"struct.std::array", ptr %296, i32 0, i32 0
  store { <2 x float>, float } %294, ptr %32, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %297, ptr align 8 %32, i64 12, i1 false)
  %298 = load i32, ptr %21, align 4
  %299 = and i32 %298, -3
  %300 = or i32 %299, 0
  store i32 %300, ptr %21, align 4
  %301 = load i32, ptr %21, align 4
  %302 = and i32 %301, -29
  %303 = or i32 %302, 0
  store i32 %303, ptr %21, align 4
  %304 = load i32, ptr %21, align 4
  %305 = and i32 %304, -481
  %306 = or i32 %305, 32
  store i32 %306, ptr %21, align 4
  %307 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %30, i64 noundef 0)
          to label %308 unwind label %384

308:                                              ; preds = %295
  %309 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %307)
          to label %310 unwind label %384

310:                                              ; preds = %308
  %311 = zext i1 %309 to i32
  %312 = load i32, ptr %21, align 4
  %313 = and i32 %311, 1
  %314 = shl i32 %313, 9
  %315 = and i32 %312, -513
  %316 = or i32 %315, %314
  store i32 %316, ptr %21, align 4
  %317 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %30, i64 noundef 0)
          to label %318 unwind label %384

318:                                              ; preds = %310
  %319 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %317)
          to label %320 unwind label %384

320:                                              ; preds = %318
  %321 = zext i1 %319 to i32
  %322 = load i32, ptr %21, align 4
  %323 = and i32 %321, 1
  %324 = shl i32 %323, 10
  %325 = and i32 %322, -1025
  %326 = or i32 %325, %324
  store i32 %326, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %30, i64 12, i1 false), !tbaa.struct !25
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %33, i64 12, i1 false)
  %327 = getelementptr inbounds { <2 x float>, float }, ptr %34, i32 0, i32 0
  %328 = load <2 x float>, ptr %327, align 4
  %329 = getelementptr inbounds { <2 x float>, float }, ptr %34, i32 0, i32 1
  %330 = load float, ptr %329, align 4
  %331 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %328, float %330)
          to label %332 unwind label %384

332:                                              ; preds = %320
  %333 = load i32, ptr %21, align 4
  %334 = and i32 %331, 7
  %335 = shl i32 %334, 11
  %336 = and i32 %333, -14337
  %337 = or i32 %336, %335
  store i32 %337, ptr %21, align 4
  %338 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %30, i64 noundef 0)
          to label %339 unwind label %384

339:                                              ; preds = %332
  %340 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %338)
          to label %341 unwind label %384

341:                                              ; preds = %339
  %342 = load i32, ptr %21, align 4
  %343 = and i32 %340, 3
  %344 = shl i32 %343, 14
  %345 = and i32 %342, -49153
  %346 = or i32 %345, %344
  store i32 %346, ptr %21, align 4
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %349 = trunc i8 %348 to i1
  %350 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %349)
          to label %351 unwind label %384

351:                                              ; preds = %341
  %352 = load i64, ptr %10, align 8, !tbaa !9
  %353 = add i64 %352, %350
  store i64 %353, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %354 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 3
  %355 = load i32, ptr %354, align 4, !tbaa !20
  store i32 %355, ptr %15, align 4, !tbaa !26
  br label %356

356:                                              ; preds = %381, %351
  %357 = load i32, ptr %14, align 4, !tbaa !26
  %358 = load i32, ptr %15, align 4, !tbaa !26
  %359 = icmp ult i32 %357, %358
  br i1 %359, label %360, label %392

360:                                              ; preds = %356
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %35) #9
  %362 = load ptr, ptr %7, align 8, !tbaa !5
  %363 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %36, i32 noundef %363)
          to label %364 unwind label %388

364:                                              ; preds = %360
  %365 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %36, i32 0, i32 0
  %366 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %365, i32 0, i32 0
  %367 = load i32, ptr %366, align 4
  %368 = load ptr, ptr %362, align 8, !tbaa !14
  %369 = getelementptr inbounds ptr, ptr %368, i64 3
  %370 = load ptr, ptr %369, align 8
  %371 = invoke { <2 x float>, float } %370(ptr noundef nonnull align 8 dereferenceable(8) %362, i32 %367)
          to label %372 unwind label %388

372:                                              ; preds = %364
  %373 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %35, i32 0, i32 0
  %374 = getelementptr inbounds %"struct.std::array", ptr %373, i32 0, i32 0
  store { <2 x float>, float } %371, ptr %37, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %374, ptr align 8 %37, i64 12, i1 false)
  %375 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %376 = trunc i8 %375 to i1
  %377 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 4 dereferenceable(12) %35, i1 noundef zeroext %376)
          to label %378 unwind label %388

378:                                              ; preds = %372
  %379 = load i64, ptr %10, align 8, !tbaa !9
  %380 = add i64 %379, %377
  store i64 %380, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #9
  br label %381

381:                                              ; preds = %378
  %382 = load i32, ptr %14, align 4, !tbaa !26
  %383 = add i32 %382, 1
  store i32 %383, ptr %14, align 4, !tbaa !26
  br label %356, !llvm.loop !29

384:                                              ; preds = %341, %339, %332, %320, %318, %310, %308, %295, %287, %285
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %12, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %13, align 4
  br label %393

388:                                              ; preds = %372, %364, %360
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %12, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #9
  br label %393

392:                                              ; preds = %356
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #9
  br label %394

393:                                              ; preds = %388, %384
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #9
  br label %1263

394:                                              ; preds = %392, %284, %280
  %395 = load ptr, ptr %7, align 8, !tbaa !5
  %396 = load ptr, ptr %395, align 8, !tbaa !14
  %397 = getelementptr inbounds ptr, ptr %396, i64 26
  %398 = load ptr, ptr %397, align 8
  %399 = invoke noundef i64 %398(ptr noundef nonnull align 8 dereferenceable(8) %395)
          to label %400 unwind label %261

400:                                              ; preds = %394
  %401 = icmp ne i64 %399, 0
  br i1 %401, label %402, label %520

402:                                              ; preds = %400
  %403 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 32)
          to label %404 unwind label %261

404:                                              ; preds = %402
  br i1 %403, label %405, label %520

405:                                              ; preds = %404
  %406 = load ptr, ptr %7, align 8, !tbaa !5
  %407 = load ptr, ptr %406, align 8, !tbaa !14
  %408 = getelementptr inbounds ptr, ptr %407, i64 31
  %409 = load ptr, ptr %408, align 8
  %410 = invoke noundef zeroext i1 %409(ptr noundef nonnull align 8 dereferenceable(8) %406)
          to label %411 unwind label %261

411:                                              ; preds = %405
  br i1 %410, label %412, label %520

412:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 3, ptr %38) #9
  %413 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %39, i32 noundef 0)
          to label %414 unwind label %510

414:                                              ; preds = %412
  %415 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %39, i32 0, i32 0
  %416 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %415, i32 0, i32 0
  %417 = load i32, ptr %416, align 4
  %418 = load ptr, ptr %413, align 8, !tbaa !14
  %419 = getelementptr inbounds ptr, ptr %418, i64 4
  %420 = load ptr, ptr %419, align 8
  %421 = invoke i24 %420(ptr noundef nonnull align 8 dereferenceable(8) %413, i32 %417)
          to label %422 unwind label %510

422:                                              ; preds = %414
  %423 = getelementptr inbounds %"class.OpenMesh::VectorT.25", ptr %38, i32 0, i32 0
  %424 = getelementptr inbounds %"struct.std::array.26", ptr %423, i32 0, i32 0
  store i24 %421, ptr %424, align 1
  %425 = load i32, ptr %21, align 4
  %426 = and i32 %425, -3
  %427 = or i32 %426, 0
  store i32 %427, ptr %21, align 4
  %428 = load i32, ptr %21, align 4
  %429 = and i32 %428, -29
  %430 = or i32 %429, 0
  store i32 %430, ptr %21, align 4
  %431 = load i32, ptr %21, align 4
  %432 = and i32 %431, -481
  %433 = or i32 %432, 128
  store i32 %433, ptr %21, align 4
  %434 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %38, i64 noundef 0)
          to label %435 unwind label %510

435:                                              ; preds = %422
  %436 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %434)
          to label %437 unwind label %510

437:                                              ; preds = %435
  %438 = zext i1 %436 to i32
  %439 = load i32, ptr %21, align 4
  %440 = and i32 %438, 1
  %441 = shl i32 %440, 9
  %442 = and i32 %439, -513
  %443 = or i32 %442, %441
  store i32 %443, ptr %21, align 4
  %444 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %38, i64 noundef 0)
          to label %445 unwind label %510

445:                                              ; preds = %437
  %446 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %444)
          to label %447 unwind label %510

447:                                              ; preds = %445
  %448 = zext i1 %446 to i32
  %449 = load i32, ptr %21, align 4
  %450 = and i32 %448, 1
  %451 = shl i32 %450, 10
  %452 = and i32 %449, -1025
  %453 = or i32 %452, %451
  store i32 %453, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %40, ptr align 1 %38, i64 3, i1 false), !tbaa.struct !30
  %454 = getelementptr inbounds %"class.OpenMesh::VectorT.25", ptr %40, i32 0, i32 0
  %455 = getelementptr inbounds %"struct.std::array.26", ptr %454, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 1 %455, i64 3, i1 false)
  %456 = load i24, ptr %41, align 4
  %457 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24 %456)
          to label %458 unwind label %510

458:                                              ; preds = %447
  %459 = load i32, ptr %21, align 4
  %460 = and i32 %457, 7
  %461 = shl i32 %460, 11
  %462 = and i32 %459, -14337
  %463 = or i32 %462, %461
  store i32 %463, ptr %21, align 4
  %464 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %38, i64 noundef 0)
          to label %465 unwind label %510

465:                                              ; preds = %458
  %466 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1) %464)
          to label %467 unwind label %510

467:                                              ; preds = %465
  %468 = load i32, ptr %21, align 4
  %469 = and i32 %466, 3
  %470 = shl i32 %469, 14
  %471 = and i32 %468, -49153
  %472 = or i32 %471, %470
  store i32 %472, ptr %21, align 4
  %473 = load ptr, ptr %6, align 8, !tbaa !5
  %474 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %475 = trunc i8 %474 to i1
  %476 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %475)
          to label %477 unwind label %510

477:                                              ; preds = %467
  %478 = load i64, ptr %10, align 8, !tbaa !9
  %479 = add i64 %478, %476
  store i64 %479, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %480 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 3
  %481 = load i32, ptr %480, align 4, !tbaa !20
  store i32 %481, ptr %15, align 4, !tbaa !26
  br label %482

482:                                              ; preds = %507, %477
  %483 = load i32, ptr %14, align 4, !tbaa !26
  %484 = load i32, ptr %15, align 4, !tbaa !26
  %485 = icmp ult i32 %483, %484
  br i1 %485, label %486, label %518

486:                                              ; preds = %482
  %487 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 3, ptr %42) #9
  %488 = load ptr, ptr %7, align 8, !tbaa !5
  %489 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %43, i32 noundef %489)
          to label %490 unwind label %514

490:                                              ; preds = %486
  %491 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %43, i32 0, i32 0
  %492 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %491, i32 0, i32 0
  %493 = load i32, ptr %492, align 4
  %494 = load ptr, ptr %488, align 8, !tbaa !14
  %495 = getelementptr inbounds ptr, ptr %494, i64 4
  %496 = load ptr, ptr %495, align 8
  %497 = invoke i24 %496(ptr noundef nonnull align 8 dereferenceable(8) %488, i32 %493)
          to label %498 unwind label %514

498:                                              ; preds = %490
  %499 = getelementptr inbounds %"class.OpenMesh::VectorT.25", ptr %42, i32 0, i32 0
  %500 = getelementptr inbounds %"struct.std::array.26", ptr %499, i32 0, i32 0
  store i24 %497, ptr %500, align 1
  %501 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %502 = trunc i8 %501 to i1
  %503 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIhLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef nonnull align 1 dereferenceable(3) %42, i1 noundef zeroext %502)
          to label %504 unwind label %514

504:                                              ; preds = %498
  %505 = load i64, ptr %10, align 8, !tbaa !9
  %506 = add i64 %505, %503
  store i64 %506, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 3, ptr %42) #9
  br label %507

507:                                              ; preds = %504
  %508 = load i32, ptr %14, align 4, !tbaa !26
  %509 = add i32 %508, 1
  store i32 %509, ptr %14, align 4, !tbaa !26
  br label %482, !llvm.loop !31

510:                                              ; preds = %467, %465, %458, %447, %445, %437, %435, %422, %414, %412
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %12, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %13, align 4
  br label %519

514:                                              ; preds = %498, %490, %486
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %12, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 3, ptr %42) #9
  br label %519

518:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 3, ptr %38) #9
  br label %520

519:                                              ; preds = %514, %510
  call void @llvm.lifetime.end.p0(i64 3, ptr %38) #9
  br label %1263

520:                                              ; preds = %518, %411, %404, %400
  %521 = load ptr, ptr %7, align 8, !tbaa !5
  %522 = load ptr, ptr %521, align 8, !tbaa !14
  %523 = getelementptr inbounds ptr, ptr %522, i64 26
  %524 = load ptr, ptr %523, align 8
  %525 = invoke noundef i64 %524(ptr noundef nonnull align 8 dereferenceable(8) %521)
          to label %526 unwind label %261

526:                                              ; preds = %520
  %527 = icmp ne i64 %525, 0
  br i1 %527, label %528, label %638

528:                                              ; preds = %526
  %529 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 64)
          to label %530 unwind label %261

530:                                              ; preds = %528
  br i1 %529, label %531, label %638

531:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %532 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %45, i32 noundef 0)
          to label %533 unwind label %629

533:                                              ; preds = %531
  %534 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %45, i32 0, i32 0
  %535 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %534, i32 0, i32 0
  %536 = load i32, ptr %535, align 4
  %537 = load ptr, ptr %532, align 8, !tbaa !14
  %538 = getelementptr inbounds ptr, ptr %537, i64 10
  %539 = load ptr, ptr %538, align 8
  %540 = invoke <2 x float> %539(ptr noundef nonnull align 8 dereferenceable(8) %532, i32 %536)
          to label %541 unwind label %629

541:                                              ; preds = %533
  %542 = getelementptr inbounds %"class.OpenMesh::VectorT.18", ptr %44, i32 0, i32 0
  %543 = getelementptr inbounds %"struct.std::array.19", ptr %542, i32 0, i32 0
  store <2 x float> %540, ptr %543, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  %544 = load i32, ptr %21, align 4
  %545 = and i32 %544, -3
  %546 = or i32 %545, 0
  store i32 %546, ptr %21, align 4
  %547 = load i32, ptr %21, align 4
  %548 = and i32 %547, -29
  %549 = or i32 %548, 0
  store i32 %549, ptr %21, align 4
  %550 = load i32, ptr %21, align 4
  %551 = and i32 %550, -481
  %552 = or i32 %551, 64
  store i32 %552, ptr %21, align 4
  %553 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %18, i64 noundef 0)
          to label %554 unwind label %261

554:                                              ; preds = %541
  %555 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %553)
          to label %556 unwind label %261

556:                                              ; preds = %554
  %557 = zext i1 %555 to i32
  %558 = load i32, ptr %21, align 4
  %559 = and i32 %557, 1
  %560 = shl i32 %559, 9
  %561 = and i32 %558, -513
  %562 = or i32 %561, %560
  store i32 %562, ptr %21, align 4
  %563 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %18, i64 noundef 0)
          to label %564 unwind label %261

564:                                              ; preds = %556
  %565 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %563)
          to label %566 unwind label %261

566:                                              ; preds = %564
  %567 = zext i1 %565 to i32
  %568 = load i32, ptr %21, align 4
  %569 = and i32 %567, 1
  %570 = shl i32 %569, 10
  %571 = and i32 %568, -1025
  %572 = or i32 %571, %570
  store i32 %572, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %18, i64 8, i1 false), !tbaa.struct !32
  %573 = getelementptr inbounds %"class.OpenMesh::VectorT.18", ptr %46, i32 0, i32 0
  %574 = getelementptr inbounds %"struct.std::array.19", ptr %573, i32 0, i32 0
  %575 = load <2 x float>, ptr %574, align 4
  %576 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi2EEEEENS1_5Chunk3DimET_(<2 x float> %575)
          to label %577 unwind label %261

577:                                              ; preds = %566
  %578 = load i32, ptr %21, align 4
  %579 = and i32 %576, 7
  %580 = shl i32 %579, 11
  %581 = and i32 %578, -14337
  %582 = or i32 %581, %580
  store i32 %582, ptr %21, align 4
  %583 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %18, i64 noundef 0)
          to label %584 unwind label %261

584:                                              ; preds = %577
  %585 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %583)
          to label %586 unwind label %261

586:                                              ; preds = %584
  %587 = load i32, ptr %21, align 4
  %588 = and i32 %585, 3
  %589 = shl i32 %588, 14
  %590 = and i32 %587, -49153
  %591 = or i32 %590, %589
  store i32 %591, ptr %21, align 4
  %592 = load ptr, ptr %6, align 8, !tbaa !5
  %593 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %594 = trunc i8 %593 to i1
  %595 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %592, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %594)
          to label %596 unwind label %261

596:                                              ; preds = %586
  %597 = load i64, ptr %10, align 8, !tbaa !9
  %598 = add i64 %597, %595
  store i64 %598, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %599 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 3
  %600 = load i32, ptr %599, align 4, !tbaa !20
  store i32 %600, ptr %15, align 4, !tbaa !26
  br label %601

601:                                              ; preds = %626, %596
  %602 = load i32, ptr %14, align 4, !tbaa !26
  %603 = load i32, ptr %15, align 4, !tbaa !26
  %604 = icmp ult i32 %602, %603
  br i1 %604, label %605, label %637

605:                                              ; preds = %601
  %606 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  %608 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 noundef %608)
          to label %609 unwind label %633

609:                                              ; preds = %605
  %610 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %48, i32 0, i32 0
  %611 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %610, i32 0, i32 0
  %612 = load i32, ptr %611, align 4
  %613 = load ptr, ptr %607, align 8, !tbaa !14
  %614 = getelementptr inbounds ptr, ptr %613, i64 10
  %615 = load ptr, ptr %614, align 8
  %616 = invoke <2 x float> %615(ptr noundef nonnull align 8 dereferenceable(8) %607, i32 %612)
          to label %617 unwind label %633

617:                                              ; preds = %609
  %618 = getelementptr inbounds %"class.OpenMesh::VectorT.18", ptr %47, i32 0, i32 0
  %619 = getelementptr inbounds %"struct.std::array.19", ptr %618, i32 0, i32 0
  store <2 x float> %616, ptr %619, align 4
  %620 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %621 = trunc i8 %620 to i1
  %622 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi2EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull align 4 dereferenceable(8) %47, i1 noundef zeroext %621)
          to label %623 unwind label %633

623:                                              ; preds = %617
  %624 = load i64, ptr %10, align 8, !tbaa !9
  %625 = add i64 %624, %622
  store i64 %625, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %626

626:                                              ; preds = %623
  %627 = load i32, ptr %14, align 4, !tbaa !26
  %628 = add i32 %627, 1
  store i32 %628, ptr %14, align 4, !tbaa !26
  br label %601, !llvm.loop !33

629:                                              ; preds = %533, %531
  %630 = landingpad { ptr, i32 }
          cleanup
  %631 = extractvalue { ptr, i32 } %630, 0
  store ptr %631, ptr %12, align 8
  %632 = extractvalue { ptr, i32 } %630, 1
  store i32 %632, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %1263

633:                                              ; preds = %617, %609, %605
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %12, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %1263

637:                                              ; preds = %601
  br label %638

638:                                              ; preds = %637, %530, %526
  %639 = load i32, ptr %21, align 4
  %640 = and i32 %639, -3
  %641 = or i32 %640, 0
  store i32 %641, ptr %21, align 4
  %642 = load i32, ptr %21, align 4
  %643 = and i32 %642, -29
  %644 = or i32 %643, 8
  store i32 %644, ptr %21, align 4
  %645 = load i32, ptr %21, align 4
  %646 = and i32 %645, -481
  %647 = or i32 %646, 224
  store i32 %647, ptr %21, align 4
  %648 = load i32, ptr %21, align 4
  %649 = and i32 %648, -513
  %650 = or i32 %649, 0
  store i32 %650, ptr %21, align 4
  %651 = load i32, ptr %21, align 4
  %652 = and i32 %651, -1025
  %653 = or i32 %652, 0
  store i32 %653, ptr %21, align 4
  %654 = load i32, ptr %21, align 4
  %655 = and i32 %654, -14337
  %656 = or i32 %655, 0
  store i32 %656, ptr %21, align 4
  %657 = load ptr, ptr %7, align 8, !tbaa !5
  %658 = load ptr, ptr %657, align 8, !tbaa !14
  %659 = getelementptr inbounds ptr, ptr %658, i64 26
  %660 = load ptr, ptr %659, align 8
  %661 = invoke noundef i64 %660(ptr noundef nonnull align 8 dereferenceable(8) %657)
          to label %662 unwind label %261

662:                                              ; preds = %638
  %663 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat11needed_bitsEm(i64 noundef %661)
          to label %664 unwind label %261

664:                                              ; preds = %662
  %665 = load i32, ptr %21, align 4
  %666 = and i32 %663, 3
  %667 = shl i32 %666, 14
  %668 = and i32 %665, -49153
  %669 = or i32 %668, %667
  store i32 %669, ptr %21, align 4
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %672 = trunc i8 %671 to i1
  %673 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %670, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %672)
          to label %674 unwind label %261

674:                                              ; preds = %664
  %675 = load i64, ptr %10, align 8, !tbaa !9
  %676 = add i64 %675, %673
  store i64 %676, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %677 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 4
  %678 = load i32, ptr %677, align 4, !tbaa !21
  store i32 %678, ptr %16, align 4, !tbaa !26
  br label %679

679:                                              ; preds = %741, %674
  %680 = load i32, ptr %14, align 4, !tbaa !26
  %681 = load i32, ptr %16, align 4, !tbaa !26
  %682 = icmp ult i32 %680, %681
  br i1 %682, label %683, label %744

683:                                              ; preds = %679
  %684 = load ptr, ptr %7, align 8, !tbaa !5
  %685 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %49, i32 noundef %685)
          to label %686 unwind label %261

686:                                              ; preds = %683
  %687 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %49, i32 0, i32 0
  %688 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %687, i32 0, i32 0
  %689 = load i32, ptr %688, align 4
  %690 = load ptr, ptr %684, align 8, !tbaa !14
  %691 = getelementptr inbounds ptr, ptr %690, i64 11
  %692 = load ptr, ptr %691, align 8
  %693 = invoke noundef i32 %692(ptr noundef nonnull align 8 dereferenceable(8) %684, i32 %689, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %694 unwind label %261

694:                                              ; preds = %686
  store i32 %693, ptr %15, align 4, !tbaa !26
  %695 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 1
  %696 = load i8, ptr %695, align 2, !tbaa !16
  %697 = zext i8 %696 to i32
  %698 = icmp eq i32 %697, 80
  br i1 %698, label %699, label %712

699:                                              ; preds = %694
  %700 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %701 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  store i64 %701, ptr %50, align 8, !tbaa !9
  %702 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %703 = trunc i8 %702 to i1
  %704 = invoke noundef i64 @_ZN8OpenMesh2IO5storeImEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef 1, i1 noundef zeroext %703)
          to label %705 unwind label %708

705:                                              ; preds = %699
  %706 = load i64, ptr %10, align 8, !tbaa !9
  %707 = add i64 %706, %704
  store i64 %707, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %712

708:                                              ; preds = %699
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %12, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %1263

712:                                              ; preds = %705, %694
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %713

713:                                              ; preds = %733, %712
  %714 = load i64, ptr %51, align 8, !tbaa !9
  %715 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  %716 = icmp ult i64 %714, %715
  br i1 %716, label %718, label %717

717:                                              ; preds = %713
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %740

718:                                              ; preds = %713
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %720 = load i64, ptr %51, align 8, !tbaa !9
  %721 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %720) #9
  %722 = invoke noundef i32 @_ZNK8OpenMesh10BaseHandle3idxEv(ptr noundef nonnull align 4 dereferenceable(4) %721)
          to label %723 unwind label %736

723:                                              ; preds = %718
  store i32 %722, ptr %52, align 4, !tbaa !26
  %724 = load i32, ptr %21, align 4
  %725 = lshr i32 %724, 14
  %726 = and i32 %725, 3
  %727 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %728 = trunc i8 %727 to i1
  %729 = invoke noundef i64 @_ZN8OpenMesh2IO5storeIiEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8) %719, ptr noundef nonnull align 4 dereferenceable(4) %52, i32 noundef %726, i1 noundef zeroext %728)
          to label %730 unwind label %736

730:                                              ; preds = %723
  %731 = load i64, ptr %10, align 8, !tbaa !9
  %732 = add i64 %731, %729
  store i64 %732, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %733

733:                                              ; preds = %730
  %734 = load i64, ptr %51, align 8, !tbaa !9
  %735 = add i64 %734, 1
  store i64 %735, ptr %51, align 8, !tbaa !9
  br label %713, !llvm.loop !34

736:                                              ; preds = %723, %718
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %12, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %1263

740:                                              ; preds = %717
  br label %741

741:                                              ; preds = %740
  %742 = load i32, ptr %14, align 4, !tbaa !26
  %743 = add i32 %742, 1
  store i32 %743, ptr %14, align 4, !tbaa !26
  br label %679, !llvm.loop !35

744:                                              ; preds = %679
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  %746 = load ptr, ptr %745, align 8, !tbaa !14
  %747 = getelementptr inbounds ptr, ptr %746, i64 34
  %748 = load ptr, ptr %747, align 8
  %749 = invoke noundef zeroext i1 %748(ptr noundef nonnull align 8 dereferenceable(8) %745)
          to label %750 unwind label %261

750:                                              ; preds = %744
  br i1 %749, label %751, label %863

751:                                              ; preds = %750
  %752 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 256)
          to label %753 unwind label %261

753:                                              ; preds = %751
  br i1 %752, label %754, label %863

754:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 12, ptr %53) #9
  %755 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %54, i32 noundef 0)
          to label %756 unwind label %853

756:                                              ; preds = %754
  %757 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %54, i32 0, i32 0
  %758 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %757, i32 0, i32 0
  %759 = load i32, ptr %758, align 4
  %760 = load ptr, ptr %755, align 8, !tbaa !14
  %761 = getelementptr inbounds ptr, ptr %760, i64 12
  %762 = load ptr, ptr %761, align 8
  %763 = invoke { <2 x float>, float } %762(ptr noundef nonnull align 8 dereferenceable(8) %755, i32 %759)
          to label %764 unwind label %853

764:                                              ; preds = %756
  %765 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %53, i32 0, i32 0
  %766 = getelementptr inbounds %"struct.std::array", ptr %765, i32 0, i32 0
  store { <2 x float>, float } %763, ptr %55, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %766, ptr align 8 %55, i64 12, i1 false)
  %767 = load i32, ptr %21, align 4
  %768 = and i32 %767, -3
  %769 = or i32 %768, 0
  store i32 %769, ptr %21, align 4
  %770 = load i32, ptr %21, align 4
  %771 = and i32 %770, -29
  %772 = or i32 %771, 8
  store i32 %772, ptr %21, align 4
  %773 = load i32, ptr %21, align 4
  %774 = and i32 %773, -481
  %775 = or i32 %774, 32
  store i32 %775, ptr %21, align 4
  %776 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %53, i64 noundef 0)
          to label %777 unwind label %853

777:                                              ; preds = %764
  %778 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %776)
          to label %779 unwind label %853

779:                                              ; preds = %777
  %780 = zext i1 %778 to i32
  %781 = load i32, ptr %21, align 4
  %782 = and i32 %780, 1
  %783 = shl i32 %782, 9
  %784 = and i32 %781, -513
  %785 = or i32 %784, %783
  store i32 %785, ptr %21, align 4
  %786 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %53, i64 noundef 0)
          to label %787 unwind label %853

787:                                              ; preds = %779
  %788 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %786)
          to label %789 unwind label %853

789:                                              ; preds = %787
  %790 = zext i1 %788 to i32
  %791 = load i32, ptr %21, align 4
  %792 = and i32 %790, 1
  %793 = shl i32 %792, 10
  %794 = and i32 %791, -1025
  %795 = or i32 %794, %793
  store i32 %795, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 4 %53, i64 12, i1 false), !tbaa.struct !25
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 4 %56, i64 12, i1 false)
  %796 = getelementptr inbounds { <2 x float>, float }, ptr %57, i32 0, i32 0
  %797 = load <2 x float>, ptr %796, align 4
  %798 = getelementptr inbounds { <2 x float>, float }, ptr %57, i32 0, i32 1
  %799 = load float, ptr %798, align 4
  %800 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %797, float %799)
          to label %801 unwind label %853

801:                                              ; preds = %789
  %802 = load i32, ptr %21, align 4
  %803 = and i32 %800, 7
  %804 = shl i32 %803, 11
  %805 = and i32 %802, -14337
  %806 = or i32 %805, %804
  store i32 %806, ptr %21, align 4
  %807 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %53, i64 noundef 0)
          to label %808 unwind label %853

808:                                              ; preds = %801
  %809 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %807)
          to label %810 unwind label %853

810:                                              ; preds = %808
  %811 = load i32, ptr %21, align 4
  %812 = and i32 %809, 3
  %813 = shl i32 %812, 14
  %814 = and i32 %811, -49153
  %815 = or i32 %814, %813
  store i32 %815, ptr %21, align 4
  %816 = load ptr, ptr %6, align 8, !tbaa !5
  %817 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %818 = trunc i8 %817 to i1
  %819 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %816, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %818)
          to label %820 unwind label %853

820:                                              ; preds = %810
  %821 = load i64, ptr %10, align 8, !tbaa !9
  %822 = add i64 %821, %819
  store i64 %822, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %823 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 4
  %824 = load i32, ptr %823, align 4, !tbaa !21
  store i32 %824, ptr %16, align 4, !tbaa !26
  br label %825

825:                                              ; preds = %850, %820
  %826 = load i32, ptr %14, align 4, !tbaa !26
  %827 = load i32, ptr %16, align 4, !tbaa !26
  %828 = icmp ult i32 %826, %827
  br i1 %828, label %829, label %861

829:                                              ; preds = %825
  %830 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #9
  %831 = load ptr, ptr %7, align 8, !tbaa !5
  %832 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %59, i32 noundef %832)
          to label %833 unwind label %857

833:                                              ; preds = %829
  %834 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %59, i32 0, i32 0
  %835 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %834, i32 0, i32 0
  %836 = load i32, ptr %835, align 4
  %837 = load ptr, ptr %831, align 8, !tbaa !14
  %838 = getelementptr inbounds ptr, ptr %837, i64 12
  %839 = load ptr, ptr %838, align 8
  %840 = invoke { <2 x float>, float } %839(ptr noundef nonnull align 8 dereferenceable(8) %831, i32 %836)
          to label %841 unwind label %857

841:                                              ; preds = %833
  %842 = getelementptr inbounds %"class.OpenMesh::VectorT", ptr %58, i32 0, i32 0
  %843 = getelementptr inbounds %"struct.std::array", ptr %842, i32 0, i32 0
  store { <2 x float>, float } %840, ptr %60, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %843, ptr align 8 %60, i64 12, i1 false)
  %844 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %845 = trunc i8 %844 to i1
  %846 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %830, ptr noundef nonnull align 4 dereferenceable(12) %58, i1 noundef zeroext %845)
          to label %847 unwind label %857

847:                                              ; preds = %841
  %848 = load i64, ptr %10, align 8, !tbaa !9
  %849 = add i64 %848, %846
  store i64 %849, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #9
  br label %850

850:                                              ; preds = %847
  %851 = load i32, ptr %14, align 4, !tbaa !26
  %852 = add i32 %851, 1
  store i32 %852, ptr %14, align 4, !tbaa !26
  br label %825, !llvm.loop !36

853:                                              ; preds = %810, %808, %801, %789, %787, %779, %777, %764, %756, %754
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %12, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %13, align 4
  br label %862

857:                                              ; preds = %841, %833, %829
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %12, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #9
  br label %862

861:                                              ; preds = %825
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #9
  br label %863

862:                                              ; preds = %857, %853
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #9
  br label %1263

863:                                              ; preds = %861, %753, %750
  %864 = load ptr, ptr %7, align 8, !tbaa !5
  %865 = load ptr, ptr %864, align 8, !tbaa !14
  %866 = getelementptr inbounds ptr, ptr %865, i64 35
  %867 = load ptr, ptr %866, align 8
  %868 = invoke noundef zeroext i1 %867(ptr noundef nonnull align 8 dereferenceable(8) %864)
          to label %869 unwind label %261

869:                                              ; preds = %863
  br i1 %868, label %870, label %970

870:                                              ; preds = %869
  %871 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 512)
          to label %872 unwind label %261

872:                                              ; preds = %870
  br i1 %871, label %873, label %970

873:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 3, ptr %61) #9
  invoke void @_ZN8OpenMesh7VectorTIhLi3EEC2Ev(ptr noundef nonnull align 1 dereferenceable(3) %61)
          to label %874 unwind label %960

874:                                              ; preds = %873
  %875 = load i32, ptr %21, align 4
  %876 = and i32 %875, -3
  %877 = or i32 %876, 0
  store i32 %877, ptr %21, align 4
  %878 = load i32, ptr %21, align 4
  %879 = and i32 %878, -29
  %880 = or i32 %879, 8
  store i32 %880, ptr %21, align 4
  %881 = load i32, ptr %21, align 4
  %882 = and i32 %881, -481
  %883 = or i32 %882, 128
  store i32 %883, ptr %21, align 4
  %884 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %61, i64 noundef 0)
          to label %885 unwind label %960

885:                                              ; preds = %874
  %886 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %884)
          to label %887 unwind label %960

887:                                              ; preds = %885
  %888 = zext i1 %886 to i32
  %889 = load i32, ptr %21, align 4
  %890 = and i32 %888, 1
  %891 = shl i32 %890, 9
  %892 = and i32 %889, -513
  %893 = or i32 %892, %891
  store i32 %893, ptr %21, align 4
  %894 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %61, i64 noundef 0)
          to label %895 unwind label %960

895:                                              ; preds = %887
  %896 = invoke noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %894)
          to label %897 unwind label %960

897:                                              ; preds = %895
  %898 = zext i1 %896 to i32
  %899 = load i32, ptr %21, align 4
  %900 = and i32 %898, 1
  %901 = shl i32 %900, 10
  %902 = and i32 %899, -1025
  %903 = or i32 %902, %901
  store i32 %903, ptr %21, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %62, ptr align 1 %61, i64 3, i1 false), !tbaa.struct !30
  %904 = getelementptr inbounds %"class.OpenMesh::VectorT.25", ptr %62, i32 0, i32 0
  %905 = getelementptr inbounds %"struct.std::array.26", ptr %904, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %63, ptr align 1 %905, i64 3, i1 false)
  %906 = load i24, ptr %63, align 4
  %907 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24 %906)
          to label %908 unwind label %960

908:                                              ; preds = %897
  %909 = load i32, ptr %21, align 4
  %910 = and i32 %907, 7
  %911 = shl i32 %910, 11
  %912 = and i32 %909, -14337
  %913 = or i32 %912, %911
  store i32 %913, ptr %21, align 4
  %914 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %61, i64 noundef 0)
          to label %915 unwind label %960

915:                                              ; preds = %908
  %916 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1) %914)
          to label %917 unwind label %960

917:                                              ; preds = %915
  %918 = load i32, ptr %21, align 4
  %919 = and i32 %916, 3
  %920 = shl i32 %919, 14
  %921 = and i32 %918, -49153
  %922 = or i32 %921, %920
  store i32 %922, ptr %21, align 4
  %923 = load ptr, ptr %6, align 8, !tbaa !5
  %924 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %925 = trunc i8 %924 to i1
  %926 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %923, ptr noundef nonnull align 4 dereferenceable(4) %21, i1 noundef zeroext %925)
          to label %927 unwind label %960

927:                                              ; preds = %917
  %928 = load i64, ptr %10, align 8, !tbaa !9
  %929 = add i64 %928, %926
  store i64 %929, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !26
  %930 = getelementptr inbounds %"struct.OpenMesh::IO::OMFormat::Header", ptr %20, i32 0, i32 4
  %931 = load i32, ptr %930, align 4, !tbaa !21
  store i32 %931, ptr %16, align 4, !tbaa !26
  br label %932

932:                                              ; preds = %957, %927
  %933 = load i32, ptr %14, align 4, !tbaa !26
  %934 = load i32, ptr %16, align 4, !tbaa !26
  %935 = icmp ult i32 %933, %934
  br i1 %935, label %936, label %968

936:                                              ; preds = %932
  %937 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 3, ptr %64) #9
  %938 = load ptr, ptr %7, align 8, !tbaa !5
  %939 = load i32, ptr %14, align 4, !tbaa !26
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %65, i32 noundef %939)
          to label %940 unwind label %964

940:                                              ; preds = %936
  %941 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %65, i32 0, i32 0
  %942 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %941, i32 0, i32 0
  %943 = load i32, ptr %942, align 4
  %944 = load ptr, ptr %938, align 8, !tbaa !14
  %945 = getelementptr inbounds ptr, ptr %944, i64 13
  %946 = load ptr, ptr %945, align 8
  %947 = invoke i24 %946(ptr noundef nonnull align 8 dereferenceable(8) %938, i32 %943)
          to label %948 unwind label %964

948:                                              ; preds = %940
  %949 = getelementptr inbounds %"class.OpenMesh::VectorT.25", ptr %64, i32 0, i32 0
  %950 = getelementptr inbounds %"struct.std::array.26", ptr %949, i32 0, i32 0
  store i24 %947, ptr %950, align 1
  %951 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %952 = trunc i8 %951 to i1
  %953 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIhLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %937, ptr noundef nonnull align 1 dereferenceable(3) %64, i1 noundef zeroext %952)
          to label %954 unwind label %964

954:                                              ; preds = %948
  %955 = load i64, ptr %10, align 8, !tbaa !9
  %956 = add i64 %955, %953
  store i64 %956, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 3, ptr %64) #9
  br label %957

957:                                              ; preds = %954
  %958 = load i32, ptr %14, align 4, !tbaa !26
  %959 = add i32 %958, 1
  store i32 %959, ptr %14, align 4, !tbaa !26
  br label %932, !llvm.loop !37

960:                                              ; preds = %917, %915, %908, %897, %895, %887, %885, %874, %873
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %12, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %13, align 4
  br label %969

964:                                              ; preds = %948, %940, %936
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %12, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 3, ptr %64) #9
  br label %969

968:                                              ; preds = %932
  call void @llvm.lifetime.end.p0(i64 3, ptr %61) #9
  br label %970

969:                                              ; preds = %964, %960
  call void @llvm.lifetime.end.p0(i64 3, ptr %61) #9
  br label %1263

970:                                              ; preds = %968, %872, %869
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  %972 = load ptr, ptr %971, align 8, !tbaa !14
  %973 = getelementptr inbounds ptr, ptr %972, i64 25
  %974 = load ptr, ptr %973, align 8
  %975 = invoke noundef ptr %974(ptr noundef nonnull align 8 dereferenceable(8) %971)
          to label %976 unwind label %996

976:                                              ; preds = %970
  %977 = invoke ptr @_ZNK8OpenMesh10BaseKernel12vprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %975)
          to label %978 unwind label %996

978:                                              ; preds = %976
  %979 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %67, i32 0, i32 0
  store ptr %977, ptr %979, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %67, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %980

980:                                              ; preds = %1028, %978
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %981 = load ptr, ptr %7, align 8, !tbaa !5
  %982 = load ptr, ptr %981, align 8, !tbaa !14
  %983 = getelementptr inbounds ptr, ptr %982, i64 25
  %984 = load ptr, ptr %983, align 8
  %985 = invoke noundef ptr %984(ptr noundef nonnull align 8 dereferenceable(8) %981)
          to label %986 unwind label %1000

986:                                              ; preds = %980
  %987 = invoke ptr @_ZNK8OpenMesh10BaseKernel10vprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %985)
          to label %988 unwind label %1000

988:                                              ; preds = %986
  %989 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %68, i32 0, i32 0
  store ptr %987, ptr %989, align 8
  %990 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br i1 %990, label %991, label %1030

991:                                              ; preds = %988
  %992 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %993 = load ptr, ptr %992, align 8, !tbaa !5
  %994 = icmp ne ptr %993, null
  br i1 %994, label %1004, label %995

995:                                              ; preds = %991
  br label %1028

996:                                              ; preds = %976, %970
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %12, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %1262

1000:                                             ; preds = %986, %980
  %1001 = landingpad { ptr, i32 }
          cleanup
  %1002 = extractvalue { ptr, i32 } %1001, 0
  store ptr %1002, ptr %12, align 8
  %1003 = extractvalue { ptr, i32 } %1001, 1
  store i32 %1003, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %1262

1004:                                             ; preds = %991
  %1005 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1006 = load ptr, ptr %1005, align 8, !tbaa !5
  %1007 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %1006)
          to label %1008 unwind label %1014

1008:                                             ; preds = %1004
  %1009 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1007, i64 noundef 1) #9
  %1010 = load i8, ptr %1009, align 1, !tbaa !13
  %1011 = sext i8 %1010 to i32
  %1012 = icmp eq i32 %1011, 58
  br i1 %1012, label %1013, label %1018

1013:                                             ; preds = %1008
  br label %1028

1014:                                             ; preds = %1259, %1256, %1254, %1242, %1232, %1186, %1176, %1130, %1120, %1074, %1064, %1018, %1004
  %1015 = landingpad { ptr, i32 }
          cleanup
  %1016 = extractvalue { ptr, i32 } %1015, 0
  store ptr %1016, ptr %12, align 8
  %1017 = extractvalue { ptr, i32 } %1015, 1
  store i32 %1017, ptr %13, align 4
  br label %1262

1018:                                             ; preds = %1008
  %1019 = load ptr, ptr %6, align 8, !tbaa !5
  %1020 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1021 = load ptr, ptr %1020, align 8, !tbaa !5
  %1022 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %1023 = trunc i8 %1022 to i1
  %1024 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1019, ptr noundef nonnull align 8 dereferenceable(41) %1021, i32 noundef 0, i1 noundef zeroext %1023)
          to label %1025 unwind label %1014

1025:                                             ; preds = %1018
  %1026 = load i64, ptr %10, align 8, !tbaa !9
  %1027 = add i64 %1026, %1024
  store i64 %1027, ptr %10, align 8, !tbaa !9
  br label %1028

1028:                                             ; preds = %1025, %1013, %995
  %1029 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %980, !llvm.loop !39

1030:                                             ; preds = %988
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %1031 = load ptr, ptr %7, align 8, !tbaa !5
  %1032 = load ptr, ptr %1031, align 8, !tbaa !14
  %1033 = getelementptr inbounds ptr, ptr %1032, i64 25
  %1034 = load ptr, ptr %1033, align 8
  %1035 = invoke noundef ptr %1034(ptr noundef nonnull align 8 dereferenceable(8) %1031)
          to label %1036 unwind label %1056

1036:                                             ; preds = %1030
  %1037 = invoke ptr @_ZNK8OpenMesh10BaseKernel12fprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %1035)
          to label %1038 unwind label %1056

1038:                                             ; preds = %1036
  %1039 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %69, i32 0, i32 0
  store ptr %1037, ptr %1039, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %69, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1040

1040:                                             ; preds = %1084, %1038
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %1041 = load ptr, ptr %7, align 8, !tbaa !5
  %1042 = load ptr, ptr %1041, align 8, !tbaa !14
  %1043 = getelementptr inbounds ptr, ptr %1042, i64 25
  %1044 = load ptr, ptr %1043, align 8
  %1045 = invoke noundef ptr %1044(ptr noundef nonnull align 8 dereferenceable(8) %1041)
          to label %1046 unwind label %1060

1046:                                             ; preds = %1040
  %1047 = invoke ptr @_ZNK8OpenMesh10BaseKernel10fprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %1045)
          to label %1048 unwind label %1060

1048:                                             ; preds = %1046
  %1049 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %70, i32 0, i32 0
  store ptr %1047, ptr %1049, align 8
  %1050 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br i1 %1050, label %1051, label %1086

1051:                                             ; preds = %1048
  %1052 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1053 = load ptr, ptr %1052, align 8, !tbaa !5
  %1054 = icmp ne ptr %1053, null
  br i1 %1054, label %1064, label %1055

1055:                                             ; preds = %1051
  br label %1084

1056:                                             ; preds = %1036, %1030
  %1057 = landingpad { ptr, i32 }
          cleanup
  %1058 = extractvalue { ptr, i32 } %1057, 0
  store ptr %1058, ptr %12, align 8
  %1059 = extractvalue { ptr, i32 } %1057, 1
  store i32 %1059, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1262

1060:                                             ; preds = %1046, %1040
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %12, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %1262

1064:                                             ; preds = %1051
  %1065 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1066 = load ptr, ptr %1065, align 8, !tbaa !5
  %1067 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %1066)
          to label %1068 unwind label %1014

1068:                                             ; preds = %1064
  %1069 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1067, i64 noundef 1) #9
  %1070 = load i8, ptr %1069, align 1, !tbaa !13
  %1071 = sext i8 %1070 to i32
  %1072 = icmp eq i32 %1071, 58
  br i1 %1072, label %1073, label %1074

1073:                                             ; preds = %1068
  br label %1084

1074:                                             ; preds = %1068
  %1075 = load ptr, ptr %6, align 8, !tbaa !5
  %1076 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1077 = load ptr, ptr %1076, align 8, !tbaa !5
  %1078 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %1079 = trunc i8 %1078 to i1
  %1080 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1075, ptr noundef nonnull align 8 dereferenceable(41) %1077, i32 noundef 2, i1 noundef zeroext %1079)
          to label %1081 unwind label %1014

1081:                                             ; preds = %1074
  %1082 = load i64, ptr %10, align 8, !tbaa !9
  %1083 = add i64 %1082, %1080
  store i64 %1083, ptr %10, align 8, !tbaa !9
  br label %1084

1084:                                             ; preds = %1081, %1073, %1055
  %1085 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %1040, !llvm.loop !40

1086:                                             ; preds = %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %1087 = load ptr, ptr %7, align 8, !tbaa !5
  %1088 = load ptr, ptr %1087, align 8, !tbaa !14
  %1089 = getelementptr inbounds ptr, ptr %1088, i64 25
  %1090 = load ptr, ptr %1089, align 8
  %1091 = invoke noundef ptr %1090(ptr noundef nonnull align 8 dereferenceable(8) %1087)
          to label %1092 unwind label %1112

1092:                                             ; preds = %1086
  %1093 = invoke ptr @_ZNK8OpenMesh10BaseKernel12eprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %1091)
          to label %1094 unwind label %1112

1094:                                             ; preds = %1092
  %1095 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  store ptr %1093, ptr %1095, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %71, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %1096

1096:                                             ; preds = %1140, %1094
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #9
  %1097 = load ptr, ptr %7, align 8, !tbaa !5
  %1098 = load ptr, ptr %1097, align 8, !tbaa !14
  %1099 = getelementptr inbounds ptr, ptr %1098, i64 25
  %1100 = load ptr, ptr %1099, align 8
  %1101 = invoke noundef ptr %1100(ptr noundef nonnull align 8 dereferenceable(8) %1097)
          to label %1102 unwind label %1116

1102:                                             ; preds = %1096
  %1103 = invoke ptr @_ZNK8OpenMesh10BaseKernel10eprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %1101)
          to label %1104 unwind label %1116

1104:                                             ; preds = %1102
  %1105 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %72, i32 0, i32 0
  store ptr %1103, ptr %1105, align 8
  %1106 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  br i1 %1106, label %1107, label %1142

1107:                                             ; preds = %1104
  %1108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1109 = load ptr, ptr %1108, align 8, !tbaa !5
  %1110 = icmp ne ptr %1109, null
  br i1 %1110, label %1120, label %1111

1111:                                             ; preds = %1107
  br label %1140

1112:                                             ; preds = %1092, %1086
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %12, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %1262

1116:                                             ; preds = %1102, %1096
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %12, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  br label %1262

1120:                                             ; preds = %1107
  %1121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1122 = load ptr, ptr %1121, align 8, !tbaa !5
  %1123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %1122)
          to label %1124 unwind label %1014

1124:                                             ; preds = %1120
  %1125 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1123, i64 noundef 1) #9
  %1126 = load i8, ptr %1125, align 1, !tbaa !13
  %1127 = sext i8 %1126 to i32
  %1128 = icmp eq i32 %1127, 58
  br i1 %1128, label %1129, label %1130

1129:                                             ; preds = %1124
  br label %1140

1130:                                             ; preds = %1124
  %1131 = load ptr, ptr %6, align 8, !tbaa !5
  %1132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1133 = load ptr, ptr %1132, align 8, !tbaa !5
  %1134 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %1135 = trunc i8 %1134 to i1
  %1136 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1131, ptr noundef nonnull align 8 dereferenceable(41) %1133, i32 noundef 4, i1 noundef zeroext %1135)
          to label %1137 unwind label %1014

1137:                                             ; preds = %1130
  %1138 = load i64, ptr %10, align 8, !tbaa !9
  %1139 = add i64 %1138, %1136
  store i64 %1139, ptr %10, align 8, !tbaa !9
  br label %1140

1140:                                             ; preds = %1137, %1129, %1111
  %1141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %1096, !llvm.loop !41

1142:                                             ; preds = %1104
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  %1143 = load ptr, ptr %7, align 8, !tbaa !5
  %1144 = load ptr, ptr %1143, align 8, !tbaa !14
  %1145 = getelementptr inbounds ptr, ptr %1144, i64 25
  %1146 = load ptr, ptr %1145, align 8
  %1147 = invoke noundef ptr %1146(ptr noundef nonnull align 8 dereferenceable(8) %1143)
          to label %1148 unwind label %1168

1148:                                             ; preds = %1142
  %1149 = invoke ptr @_ZNK8OpenMesh10BaseKernel12hprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %1147)
          to label %1150 unwind label %1168

1150:                                             ; preds = %1148
  %1151 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %73, i32 0, i32 0
  store ptr %1149, ptr %1151, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %73, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %1152

1152:                                             ; preds = %1196, %1150
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %1153 = load ptr, ptr %7, align 8, !tbaa !5
  %1154 = load ptr, ptr %1153, align 8, !tbaa !14
  %1155 = getelementptr inbounds ptr, ptr %1154, i64 25
  %1156 = load ptr, ptr %1155, align 8
  %1157 = invoke noundef ptr %1156(ptr noundef nonnull align 8 dereferenceable(8) %1153)
          to label %1158 unwind label %1172

1158:                                             ; preds = %1152
  %1159 = invoke ptr @_ZNK8OpenMesh10BaseKernel10hprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %1157)
          to label %1160 unwind label %1172

1160:                                             ; preds = %1158
  %1161 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %74, i32 0, i32 0
  store ptr %1159, ptr %1161, align 8
  %1162 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br i1 %1162, label %1163, label %1198

1163:                                             ; preds = %1160
  %1164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1165 = load ptr, ptr %1164, align 8, !tbaa !5
  %1166 = icmp ne ptr %1165, null
  br i1 %1166, label %1176, label %1167

1167:                                             ; preds = %1163
  br label %1196

1168:                                             ; preds = %1148, %1142
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %12, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %1262

1172:                                             ; preds = %1158, %1152
  %1173 = landingpad { ptr, i32 }
          cleanup
  %1174 = extractvalue { ptr, i32 } %1173, 0
  store ptr %1174, ptr %12, align 8
  %1175 = extractvalue { ptr, i32 } %1173, 1
  store i32 %1175, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %1262

1176:                                             ; preds = %1163
  %1177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1178 = load ptr, ptr %1177, align 8, !tbaa !5
  %1179 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %1178)
          to label %1180 unwind label %1014

1180:                                             ; preds = %1176
  %1181 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1179, i64 noundef 1) #9
  %1182 = load i8, ptr %1181, align 1, !tbaa !13
  %1183 = sext i8 %1182 to i32
  %1184 = icmp eq i32 %1183, 58
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1180
  br label %1196

1186:                                             ; preds = %1180
  %1187 = load ptr, ptr %6, align 8, !tbaa !5
  %1188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1189 = load ptr, ptr %1188, align 8, !tbaa !5
  %1190 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %1191 = trunc i8 %1190 to i1
  %1192 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1187, ptr noundef nonnull align 8 dereferenceable(41) %1189, i32 noundef 6, i1 noundef zeroext %1191)
          to label %1193 unwind label %1014

1193:                                             ; preds = %1186
  %1194 = load i64, ptr %10, align 8, !tbaa !9
  %1195 = add i64 %1194, %1192
  store i64 %1195, ptr %10, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1193, %1185, %1167
  %1197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %1152, !llvm.loop !42

1198:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %1199 = load ptr, ptr %7, align 8, !tbaa !5
  %1200 = load ptr, ptr %1199, align 8, !tbaa !14
  %1201 = getelementptr inbounds ptr, ptr %1200, i64 25
  %1202 = load ptr, ptr %1201, align 8
  %1203 = invoke noundef ptr %1202(ptr noundef nonnull align 8 dereferenceable(8) %1199)
          to label %1204 unwind label %1224

1204:                                             ; preds = %1198
  %1205 = invoke ptr @_ZNK8OpenMesh10BaseKernel12mprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %1203)
          to label %1206 unwind label %1224

1206:                                             ; preds = %1204
  %1207 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %75, i32 0, i32 0
  store ptr %1205, ptr %1207, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %75, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %1208

1208:                                             ; preds = %1252, %1206
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #9
  %1209 = load ptr, ptr %7, align 8, !tbaa !5
  %1210 = load ptr, ptr %1209, align 8, !tbaa !14
  %1211 = getelementptr inbounds ptr, ptr %1210, i64 25
  %1212 = load ptr, ptr %1211, align 8
  %1213 = invoke noundef ptr %1212(ptr noundef nonnull align 8 dereferenceable(8) %1209)
          to label %1214 unwind label %1228

1214:                                             ; preds = %1208
  %1215 = invoke ptr @_ZNK8OpenMesh10BaseKernel10mprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %1213)
          to label %1216 unwind label %1228

1216:                                             ; preds = %1214
  %1217 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %76, i32 0, i32 0
  store ptr %1215, ptr %1217, align 8
  %1218 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  br i1 %1218, label %1219, label %1254

1219:                                             ; preds = %1216
  %1220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1221 = load ptr, ptr %1220, align 8, !tbaa !5
  %1222 = icmp ne ptr %1221, null
  br i1 %1222, label %1232, label %1223

1223:                                             ; preds = %1219
  br label %1252

1224:                                             ; preds = %1204, %1198
  %1225 = landingpad { ptr, i32 }
          cleanup
  %1226 = extractvalue { ptr, i32 } %1225, 0
  store ptr %1226, ptr %12, align 8
  %1227 = extractvalue { ptr, i32 } %1225, 1
  store i32 %1227, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %1262

1228:                                             ; preds = %1214, %1208
  %1229 = landingpad { ptr, i32 }
          cleanup
  %1230 = extractvalue { ptr, i32 } %1229, 0
  store ptr %1230, ptr %12, align 8
  %1231 = extractvalue { ptr, i32 } %1229, 1
  store i32 %1231, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  br label %1262

1232:                                             ; preds = %1219
  %1233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1234 = load ptr, ptr %1233, align 8, !tbaa !5
  %1235 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %1234)
          to label %1236 unwind label %1014

1236:                                             ; preds = %1232
  %1237 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1235, i64 noundef 1) #9
  %1238 = load i8, ptr %1237, align 1, !tbaa !13
  %1239 = sext i8 %1238 to i32
  %1240 = icmp eq i32 %1239, 58
  br i1 %1240, label %1241, label %1242

1241:                                             ; preds = %1236
  br label %1252

1242:                                             ; preds = %1236
  %1243 = load ptr, ptr %6, align 8, !tbaa !5
  %1244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  %1245 = load ptr, ptr %1244, align 8, !tbaa !5
  %1246 = load i8, ptr %11, align 1, !tbaa !11, !range !23, !noundef !24
  %1247 = trunc i8 %1246 to i1
  %1248 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1243, ptr noundef nonnull align 8 dereferenceable(41) %1245, i32 noundef 1, i1 noundef zeroext %1247)
          to label %1249 unwind label %1014

1249:                                             ; preds = %1242
  %1250 = load i64, ptr %10, align 8, !tbaa !9
  %1251 = add i64 %1250, %1248
  store i64 %1251, ptr %10, align 8, !tbaa !9
  br label %1252

1252:                                             ; preds = %1249, %1241, %1223
  %1253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  br label %1208, !llvm.loop !43

1254:                                             ; preds = %1216
  %1255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4clog, ptr noundef @.str.5)
          to label %1256 unwind label %1014

1256:                                             ; preds = %1254
  %1257 = load i64, ptr %10, align 8, !tbaa !9
  %1258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1255, i64 noundef %1257)
          to label %1259 unwind label %1014

1259:                                             ; preds = %1256
  %1260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1258, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1261 unwind label %1014

1261:                                             ; preds = %1259
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  ret i1 true

1262:                                             ; preds = %1228, %1224, %1172, %1168, %1116, %1112, %1060, %1056, %1014, %1000, %996
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1263

1263:                                             ; preds = %1262, %969, %862, %736, %708, %633, %629, %519, %393, %269, %265, %261
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %1264

1264:                                             ; preds = %1263, %257
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #9
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  br label %1265

1265:                                             ; preds = %1264, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %1266

1266:                                             ; preds = %1265, %249
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %1267

1267:                                             ; preds = %1266, %245
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  br label %1268

1268:                                             ; preds = %1267
  %1269 = load ptr, ptr %12, align 8
  %1270 = load i32, ptr %13, align 4
  %1271 = insertvalue { ptr, i32 } poison, ptr %1269, 0
  %1272 = insertvalue { ptr, i32 } %1271, i32 %1270, 1
  resume { ptr, i32 } %1272
}

declare noundef nonnull align 8 dereferenceable(224) ptr @_Z5omlogv() #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEEC2ERS2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(224)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8OpenMesh6Endian5localEv() #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #2 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) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float>, float) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4)) #1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIhLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(3), i1 noundef zeroext) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi2EEEEENS1_5Chunk3DimET_(<2 x float>) #7

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

declare noundef i32 @_ZN8OpenMesh2IO8OMFormat11needed_bitsEm(i64 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeImEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i1 noundef zeroext) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeIiEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef, i1 noundef zeroext) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8OpenMesh10BaseHandle3idxEv(ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNK8OpenMesh10BaseKernel12vprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNK8OpenMesh10BaseKernel10vprops_endEv(ptr noundef nonnull align 8 dereferenceable(168)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(41), i32 noundef, i1 noundef zeroext) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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 }
%"struct.OpenMesh::IO::Enabler" = type { ptr }
%"class.OpenMesh::VectorT" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.OpenMesh::VectorT.18" = type { %"struct.std::array.19" }
%"struct.std::array.19" = type { [2 x float] }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl" }
%"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl" = type { %"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.OpenMesh::IO::OMFormat::Header" = type { [2 x i8], i8, i8, i32, i32, i32 }
%"struct.OpenMesh::IO::OMFormat::Chunk::Header" = type { i32 }
%"struct.OpenMesh::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.OpenMesh::VectorT.25" = type { %"struct.std::array.26" }
%"struct.std::array.26" = type { [3 x i8] }
%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@_ZN8OpenMesh2IO10_OMWriter_8version_E = external dso_local local_unnamed_addr global i8, align 1
@_ZSt4clog = external global %"class.std::basic_ostream", align 8
@.str.5 = external hidden unnamed_addr constant [17 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: 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 dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO10_OMWriter_12write_binaryERSoRNS0_12BaseExporterENS0_7OptionsE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.OpenMesh::IO::Enabler", align 8
  %6 = alloca %"class.OpenMesh::VectorT", align 8
  %7 = alloca %"class.OpenMesh::VectorT.18", align 8
  %8 = alloca %"class.std::vector.20", align 8
  %9 = alloca %"struct.OpenMesh::IO::OMFormat::Header", align 4
  %10 = alloca %"struct.OpenMesh::IO::OMFormat::Chunk::Header", align 4
  %11 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %12 = alloca %"class.OpenMesh::VectorT", align 8
  %13 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %14 = alloca %"class.OpenMesh::VectorT", align 8
  %15 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %16 = alloca %"class.OpenMesh::VectorT", align 8
  %17 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %18 = alloca %"class.OpenMesh::VectorT.25", align 4
  %19 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %20 = alloca %"class.OpenMesh::VectorT.25", align 4
  %21 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %22 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %23 = alloca %"class.OpenMesh::VectorT.18", align 8
  %24 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %25 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.OpenMesh::VectorT", align 8
  %29 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %30 = alloca %"class.OpenMesh::VectorT", align 8
  %31 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %32 = alloca %"class.OpenMesh::VectorT.25", align 4
  %33 = alloca %"class.OpenMesh::VectorT.25", align 4
  %34 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %35 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %41 = tail call noundef nonnull align 8 dereferenceable(224) ptr @_Z5omlogv()
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEEC2ERS2_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(224) %41)
  %42 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 8)
  br i1 %42, label %46, label %43

43:                                               ; preds = %4
  %44 = call noundef i32 @_ZN8OpenMesh6Endian5localEv()
  %45 = icmp eq i32 %44, 2
  br label %46

46:                                               ; preds = %43, %4
  %47 = phi i1 [ true, %4 ], [ %45, %43 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #8
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %7)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  store i8 79, ptr %9, align 4, !tbaa !5
  %48 = getelementptr inbounds i8, ptr %9, i64 1
  store i8 77, ptr %48, align 1, !tbaa !5
  %49 = load ptr, ptr %2, align 8, !tbaa !8
  %50 = getelementptr inbounds i8, ptr %49, i64 232
  %51 = load ptr, ptr %50, align 8
  %52 = invoke noundef zeroext i1 %51(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %53 unwind label %139

53:                                               ; preds = %46
  %54 = select i1 %52, i8 84, i8 80
  %55 = getelementptr inbounds i8, ptr %9, i64 2
  store i8 %54, ptr %55, align 2, !tbaa !10
  %56 = load i8, ptr @_ZN8OpenMesh2IO10_OMWriter_8version_E, align 1, !tbaa !5
  %57 = getelementptr inbounds i8, ptr %9, i64 3
  store i8 %56, ptr %57, align 1, !tbaa !13
  %58 = load ptr, ptr %2, align 8, !tbaa !8
  %59 = getelementptr inbounds i8, ptr %58, i64 208
  %60 = load ptr, ptr %59, align 8
  %61 = invoke noundef i64 %60(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %62 unwind label %139

62:                                               ; preds = %53
  %63 = trunc i64 %61 to i32
  %64 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 %63, ptr %64, align 4, !tbaa !14
  %65 = load ptr, ptr %2, align 8, !tbaa !8
  %66 = getelementptr inbounds i8, ptr %65, i64 216
  %67 = load ptr, ptr %66, align 8
  %68 = invoke noundef i64 %67(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %69 unwind label %139

69:                                               ; preds = %62
  %70 = trunc i64 %68 to i32
  %71 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %70, ptr %71, align 4, !tbaa !15
  %72 = load ptr, ptr %2, align 8, !tbaa !8
  %73 = getelementptr inbounds i8, ptr %72, i64 224
  %74 = load ptr, ptr %73, align 8
  %75 = invoke noundef i64 %74(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %76 unwind label %139

76:                                               ; preds = %69
  %77 = trunc i64 %75 to i32
  %78 = getelementptr inbounds i8, ptr %9, i64 12
  store i32 %77, ptr %78, align 4, !tbaa !16
  %79 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(16) %9, i1 noundef zeroext %47)
          to label %80 unwind label %139

80:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  %81 = load ptr, ptr %2, align 8, !tbaa !8
  %82 = getelementptr inbounds i8, ptr %81, i64 208
  %83 = load ptr, ptr %82, align 8
  %84 = invoke noundef i64 %83(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %85 unwind label %.loopexit.split-lp228

85:                                               ; preds = %80
  %.not = icmp eq i64 %84, 0
  br i1 %.not, label %.loopexit233, label %86

86:                                               ; preds = %85
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %11, i32 noundef 0)
          to label %87 unwind label %141

87:                                               ; preds = %86
  %88 = load i32, ptr %11, align 4
  %89 = load ptr, ptr %2, align 8, !tbaa !8
  %90 = getelementptr inbounds i8, ptr %89, i64 16
  %91 = load ptr, ptr %90, align 8
  %92 = invoke { <2 x float>, float } %91(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %88)
          to label %93 unwind label %141

93:                                               ; preds = %87
  %.fca.0.extract42 = extractvalue { <2 x float>, float } %92, 0
  %.fca.1.extract43 = extractvalue { <2 x float>, float } %92, 1
  store <2 x float> %.fca.0.extract42, ptr %6, align 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8
  store float %.fca.1.extract43, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !5
  %94 = load i32, ptr %10, align 4
  %95 = and i32 %94, -512
  store i32 %95, ptr %10, align 4
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 0)
  %97 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %96)
  %98 = load i32, ptr %10, align 4
  %99 = select i1 %97, i32 512, i32 0
  %100 = and i32 %98, -513
  %101 = or disjoint i32 %100, %99
  store i32 %101, ptr %10, align 4
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 0)
  %103 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %102)
  %104 = load i32, ptr %10, align 4
  %105 = select i1 %103, i32 1024, i32 0
  %106 = and i32 %104, -1025
  %107 = or disjoint i32 %106, %105
  store i32 %107, ptr %10, align 4
  %.sroa.040.0.copyload = load <2 x float>, ptr %6, align 8
  %.sroa.241.0.copyload = load float, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !5
  %108 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %.sroa.040.0.copyload, float %.sroa.241.0.copyload)
          to label %109 unwind label %.loopexit.split-lp228

109:                                              ; preds = %93
  %110 = load i32, ptr %10, align 4
  %111 = shl i32 %108, 11
  %112 = and i32 %111, 14336
  %113 = and i32 %110, -14337
  %114 = or disjoint i32 %113, %112
  store i32 %114, ptr %10, align 4
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 0)
  %116 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %115)
          to label %117 unwind label %.loopexit.split-lp228

117:                                              ; preds = %109
  %118 = load i32, ptr %10, align 4
  %119 = shl i32 %116, 14
  %120 = and i32 %119, 49152
  %121 = and i32 %118, -49153
  %122 = or disjoint i32 %121, %120
  store i32 %122, ptr %10, align 4
  %123 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %124 unwind label %.loopexit.split-lp228

124:                                              ; preds = %117
  %125 = add i64 %123, %79
  %126 = load i32, ptr %64, align 4, !tbaa !14
  %.not295 = icmp eq i32 %126, 0
  br i1 %.not295, label %.loopexit233, label %.lr.ph

.lr.ph:                                           ; preds = %124
  %.sroa.237.0..sroa_idx = getelementptr inbounds i8, ptr %12, i64 8
  br label %127

127:                                              ; preds = %.lr.ph, %136
  %.0255 = phi i64 [ %125, %.lr.ph ], [ %137, %136 ]
  %.0189254 = phi i32 [ 0, %.lr.ph ], [ %138, %136 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef %.0189254)
          to label %128 unwind label %143

128:                                              ; preds = %127
  %129 = load i32, ptr %13, align 4
  %130 = load ptr, ptr %2, align 8, !tbaa !8
  %131 = getelementptr inbounds i8, ptr %130, i64 16
  %132 = load ptr, ptr %131, align 8
  %133 = invoke { <2 x float>, float } %132(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %129)
          to label %134 unwind label %143

134:                                              ; preds = %128
  %.fca.0.extract34 = extractvalue { <2 x float>, float } %133, 0
  %.fca.1.extract35 = extractvalue { <2 x float>, float } %133, 1
  store <2 x float> %.fca.0.extract34, ptr %12, align 8
  store float %.fca.1.extract35, ptr %.sroa.237.0..sroa_idx, align 8
  %135 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(12) %12, i1 noundef zeroext %47)
          to label %136 unwind label %143

136:                                              ; preds = %134
  %137 = add i64 %135, %.0255
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #8
  %138 = add nuw i32 %.0189254, 1
  %exitcond.not = icmp eq i32 %138, %126
  br i1 %exitcond.not, label %.loopexit233, label %127, !llvm.loop !17

139:                                              ; preds = %76, %69, %62, %53, %46
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %715

.loopexit227:                                     ; preds = %.lr.ph280
  %lpad.loopexit229 = landingpad { ptr, i32 }
          cleanup
  br label %714

.loopexit.split-lp228:                            ; preds = %80, %93, %109, %117, %.loopexit233, %211, %219, %283, %298, %315, %323, %.loopexit232, %355, %357, %._crit_edge281, %462
  %lpad.loopexit.split-lp230 = landingpad { ptr, i32 }
          cleanup
  br label %714

141:                                              ; preds = %87, %86
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %714

143:                                              ; preds = %134, %128, %127
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #8
  br label %714

.loopexit233:                                     ; preds = %136, %124, %85
  %.1 = phi i64 [ %79, %85 ], [ %125, %124 ], [ %137, %136 ]
  %145 = load ptr, ptr %2, align 8, !tbaa !8
  %146 = getelementptr inbounds i8, ptr %145, i64 208
  %147 = load ptr, ptr %146, align 8
  %148 = invoke noundef i64 %147(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %149 unwind label %.loopexit.split-lp228

149:                                              ; preds = %.loopexit233
  %.not197 = icmp eq i64 %148, 0
  br i1 %.not197, label %211, label %150

150:                                              ; preds = %149
  %151 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 16)
  br i1 %151, label %152, label %211

152:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %15, i32 noundef 0)
          to label %153 unwind label %206

153:                                              ; preds = %152
  %154 = load i32, ptr %15, align 4
  %155 = load ptr, ptr %2, align 8, !tbaa !8
  %156 = getelementptr inbounds i8, ptr %155, i64 24
  %157 = load ptr, ptr %156, align 8
  %158 = invoke { <2 x float>, float } %157(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %154)
          to label %159 unwind label %206

159:                                              ; preds = %153
  %.fca.0.extract30 = extractvalue { <2 x float>, float } %158, 0
  %.fca.1.extract31 = extractvalue { <2 x float>, float } %158, 1
  store <2 x float> %.fca.0.extract30, ptr %14, align 8
  %.sroa.233.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  store float %.fca.1.extract31, ptr %.sroa.233.0..sroa_idx, align 8
  %160 = load i32, ptr %10, align 4
  %161 = and i32 %160, -511
  %162 = or disjoint i32 %161, 32
  store i32 %162, ptr %10, align 4
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %14, i64 noundef 0)
  %164 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %163)
  %165 = load i32, ptr %10, align 4
  %166 = select i1 %164, i32 512, i32 0
  %167 = and i32 %165, -513
  %168 = or disjoint i32 %167, %166
  store i32 %168, ptr %10, align 4
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %14, i64 noundef 0)
  %170 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %169)
  %171 = load i32, ptr %10, align 4
  %172 = select i1 %170, i32 1024, i32 0
  %173 = and i32 %171, -1025
  %174 = or disjoint i32 %173, %172
  store i32 %174, ptr %10, align 4
  %.sroa.028.0.copyload = load <2 x float>, ptr %14, align 8
  %.sroa.229.0.copyload = load float, ptr %.sroa.233.0..sroa_idx, align 8, !tbaa !5
  %175 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %.sroa.028.0.copyload, float %.sroa.229.0.copyload)
          to label %176 unwind label %206

176:                                              ; preds = %159
  %177 = load i32, ptr %10, align 4
  %178 = shl i32 %175, 11
  %179 = and i32 %178, 14336
  %180 = and i32 %177, -14337
  %181 = or disjoint i32 %180, %179
  store i32 %181, ptr %10, align 4
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %14, i64 noundef 0)
  %183 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %182)
          to label %184 unwind label %206

184:                                              ; preds = %176
  %185 = load i32, ptr %10, align 4
  %186 = shl i32 %183, 14
  %187 = and i32 %186, 49152
  %188 = and i32 %185, -49153
  %189 = or disjoint i32 %188, %187
  store i32 %189, ptr %10, align 4
  %190 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %191 unwind label %206

191:                                              ; preds = %184
  %192 = add i64 %190, %.1
  %193 = load i32, ptr %64, align 4, !tbaa !14
  %.not296 = icmp eq i32 %193, 0
  br i1 %.not296, label %._crit_edge, label %.lr.ph258

.lr.ph258:                                        ; preds = %191
  %.sroa.225.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  br label %194

194:                                              ; preds = %.lr.ph258, %203
  %.2257 = phi i64 [ %192, %.lr.ph258 ], [ %204, %203 ]
  %.1190256 = phi i32 [ 0, %.lr.ph258 ], [ %205, %203 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef %.1190256)
          to label %195 unwind label %208

195:                                              ; preds = %194
  %196 = load i32, ptr %17, align 4
  %197 = load ptr, ptr %2, align 8, !tbaa !8
  %198 = getelementptr inbounds i8, ptr %197, i64 24
  %199 = load ptr, ptr %198, align 8
  %200 = invoke { <2 x float>, float } %199(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %196)
          to label %201 unwind label %208

201:                                              ; preds = %195
  %.fca.0.extract22 = extractvalue { <2 x float>, float } %200, 0
  %.fca.1.extract23 = extractvalue { <2 x float>, float } %200, 1
  store <2 x float> %.fca.0.extract22, ptr %16, align 8
  store float %.fca.1.extract23, ptr %.sroa.225.0..sroa_idx, align 8
  %202 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(12) %16, i1 noundef zeroext %47)
          to label %203 unwind label %208

203:                                              ; preds = %201
  %204 = add i64 %202, %.2257
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #8
  %205 = add nuw i32 %.1190256, 1
  %exitcond319.not = icmp eq i32 %205, %193
  br i1 %exitcond319.not, label %._crit_edge, label %194, !llvm.loop !19

206:                                              ; preds = %184, %176, %159, %153, %152
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %210

208:                                              ; preds = %201, %195, %194
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #8
  br label %210

._crit_edge:                                      ; preds = %203, %191
  %.2.lcssa = phi i64 [ %192, %191 ], [ %204, %203 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #8
  br label %211

210:                                              ; preds = %208, %206
  %.pn212 = phi { ptr, i32 } [ %209, %208 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #8
  br label %714

211:                                              ; preds = %._crit_edge, %150, %149
  %.3 = phi i64 [ %.2.lcssa, %._crit_edge ], [ %.1, %150 ], [ %.1, %149 ]
  %212 = load ptr, ptr %2, align 8, !tbaa !8
  %213 = getelementptr inbounds i8, ptr %212, i64 208
  %214 = load ptr, ptr %213, align 8
  %215 = invoke noundef i64 %214(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %216 unwind label %.loopexit.split-lp228

216:                                              ; preds = %211
  %.not198 = icmp eq i64 %215, 0
  br i1 %.not198, label %283, label %217

217:                                              ; preds = %216
  %218 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 32)
  br i1 %218, label %219, label %283

219:                                              ; preds = %217
  %220 = load ptr, ptr %2, align 8, !tbaa !8
  %221 = getelementptr inbounds i8, ptr %220, i64 248
  %222 = load ptr, ptr %221, align 8
  %223 = invoke noundef zeroext i1 %222(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %224 unwind label %.loopexit.split-lp228

224:                                              ; preds = %219
  br i1 %223, label %225, label %283

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %18) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 noundef 0)
          to label %226 unwind label %278

226:                                              ; preds = %225
  %227 = load i32, ptr %19, align 4
  %228 = load ptr, ptr %2, align 8, !tbaa !8
  %229 = getelementptr inbounds i8, ptr %228, i64 32
  %230 = load ptr, ptr %229, align 8
  %231 = invoke i24 %230(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %227)
          to label %232 unwind label %278

232:                                              ; preds = %226
  store i24 %231, ptr %18, align 4
  %233 = load i32, ptr %10, align 4
  %234 = and i32 %233, -511
  %235 = or disjoint i32 %234, 128
  store i32 %235, ptr %10, align 4
  %236 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %18, i64 noundef 0)
  %237 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %236)
  %238 = load i32, ptr %10, align 4
  %239 = select i1 %237, i32 512, i32 0
  %240 = and i32 %238, -513
  %241 = or disjoint i32 %240, %239
  store i32 %241, ptr %10, align 4
  %242 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %18, i64 noundef 0)
  %243 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %242)
  %244 = load i32, ptr %10, align 4
  %245 = select i1 %243, i32 1024, i32 0
  %246 = and i32 %244, -1025
  %247 = or disjoint i32 %246, %245
  store i32 %247, ptr %10, align 4
  %.sroa.021.0.copyload = load i24, ptr %18, align 4, !tbaa !5
  %248 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24 %.sroa.021.0.copyload)
          to label %249 unwind label %278

249:                                              ; preds = %232
  %250 = load i32, ptr %10, align 4
  %251 = shl i32 %248, 11
  %252 = and i32 %251, 14336
  %253 = and i32 %250, -14337
  %254 = or disjoint i32 %253, %252
  store i32 %254, ptr %10, align 4
  %255 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %18, i64 noundef 0)
  %256 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1) %255)
          to label %257 unwind label %278

257:                                              ; preds = %249
  %258 = load i32, ptr %10, align 4
  %259 = shl i32 %256, 14
  %260 = and i32 %259, 49152
  %261 = and i32 %258, -49153
  %262 = or disjoint i32 %261, %260
  store i32 %262, ptr %10, align 4
  %263 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %264 unwind label %278

264:                                              ; preds = %257
  %265 = add i64 %263, %.3
  %266 = load i32, ptr %64, align 4, !tbaa !14
  %.not297 = icmp eq i32 %266, 0
  br i1 %.not297, label %._crit_edge264, label %.lr.ph263

.lr.ph263:                                        ; preds = %264, %275
  %.4261 = phi i64 [ %276, %275 ], [ %265, %264 ]
  %.2191260 = phi i32 [ %277, %275 ], [ 0, %264 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %20) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 noundef %.2191260)
          to label %267 unwind label %280

267:                                              ; preds = %.lr.ph263
  %268 = load i32, ptr %21, align 4
  %269 = load ptr, ptr %2, align 8, !tbaa !8
  %270 = getelementptr inbounds i8, ptr %269, i64 32
  %271 = load ptr, ptr %270, align 8
  %272 = invoke i24 %271(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %268)
          to label %273 unwind label %280

273:                                              ; preds = %267
  store i24 %272, ptr %20, align 4
  %274 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIhLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 1 dereferenceable(3) %20, i1 noundef zeroext %47)
          to label %275 unwind label %280

275:                                              ; preds = %273
  %276 = add i64 %274, %.4261
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %20) #8
  %277 = add nuw i32 %.2191260, 1
  %exitcond320.not = icmp eq i32 %277, %266
  br i1 %exitcond320.not, label %._crit_edge264, label %.lr.ph263, !llvm.loop !20

278:                                              ; preds = %257, %249, %232, %226, %225
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %282

280:                                              ; preds = %273, %267, %.lr.ph263
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %20) #8
  br label %282

._crit_edge264:                                   ; preds = %275, %264
  %.4.lcssa = phi i64 [ %265, %264 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %18) #8
  br label %283

282:                                              ; preds = %280, %278
  %.pn210 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %18) #8
  br label %714

283:                                              ; preds = %._crit_edge264, %224, %217, %216
  %.5 = phi i64 [ %.4.lcssa, %._crit_edge264 ], [ %.3, %224 ], [ %.3, %217 ], [ %.3, %216 ]
  %284 = load ptr, ptr %2, align 8, !tbaa !8
  %285 = getelementptr inbounds i8, ptr %284, i64 208
  %286 = load ptr, ptr %285, align 8
  %287 = invoke noundef i64 %286(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %288 unwind label %.loopexit.split-lp228

288:                                              ; preds = %283
  %.not199 = icmp eq i64 %287, 0
  br i1 %.not199, label %.loopexit232, label %289

289:                                              ; preds = %288
  %290 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 64)
  br i1 %290, label %291, label %.loopexit232

291:                                              ; preds = %289
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %22, i32 noundef 0)
          to label %292 unwind label %344

292:                                              ; preds = %291
  %293 = load i32, ptr %22, align 4
  %294 = load ptr, ptr %2, align 8, !tbaa !8
  %295 = getelementptr inbounds i8, ptr %294, i64 80
  %296 = load ptr, ptr %295, align 8
  %297 = invoke <2 x float> %296(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %293)
          to label %298 unwind label %344

298:                                              ; preds = %292
  store <2 x float> %297, ptr %7, align 8, !tbaa !5
  %299 = load i32, ptr %10, align 4
  %300 = and i32 %299, -511
  %301 = or disjoint i32 %300, 64
  store i32 %301, ptr %10, align 4
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %7, i64 noundef 0)
  %303 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %302)
  %304 = load i32, ptr %10, align 4
  %305 = select i1 %303, i32 512, i32 0
  %306 = and i32 %304, -513
  %307 = or disjoint i32 %306, %305
  store i32 %307, ptr %10, align 4
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %7, i64 noundef 0)
  %309 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %308)
  %310 = load i32, ptr %10, align 4
  %311 = select i1 %309, i32 1024, i32 0
  %312 = and i32 %310, -1025
  %313 = or disjoint i32 %312, %311
  store i32 %313, ptr %10, align 4
  %.sroa.018.0.copyload = load <2 x float>, ptr %7, align 8, !tbaa !5
  %314 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi2EEEEENS1_5Chunk3DimET_(<2 x float> %.sroa.018.0.copyload)
          to label %315 unwind label %.loopexit.split-lp228

315:                                              ; preds = %298
  %316 = load i32, ptr %10, align 4
  %317 = shl i32 %314, 11
  %318 = and i32 %317, 14336
  %319 = and i32 %316, -14337
  %320 = or disjoint i32 %319, %318
  store i32 %320, ptr %10, align 4
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %7, i64 noundef 0)
  %322 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %321)
          to label %323 unwind label %.loopexit.split-lp228

323:                                              ; preds = %315
  %324 = load i32, ptr %10, align 4
  %325 = shl i32 %322, 14
  %326 = and i32 %325, 49152
  %327 = and i32 %324, -49153
  %328 = or disjoint i32 %327, %326
  store i32 %328, ptr %10, align 4
  %329 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %330 unwind label %.loopexit.split-lp228

330:                                              ; preds = %323
  %331 = add i64 %329, %.5
  %332 = load i32, ptr %64, align 4, !tbaa !14
  %.not298 = icmp eq i32 %332, 0
  br i1 %.not298, label %.loopexit232, label %.lr.ph269

.lr.ph269:                                        ; preds = %330, %341
  %.6267 = phi i64 [ %342, %341 ], [ %331, %330 ]
  %.3192266 = phi i32 [ %343, %341 ], [ 0, %330 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %24, i32 noundef %.3192266)
          to label %333 unwind label %346

333:                                              ; preds = %.lr.ph269
  %334 = load i32, ptr %24, align 4
  %335 = load ptr, ptr %2, align 8, !tbaa !8
  %336 = getelementptr inbounds i8, ptr %335, i64 80
  %337 = load ptr, ptr %336, align 8
  %338 = invoke <2 x float> %337(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %334)
          to label %339 unwind label %346

339:                                              ; preds = %333
  store <2 x float> %338, ptr %23, align 8
  %340 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi2EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(8) %23, i1 noundef zeroext %47)
          to label %341 unwind label %346

341:                                              ; preds = %339
  %342 = add i64 %340, %.6267
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  %343 = add nuw i32 %.3192266, 1
  %exitcond321.not = icmp eq i32 %343, %332
  br i1 %exitcond321.not, label %.loopexit232, label %.lr.ph269, !llvm.loop !21

344:                                              ; preds = %292, %291
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %714

346:                                              ; preds = %339, %333, %.lr.ph269
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %714

.loopexit232:                                     ; preds = %341, %330, %289, %288
  %.7 = phi i64 [ %.5, %289 ], [ %.5, %288 ], [ %331, %330 ], [ %342, %341 ]
  %348 = load i32, ptr %10, align 4
  %349 = and i32 %348, -16383
  %350 = or disjoint i32 %349, 232
  store i32 %350, ptr %10, align 4
  %351 = load ptr, ptr %2, align 8, !tbaa !8
  %352 = getelementptr inbounds i8, ptr %351, i64 208
  %353 = load ptr, ptr %352, align 8
  %354 = invoke noundef i64 %353(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %355 unwind label %.loopexit.split-lp228

355:                                              ; preds = %.loopexit232
  %356 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat11needed_bitsEm(i64 noundef %354)
          to label %357 unwind label %.loopexit.split-lp228

357:                                              ; preds = %355
  %358 = load i32, ptr %10, align 4
  %359 = shl i32 %356, 14
  %360 = and i32 %359, 49152
  %361 = and i32 %358, -49153
  %362 = or disjoint i32 %361, %360
  store i32 %362, ptr %10, align 4
  %363 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %364 unwind label %.loopexit.split-lp228

364:                                              ; preds = %357
  %365 = add i64 %363, %.7
  %366 = load i32, ptr %71, align 4, !tbaa !15
  %.not299 = icmp eq i32 %366, 0
  br i1 %.not299, label %._crit_edge281, label %.lr.ph280

.lr.ph280:                                        ; preds = %364, %._crit_edge275
  %.8278 = phi i64 [ %.10.lcssa, %._crit_edge275 ], [ %365, %364 ]
  %.4193277 = phi i32 [ %384, %._crit_edge275 ], [ 0, %364 ]
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %25, i32 noundef %.4193277)
  %367 = load i32, ptr %25, align 4
  %368 = load ptr, ptr %2, align 8, !tbaa !8
  %369 = getelementptr inbounds i8, ptr %368, i64 88
  %370 = load ptr, ptr %369, align 8
  %371 = invoke noundef i32 %370(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %367, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %372 unwind label %.loopexit227

372:                                              ; preds = %.lr.ph280
  %373 = load i8, ptr %55, align 2, !tbaa !10
  %374 = icmp eq i8 %373, 80
  br i1 %374, label %375, label %382

375:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %376 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  store i64 %376, ptr %26, align 8, !tbaa !22
  %377 = invoke noundef i64 @_ZN8OpenMesh2IO5storeImEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %26, i32 noundef 1, i1 noundef zeroext %47)
          to label %378 unwind label %380

378:                                              ; preds = %375
  %379 = add i64 %377, %.8278
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %382

380:                                              ; preds = %375
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %714

382:                                              ; preds = %378, %372
  %.9 = phi i64 [ %379, %378 ], [ %.8278, %372 ]
  %383 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %.not300 = icmp eq i64 %383, 0
  br i1 %.not300, label %._crit_edge275, label %.lr.ph274

._crit_edge275:                                   ; preds = %391, %382
  %.10.lcssa = phi i64 [ %.9, %382 ], [ %392, %391 ]
  %384 = add nuw i32 %.4193277, 1
  %exitcond322.not = icmp eq i32 %384, %366
  br i1 %exitcond322.not, label %._crit_edge281, label %.lr.ph280, !llvm.loop !24

.lr.ph274:                                        ; preds = %382, %391
  %.10272 = phi i64 [ %392, %391 ], [ %.9, %382 ]
  %.0196271 = phi i64 [ %393, %391 ], [ 0, %382 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #8
  %385 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %.0196271) #8
  %386 = call noundef i32 @_ZNK8OpenMesh10BaseHandle3idxEv(ptr noundef nonnull align 4 dereferenceable(4) %385)
  store i32 %386, ptr %27, align 4, !tbaa !25
  %387 = load i32, ptr %10, align 4
  %388 = lshr i32 %387, 14
  %389 = and i32 %388, 3
  %390 = invoke noundef i64 @_ZN8OpenMesh2IO5storeIiEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %27, i32 noundef %389, i1 noundef zeroext %47)
          to label %391 unwind label %396

391:                                              ; preds = %.lr.ph274
  %392 = add i64 %390, %.10272
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  %393 = add nuw i64 %.0196271, 1
  %394 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %395 = icmp ult i64 %393, %394
  br i1 %395, label %.lr.ph274, label %._crit_edge275, !llvm.loop !26

396:                                              ; preds = %.lr.ph274
  %397 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  br label %714

._crit_edge281:                                   ; preds = %._crit_edge275, %364
  %.8.lcssa = phi i64 [ %365, %364 ], [ %.10.lcssa, %._crit_edge275 ]
  %398 = load ptr, ptr %2, align 8, !tbaa !8
  %399 = getelementptr inbounds i8, ptr %398, i64 272
  %400 = load ptr, ptr %399, align 8
  %401 = invoke noundef zeroext i1 %400(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %402 unwind label %.loopexit.split-lp228

402:                                              ; preds = %._crit_edge281
  br i1 %401, label %403, label %462

403:                                              ; preds = %402
  %404 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 256)
  br i1 %404, label %405, label %462

405:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #8
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %29, i32 noundef 0)
  %406 = load i32, ptr %29, align 4
  %407 = load ptr, ptr %2, align 8, !tbaa !8
  %408 = getelementptr inbounds i8, ptr %407, i64 96
  %409 = load ptr, ptr %408, align 8
  %410 = invoke { <2 x float>, float } %409(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %406)
          to label %411 unwind label %457

411:                                              ; preds = %405
  %.fca.0.extract11 = extractvalue { <2 x float>, float } %410, 0
  %.fca.1.extract12 = extractvalue { <2 x float>, float } %410, 1
  store <2 x float> %.fca.0.extract11, ptr %28, align 8
  %.sroa.214.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
  store float %.fca.1.extract12, ptr %.sroa.214.0..sroa_idx, align 8
  %412 = load i32, ptr %10, align 4
  %413 = and i32 %412, -511
  %414 = or disjoint i32 %413, 40
  store i32 %414, ptr %10, align 4
  %415 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %28, i64 noundef 0)
  %416 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %415)
  %417 = load i32, ptr %10, align 4
  %418 = select i1 %416, i32 512, i32 0
  %419 = and i32 %417, -513
  %420 = or disjoint i32 %419, %418
  store i32 %420, ptr %10, align 4
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %28, i64 noundef 0)
  %422 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4) %421)
  %423 = load i32, ptr %10, align 4
  %424 = select i1 %422, i32 1024, i32 0
  %425 = and i32 %423, -1025
  %426 = or disjoint i32 %425, %424
  store i32 %426, ptr %10, align 4
  %.sroa.09.0.copyload = load <2 x float>, ptr %28, align 8
  %.sroa.210.0.copyload = load float, ptr %.sroa.214.0..sroa_idx, align 8, !tbaa !5
  %427 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float> %.sroa.09.0.copyload, float %.sroa.210.0.copyload)
          to label %428 unwind label %457

428:                                              ; preds = %411
  %429 = load i32, ptr %10, align 4
  %430 = shl i32 %427, 11
  %431 = and i32 %430, 14336
  %432 = and i32 %429, -14337
  %433 = or disjoint i32 %432, %431
  store i32 %433, ptr %10, align 4
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %28, i64 noundef 0)
  %435 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4) %434)
          to label %436 unwind label %457

436:                                              ; preds = %428
  %437 = load i32, ptr %10, align 4
  %438 = shl i32 %435, 14
  %439 = and i32 %438, 49152
  %440 = and i32 %437, -49153
  %441 = or disjoint i32 %440, %439
  store i32 %441, ptr %10, align 4
  %442 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %443 unwind label %457

443:                                              ; preds = %436
  %444 = add i64 %442, %.8.lcssa
  %445 = load i32, ptr %71, align 4, !tbaa !15
  %.not301 = icmp eq i32 %445, 0
  br i1 %.not301, label %._crit_edge287, label %.lr.ph286

.lr.ph286:                                        ; preds = %443
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8
  br label %446

446:                                              ; preds = %.lr.ph286, %454
  %.11284 = phi i64 [ %444, %.lr.ph286 ], [ %455, %454 ]
  %.5194283 = phi i32 [ 0, %.lr.ph286 ], [ %456, %454 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #8
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %31, i32 noundef %.5194283)
  %447 = load i32, ptr %31, align 4
  %448 = load ptr, ptr %2, align 8, !tbaa !8
  %449 = getelementptr inbounds i8, ptr %448, i64 96
  %450 = load ptr, ptr %449, align 8
  %451 = invoke { <2 x float>, float } %450(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %447)
          to label %452 unwind label %459

452:                                              ; preds = %446
  %.fca.0.extract = extractvalue { <2 x float>, float } %451, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %451, 1
  store <2 x float> %.fca.0.extract, ptr %30, align 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %453 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(12) %30, i1 noundef zeroext %47)
          to label %454 unwind label %459

454:                                              ; preds = %452
  %455 = add i64 %453, %.11284
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #8
  %456 = add nuw i32 %.5194283, 1
  %exitcond323.not = icmp eq i32 %456, %445
  br i1 %exitcond323.not, label %._crit_edge287, label %446, !llvm.loop !27

457:                                              ; preds = %436, %428, %411, %405
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %461

459:                                              ; preds = %452, %446
  %460 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #8
  br label %461

._crit_edge287:                                   ; preds = %454, %443
  %.11.lcssa = phi i64 [ %444, %443 ], [ %455, %454 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #8
  br label %462

461:                                              ; preds = %459, %457
  %.pn208 = phi { ptr, i32 } [ %460, %459 ], [ %458, %457 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #8
  br label %714

462:                                              ; preds = %._crit_edge287, %403, %402
  %.12 = phi i64 [ %.11.lcssa, %._crit_edge287 ], [ %.8.lcssa, %403 ], [ %.8.lcssa, %402 ]
  %463 = load ptr, ptr %2, align 8, !tbaa !8
  %464 = getelementptr inbounds i8, ptr %463, i64 280
  %465 = load ptr, ptr %464, align 8
  %466 = invoke noundef zeroext i1 %465(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %467 unwind label %.loopexit.split-lp228

467:                                              ; preds = %462
  br i1 %466, label %468, label %520

468:                                              ; preds = %467
  %469 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 512)
  br i1 %469, label %470, label %520

470:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %32) #8
  call void @_ZN8OpenMesh7VectorTIhLi3EEC2Ev(ptr noundef nonnull align 1 dereferenceable(3) %32)
  %471 = load i32, ptr %10, align 4
  %472 = and i32 %471, -511
  %473 = or disjoint i32 %472, 136
  store i32 %473, ptr %10, align 4
  %474 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %32, i64 noundef 0)
  %475 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %474)
  %476 = load i32, ptr %10, align 4
  %477 = select i1 %475, i32 512, i32 0
  %478 = and i32 %476, -513
  %479 = or disjoint i32 %478, %477
  store i32 %479, ptr %10, align 4
  %480 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %32, i64 noundef 0)
  %481 = call noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1) %480)
  %482 = load i32, ptr %10, align 4
  %483 = select i1 %481, i32 1024, i32 0
  %484 = and i32 %482, -1025
  %485 = or disjoint i32 %484, %483
  store i32 %485, ptr %10, align 4
  %.sroa.05.0.copyload = load i24, ptr %32, align 4, !tbaa !5
  %486 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24 %.sroa.05.0.copyload)
          to label %487 unwind label %515

487:                                              ; preds = %470
  %488 = load i32, ptr %10, align 4
  %489 = shl i32 %486, 11
  %490 = and i32 %489, 14336
  %491 = and i32 %488, -14337
  %492 = or disjoint i32 %491, %490
  store i32 %492, ptr %10, align 4
  %493 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3) %32, i64 noundef 0)
  %494 = invoke noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1) %493)
          to label %495 unwind label %515

495:                                              ; preds = %487
  %496 = load i32, ptr %10, align 4
  %497 = shl i32 %494, 14
  %498 = and i32 %497, 49152
  %499 = and i32 %496, -49153
  %500 = or disjoint i32 %499, %498
  store i32 %500, ptr %10, align 4
  %501 = invoke noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 4 dereferenceable(4) %10, i1 noundef zeroext %47)
          to label %502 unwind label %515

502:                                              ; preds = %495
  %503 = add i64 %501, %.12
  %504 = load i32, ptr %71, align 4, !tbaa !15
  %.not302 = icmp eq i32 %504, 0
  br i1 %.not302, label %._crit_edge293, label %.lr.ph292

.lr.ph292:                                        ; preds = %502, %512
  %.13290 = phi i64 [ %513, %512 ], [ %503, %502 ]
  %.6195289 = phi i32 [ %514, %512 ], [ 0, %502 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %33) #8
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %34, i32 noundef %.6195289)
  %505 = load i32, ptr %34, align 4
  %506 = load ptr, ptr %2, align 8, !tbaa !8
  %507 = getelementptr inbounds i8, ptr %506, i64 104
  %508 = load ptr, ptr %507, align 8
  %509 = invoke i24 %508(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %505)
          to label %510 unwind label %517

510:                                              ; preds = %.lr.ph292
  store i24 %509, ptr %33, align 4
  %511 = invoke noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIhLi3EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 1 dereferenceable(3) %33, i1 noundef zeroext %47)
          to label %512 unwind label %517

512:                                              ; preds = %510
  %513 = add i64 %511, %.13290
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %33) #8
  %514 = add nuw i32 %.6195289, 1
  %exitcond324.not = icmp eq i32 %514, %504
  br i1 %exitcond324.not, label %._crit_edge293, label %.lr.ph292, !llvm.loop !28

515:                                              ; preds = %495, %487, %470
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %519

517:                                              ; preds = %510, %.lr.ph292
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %33) #8
  br label %519

._crit_edge293:                                   ; preds = %512, %502
  %.13.lcssa = phi i64 [ %503, %502 ], [ %513, %512 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %32) #8
  br label %520

519:                                              ; preds = %517, %515
  %.pn206 = phi { ptr, i32 } [ %518, %517 ], [ %516, %515 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %32) #8
  br label %714

520:                                              ; preds = %._crit_edge293, %468, %467
  %.14 = phi i64 [ %.13.lcssa, %._crit_edge293 ], [ %.12, %468 ], [ %.12, %467 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %521 = load ptr, ptr %2, align 8, !tbaa !8
  %522 = getelementptr inbounds i8, ptr %521, i64 200
  %523 = load ptr, ptr %522, align 8
  %524 = invoke noundef ptr %523(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %525 unwind label %540

525:                                              ; preds = %520
  %526 = invoke ptr @_ZNK8OpenMesh10BaseKernel12vprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %524)
          to label %527 unwind label %540

527:                                              ; preds = %525
  store ptr %526, ptr %35, align 8, !tbaa !29
  br label %528

528:                                              ; preds = %557, %527
  %.15 = phi i64 [ %.14, %527 ], [ %.16, %557 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  %529 = load ptr, ptr %2, align 8, !tbaa !8
  %530 = getelementptr inbounds i8, ptr %529, i64 200
  %531 = load ptr, ptr %530, align 8
  %532 = invoke noundef ptr %531(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %533 unwind label %542

533:                                              ; preds = %528
  %534 = invoke ptr @_ZNK8OpenMesh10BaseKernel10vprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %532)
          to label %535 unwind label %542

535:                                              ; preds = %533
  store ptr %534, ptr %36, align 8
  %536 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br i1 %536, label %537, label %559

537:                                              ; preds = %535
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %539 = load ptr, ptr %538, align 8, !tbaa !29
  %.not204 = icmp eq ptr %539, null
  br i1 %.not204, label %557, label %544

540:                                              ; preds = %525, %520
  %541 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

542:                                              ; preds = %533, %528
  %543 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %.loopexit.split-lp

544:                                              ; preds = %537
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %546 = load ptr, ptr %545, align 8, !tbaa !29
  %547 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %546)
  %548 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %547, i64 noundef 1) #8
  %549 = load i8, ptr %548, align 1, !tbaa !5
  %550 = icmp eq i8 %549, 58
  br i1 %550, label %557, label %551

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

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

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

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

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

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

551:                                              ; preds = %544
  %552 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %553 = load ptr, ptr %552, align 8, !tbaa !29
  %554 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(41) %553, i32 noundef 0, i1 noundef zeroext %47)
          to label %555 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

555:                                              ; preds = %551
  %556 = add i64 %554, %.15
  br label %557

557:                                              ; preds = %544, %537, %555
  %.16 = phi i64 [ %.15, %544 ], [ %556, %555 ], [ %.15, %537 ]
  %558 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %528, !llvm.loop !31

559:                                              ; preds = %535
  %560 = load ptr, ptr %2, align 8, !tbaa !8
  %561 = getelementptr inbounds i8, ptr %560, i64 200
  %562 = load ptr, ptr %561, align 8
  %563 = invoke noundef ptr %562(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %564 unwind label %577

564:                                              ; preds = %559
  %565 = call ptr @_ZNK8OpenMesh10BaseKernel12fprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %563)
  store ptr %565, ptr %35, align 8, !tbaa !29
  br label %566

566:                                              ; preds = %594, %564
  %.17 = phi i64 [ %.15, %564 ], [ %.18, %594 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  %567 = load ptr, ptr %2, align 8, !tbaa !8
  %568 = getelementptr inbounds i8, ptr %567, i64 200
  %569 = load ptr, ptr %568, align 8
  %570 = invoke noundef ptr %569(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %571 unwind label %579

571:                                              ; preds = %566
  %572 = call ptr @_ZNK8OpenMesh10BaseKernel10fprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %570)
  store ptr %572, ptr %37, align 8
  %573 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br i1 %573, label %574, label %596

574:                                              ; preds = %571
  %575 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %576 = load ptr, ptr %575, align 8, !tbaa !29
  %.not203 = icmp eq ptr %576, null
  br i1 %.not203, label %594, label %581

577:                                              ; preds = %559
  %578 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

579:                                              ; preds = %566
  %580 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %.loopexit.split-lp

581:                                              ; preds = %574
  %582 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %583 = load ptr, ptr %582, align 8, !tbaa !29
  %584 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %583)
  %585 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %584, i64 noundef 1) #8
  %586 = load i8, ptr %585, align 1, !tbaa !5
  %587 = icmp eq i8 %586, 58
  br i1 %587, label %594, label %588

588:                                              ; preds = %581
  %589 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %590 = load ptr, ptr %589, align 8, !tbaa !29
  %591 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(41) %590, i32 noundef 2, i1 noundef zeroext %47)
          to label %592 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

592:                                              ; preds = %588
  %593 = add i64 %591, %.17
  br label %594

594:                                              ; preds = %581, %574, %592
  %.18 = phi i64 [ %.17, %581 ], [ %593, %592 ], [ %.17, %574 ]
  %595 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %566, !llvm.loop !32

596:                                              ; preds = %571
  %597 = load ptr, ptr %2, align 8, !tbaa !8
  %598 = getelementptr inbounds i8, ptr %597, i64 200
  %599 = load ptr, ptr %598, align 8
  %600 = invoke noundef ptr %599(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %601 unwind label %614

601:                                              ; preds = %596
  %602 = call ptr @_ZNK8OpenMesh10BaseKernel12eprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %600)
  store ptr %602, ptr %35, align 8, !tbaa !29
  br label %603

603:                                              ; preds = %631, %601
  %.19 = phi i64 [ %.17, %601 ], [ %.20, %631 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  %604 = load ptr, ptr %2, align 8, !tbaa !8
  %605 = getelementptr inbounds i8, ptr %604, i64 200
  %606 = load ptr, ptr %605, align 8
  %607 = invoke noundef ptr %606(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %608 unwind label %616

608:                                              ; preds = %603
  %609 = call ptr @_ZNK8OpenMesh10BaseKernel10eprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %607)
  store ptr %609, ptr %38, align 8
  %610 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  br i1 %610, label %611, label %633

611:                                              ; preds = %608
  %612 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %613 = load ptr, ptr %612, align 8, !tbaa !29
  %.not202 = icmp eq ptr %613, null
  br i1 %.not202, label %631, label %618

614:                                              ; preds = %596
  %615 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

616:                                              ; preds = %603
  %617 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  br label %.loopexit.split-lp

618:                                              ; preds = %611
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %620 = load ptr, ptr %619, align 8, !tbaa !29
  %621 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %620)
  %622 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %621, i64 noundef 1) #8
  %623 = load i8, ptr %622, align 1, !tbaa !5
  %624 = icmp eq i8 %623, 58
  br i1 %624, label %631, label %625

625:                                              ; preds = %618
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %627 = load ptr, ptr %626, align 8, !tbaa !29
  %628 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(41) %627, i32 noundef 4, i1 noundef zeroext %47)
          to label %629 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

629:                                              ; preds = %625
  %630 = add i64 %628, %.19
  br label %631

631:                                              ; preds = %618, %611, %629
  %.20 = phi i64 [ %.19, %618 ], [ %630, %629 ], [ %.19, %611 ]
  %632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %603, !llvm.loop !33

633:                                              ; preds = %608
  %634 = load ptr, ptr %2, align 8, !tbaa !8
  %635 = getelementptr inbounds i8, ptr %634, i64 200
  %636 = load ptr, ptr %635, align 8
  %637 = invoke noundef ptr %636(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %638 unwind label %651

638:                                              ; preds = %633
  %639 = call ptr @_ZNK8OpenMesh10BaseKernel12hprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %637)
  store ptr %639, ptr %35, align 8, !tbaa !29
  br label %640

640:                                              ; preds = %668, %638
  %.21 = phi i64 [ %.19, %638 ], [ %.22, %668 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  %641 = load ptr, ptr %2, align 8, !tbaa !8
  %642 = getelementptr inbounds i8, ptr %641, i64 200
  %643 = load ptr, ptr %642, align 8
  %644 = invoke noundef ptr %643(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %645 unwind label %653

645:                                              ; preds = %640
  %646 = call ptr @_ZNK8OpenMesh10BaseKernel10hprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %644)
  store ptr %646, ptr %39, align 8
  %647 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br i1 %647, label %648, label %670

648:                                              ; preds = %645
  %649 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %650 = load ptr, ptr %649, align 8, !tbaa !29
  %.not201 = icmp eq ptr %650, null
  br i1 %.not201, label %668, label %655

651:                                              ; preds = %633
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

653:                                              ; preds = %640
  %654 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %.loopexit.split-lp

655:                                              ; preds = %648
  %656 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %657 = load ptr, ptr %656, align 8, !tbaa !29
  %658 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %657)
  %659 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %658, i64 noundef 1) #8
  %660 = load i8, ptr %659, align 1, !tbaa !5
  %661 = icmp eq i8 %660, 58
  br i1 %661, label %668, label %662

662:                                              ; preds = %655
  %663 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %664 = load ptr, ptr %663, align 8, !tbaa !29
  %665 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(41) %664, i32 noundef 6, i1 noundef zeroext %47)
          to label %666 unwind label %.loopexit.split-lp.loopexit

666:                                              ; preds = %662
  %667 = add i64 %665, %.21
  br label %668

668:                                              ; preds = %655, %648, %666
  %.22 = phi i64 [ %.21, %655 ], [ %667, %666 ], [ %.21, %648 ]
  %669 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %640, !llvm.loop !34

670:                                              ; preds = %645
  %671 = load ptr, ptr %2, align 8, !tbaa !8
  %672 = getelementptr inbounds i8, ptr %671, i64 200
  %673 = load ptr, ptr %672, align 8
  %674 = invoke noundef ptr %673(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %675 unwind label %688

675:                                              ; preds = %670
  %676 = call ptr @_ZNK8OpenMesh10BaseKernel12mprops_beginEv(ptr noundef nonnull align 8 dereferenceable(168) %674)
  store ptr %676, ptr %35, align 8, !tbaa !29
  br label %677

677:                                              ; preds = %705, %675
  %.23 = phi i64 [ %.21, %675 ], [ %.24, %705 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  %678 = load ptr, ptr %2, align 8, !tbaa !8
  %679 = getelementptr inbounds i8, ptr %678, i64 200
  %680 = load ptr, ptr %679, align 8
  %681 = invoke noundef ptr %680(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %682 unwind label %690

682:                                              ; preds = %677
  %683 = call ptr @_ZNK8OpenMesh10BaseKernel10mprops_endEv(ptr noundef nonnull align 8 dereferenceable(168) %681)
  store ptr %683, ptr %40, align 8
  %684 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br i1 %684, label %685, label %707

685:                                              ; preds = %682
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %687 = load ptr, ptr %686, align 8, !tbaa !29
  %.not200 = icmp eq ptr %687, null
  br i1 %.not200, label %705, label %692

688:                                              ; preds = %670
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

690:                                              ; preds = %677
  %691 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %.loopexit.split-lp

692:                                              ; preds = %685
  %693 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %694 = load ptr, ptr %693, align 8, !tbaa !29
  %695 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41) %694)
  %696 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %695, i64 noundef 1) #8
  %697 = load i8, ptr %696, align 1, !tbaa !5
  %698 = icmp eq i8 %697, 58
  br i1 %698, label %705, label %699

699:                                              ; preds = %692
  %700 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  %701 = load ptr, ptr %700, align 8, !tbaa !29
  %702 = invoke noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(41) %701, i32 noundef 1, i1 noundef zeroext %47)
          to label %703 unwind label %.loopexit

703:                                              ; preds = %699
  %704 = add i64 %702, %.23
  br label %705

705:                                              ; preds = %692, %685, %703
  %.24 = phi i64 [ %.23, %692 ], [ %704, %703 ], [ %.23, %685 ]
  %706 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN8OpenMesh12BasePropertyESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %677, !llvm.loop !35

707:                                              ; preds = %682
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4clog, ptr noundef nonnull @.str.5)
          to label %709 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

709:                                              ; preds = %707
  %710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %708, i64 noundef %.23)
          to label %711 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

711:                                              ; preds = %709
  %712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %713 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

713:                                              ; preds = %711
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #8
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  ret i1 true

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %690, %688, %653, %651, %616, %614, %579, %577, %542, %540
  %.pn = phi { ptr, i32 } [ %691, %690 ], [ %689, %688 ], [ %654, %653 ], [ %652, %651 ], [ %617, %616 ], [ %615, %614 ], [ %580, %579 ], [ %578, %577 ], [ %543, %542 ], [ %541, %540 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit217, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit220, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit222, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit225, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  br label %714

714:                                              ; preds = %.loopexit227, %.loopexit.split-lp228, %.loopexit.split-lp, %519, %461, %396, %380, %346, %344, %282, %210, %143, %141
  %.pn214 = phi { ptr, i32 } [ %144, %143 ], [ %.pn212, %210 ], [ %.pn210, %282 ], [ %347, %346 ], [ %397, %396 ], [ %381, %380 ], [ %.pn208, %461 ], [ %.pn206, %519 ], [ %.pn, %.loopexit.split-lp ], [ %345, %344 ], [ %142, %141 ], [ %lpad.loopexit229, %.loopexit227 ], [ %lpad.loopexit.split-lp230, %.loopexit.split-lp228 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br label %715

715:                                              ; preds = %714, %139
  %.pn214.pn = phi { ptr, i32 } [ %.pn214, %714 ], [ %140, %139 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #8
  call void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn214.pn
}

declare noundef nonnull align 8 dereferenceable(224) ptr @_Z5omlogv() local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh2IO7EnablerINS_8mostreamEEC2ERS2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(224)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8OpenMesh6Endian5localEv() local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIfEEbRKT_(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi3EEEEENS1_5Chunk3DimET_(<2 x float>, float) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIfEEjRKT_(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeINS0_8OMFormat5Chunk6HeaderEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), i1 noundef zeroext) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat9is_signedIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN8OpenMesh7VectorTIhLi3EEixEm(ptr noundef nonnull align 1 dereferenceable(3), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8OpenMesh2IO8OMFormat8is_floatIhEEbRKT_(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIhLi3EEEEENS1_5Chunk3DimET_(i24) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat4bitsIhEEjRKT_(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8OpenMesh2IO8OMFormat3dimINS_7VectorTIfLi2EEEEENS1_5Chunk3DimET_(<2 x float>) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO12vector_storeINS_7VectorTIfLi2EEEEEmRSoRKT_b(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #1

declare noundef i32 @_ZN8OpenMesh2IO8OMFormat11needed_bitsEm(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeImEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN8OpenMesh2IO5storeIiEEmRSoRKT_NS0_8OMFormat5Chunk12Integer_SizeEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8OpenMesh10BaseHandle3idxEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK8OpenMesh12BaseProperty4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(41)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK8OpenMesh2IO10_OMWriter_25store_binary_custom_chunkERSoRKNS_12BasePropertyENS0_8OMFormat5Chunk6EntityEb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(41), i32 noundef, i1 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

!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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"vtable pointer", !7, i64 0}
!10 = !{!11, !6, i64 2}
!11 = !{!"_ZTSN8OpenMesh2IO8OMFormat6HeaderE", !6, i64 0, !6, i64 2, !6, i64 3, !12, i64 4, !12, i64 8, !12, i64 12}
!12 = !{!"int", !6, i64 0}
!13 = !{!11, !6, i64 3}
!14 = !{!11, !12, i64 4}
!15 = !{!11, !12, i64 8}
!16 = !{!11, !12, i64 12}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = !{!23, !23, i64 0}
!23 = !{!"long", !6, i64 0}
!24 = distinct !{!24, !18}
!25 = !{!12, !12, i64 0}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = !{!30, !30, i64 0}
!30 = !{!"any pointer", !6, i64 0}
!31 = distinct !{!31, !18}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !18}
!34 = distinct !{!34, !18}
!35 = distinct !{!35, !18}


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