; LLVM IR from bldeng/AASolver :: AndersonOpt/external/OpenMesh/Core/IO/reader (PLYReader)

; 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.OpenMesh::VectorT" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.OpenMesh::VectorT.29" = type { %"struct.std::array.30" }
%"struct.std::array.30" = type { [2 x float] }
%"class.OpenMesh::VectorT.31" = type { %"struct.std::array.32" }
%"struct.std::array.32" = type { [4 x i32] }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = 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::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.OpenMesh::VectorT.38" = type { %"struct.std::array.39" }
%"struct.std::array.39" = type { [4 x i8] }
%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"struct.OpenMesh::IO::_PLYReader_::PropertyInfo" = type <{ i32, i32, %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.OpenMesh::IO::_PLYReader_" = type { %"class.OpenMesh::IO::BaseReader", [8 x i8], %"class.OpenMesh::IO::Options", %"class.OpenMesh::IO::Options", i32, i32, i32, i32, %"class.std::map", %"class.std::vector", %"class.std::vector" }
%"class.OpenMesh::IO::BaseReader" = type { ptr }
%"class.OpenMesh::IO::Options" = type { i32 }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<OpenMesh::IO::_PLYReader_::ValueType, std::pair<const OpenMesh::IO::_PLYReader_::ValueType, int>, std::_Select1st<std::pair<const OpenMesh::IO::_PLYReader_::ValueType, int>>, std::less<OpenMesh::IO::_PLYReader_::ValueType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<OpenMesh::IO::_PLYReader_::ValueType, std::pair<const OpenMesh::IO::_PLYReader_::ValueType, int>, std::_Select1st<std::pair<const OpenMesh::IO::_PLYReader_::ValueType, int>>, std::less<OpenMesh::IO::_PLYReader_::ValueType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<OpenMesh::IO::_PLYReader_::PropertyInfo, std::allocator<OpenMesh::IO::_PLYReader_::PropertyInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<OpenMesh::IO::_PLYReader_::PropertyInfo, std::allocator<OpenMesh::IO::_PLYReader_::PropertyInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<OpenMesh::IO::_PLYReader_::PropertyInfo, std::allocator<OpenMesh::IO::_PLYReader_::PropertyInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OpenMesh::IO::_PLYReader_::PropertyInfo, std::allocator<OpenMesh::IO::_PLYReader_::PropertyInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [64 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.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

declare noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv() #2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10read_asciiERSiRNS0_12BaseImporterERKNS0_7OptionsE(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) %3) #3 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.OpenMesh::VectorT", align 4
  %17 = alloca %"class.OpenMesh::VectorT", align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.OpenMesh::VectorT.29", align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.OpenMesh::VectorT.31", align 4
  %23 = alloca float, align 4
  %24 = alloca %"class.std::vector.33", align 8
  %25 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca i64, align 8
  %29 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %30 = alloca i64, align 8
  %31 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %32 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %33 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %34 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %35 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %36 = alloca %"class.OpenMesh::VectorT.38", align 1
  %37 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %38 = alloca i64, align 8
  %39 = alloca %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", align 8
  %40 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %41 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %42 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %43 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %44 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %45 = alloca %"struct.OpenMesh::FaceHandle", align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %46 = load ptr, ptr %6, align 8
  %47 = load ptr, ptr %7, align 8, !tbaa !5
  %48 = call noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10can_u_readERSi(ptr noundef nonnull align 8 dereferenceable(136) %46, ptr noundef nonnull align 8 dereferenceable(16) %47)
  br i1 %48, label %52, label %49

49:                                               ; preds = %4
  %50 = call noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
  %51 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef @.str.3)
  store i1 false, ptr %5, align 1
  br label %616

52:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #7
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #7
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  invoke void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %53 unwind label %78

53:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  invoke void @_ZN8OpenMesh7VectorTIiLi4EEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %22)
          to label %54 unwind label %82

54:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %25, i32 noundef -1)
          to label %55 unwind label %86

55:                                               ; preds = %54
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 4
  %58 = load i32, ptr %57, align 8, !tbaa !9
  %59 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 4
  %60 = load i32, ptr %59, align 8, !tbaa !9
  %61 = mul i32 3, %60
  %62 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 5
  %63 = load i32, ptr %62, align 4, !tbaa !28
  %64 = load ptr, ptr %56, align 8, !tbaa !29
  %65 = getelementptr inbounds ptr, ptr %64, i64 30
  %66 = load ptr, ptr %65, align 8
  invoke void %66(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef %58, i32 noundef %61, i32 noundef %63)
          to label %67 unwind label %86

67:                                               ; preds = %55
  %68 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 7
  %69 = load i32, ptr %68, align 4, !tbaa !31
  %70 = icmp ne i32 %69, 3
  br i1 %70, label %71, label %90

71:                                               ; preds = %67
  %72 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %73 unwind label %86

73:                                               ; preds = %71
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef @.str.4)
          to label %75 unwind label %86

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %77 unwind label %86

77:                                               ; preds = %75
  store i1 false, ptr %5, align 1
  store i32 1, ptr %26, align 4
  br label %612

78:                                               ; preds = %52
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %20, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %21, align 4
  br label %615

82:                                               ; preds = %53
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %20, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %21, align 4
  br label %614

86:                                               ; preds = %75, %73, %71, %55, %54
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %20, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %21, align 4
  br label %613

90:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  %91 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %92 unwind label %102

92:                                               ; preds = %90
  %93 = invoke noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224) %91)
          to label %94 unwind label %102

94:                                               ; preds = %92
  %95 = zext i1 %93 to i8
  store i8 %95, ptr %27, align 1, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store i64 0, ptr %28, align 8, !tbaa !34
  %96 = load i8, ptr %27, align 1, !tbaa !32, !range !35, !noundef !36
  %97 = trunc i8 %96 to i1
  br i1 %97, label %98, label %110

98:                                               ; preds = %94
  %99 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %100 unwind label %106

100:                                              ; preds = %98
  invoke void @_ZN8OpenMesh8mostream7disableEv(ptr noundef nonnull align 8 dereferenceable(224) %99)
          to label %101 unwind label %106

101:                                              ; preds = %100
  br label %110

102:                                              ; preds = %92, %90
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %20, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %21, align 4
  br label %611

106:                                              ; preds = %606, %603, %601, %596, %594, %420, %411, %407, %398, %394, %386, %157, %155, %153, %151, %149, %147, %145, %143, %141, %139, %137, %133, %116, %100, %98
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %20, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %21, align 4
  br label %610

110:                                              ; preds = %101, %94
  store i32 0, ptr %10, align 4, !tbaa !37
  br label %111

111:                                              ; preds = %439, %110
  %112 = load i32, ptr %10, align 4, !tbaa !37
  %113 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 4
  %114 = load i32, ptr %113, align 8, !tbaa !9
  %115 = icmp ult i32 %112, %114
  br i1 %115, label %116, label %125

116:                                              ; preds = %111
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = load ptr, ptr %117, align 8, !tbaa !29
  %119 = getelementptr i8, ptr %118, i64 -24
  %120 = load i64, ptr %119, align 8
  %121 = getelementptr inbounds i8, ptr %117, i64 %120
  %122 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %121)
          to label %123 unwind label %106

123:                                              ; preds = %116
  %124 = xor i1 %122, true
  br label %125

125:                                              ; preds = %123, %111
  %126 = phi i1 [ false, %111 ], [ %124, %123 ]
  br i1 %126, label %127, label %442

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = load ptr, ptr %128, align 8, !tbaa !29
  %130 = getelementptr inbounds ptr, ptr %129, i64 3
  %131 = load ptr, ptr %130, align 8
  %132 = invoke i32 %131(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %133 unwind label %166

133:                                              ; preds = %127
  %134 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %29, i32 0, i32 0
  %135 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %134, i32 0, i32 0
  store i32 %132, ptr %135, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 4 %29, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  %136 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 0)
          to label %137 unwind label %106

137:                                              ; preds = %133
  store float 0.000000e+00, ptr %136, align 4, !tbaa !38
  %138 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 1)
          to label %139 unwind label %106

139:                                              ; preds = %137
  store float 0.000000e+00, ptr %138, align 4, !tbaa !38
  %140 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 2)
          to label %141 unwind label %106

141:                                              ; preds = %139
  store float 0.000000e+00, ptr %140, align 4, !tbaa !38
  %142 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 0)
          to label %143 unwind label %106

143:                                              ; preds = %141
  store float 0.000000e+00, ptr %142, align 4, !tbaa !38
  %144 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 1)
          to label %145 unwind label %106

145:                                              ; preds = %143
  store float 0.000000e+00, ptr %144, align 4, !tbaa !38
  %146 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 2)
          to label %147 unwind label %106

147:                                              ; preds = %145
  store float 0.000000e+00, ptr %146, align 4, !tbaa !38
  %148 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %19, i64 noundef 0)
          to label %149 unwind label %106

149:                                              ; preds = %147
  store float 0.000000e+00, ptr %148, align 4, !tbaa !38
  %150 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %19, i64 noundef 1)
          to label %151 unwind label %106

151:                                              ; preds = %149
  store float 0.000000e+00, ptr %150, align 4, !tbaa !38
  %152 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 0)
          to label %153 unwind label %106

153:                                              ; preds = %151
  store i32 0, ptr %152, align 4, !tbaa !37
  %154 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 1)
          to label %155 unwind label %106

155:                                              ; preds = %153
  store i32 0, ptr %154, align 4, !tbaa !37
  %156 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 2)
          to label %157 unwind label %106

157:                                              ; preds = %155
  store i32 0, ptr %156, align 4, !tbaa !37
  %158 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 3)
          to label %159 unwind label %106

159:                                              ; preds = %157
  store i32 255, ptr %158, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store i64 0, ptr %30, align 8, !tbaa !34
  br label %160

160:                                              ; preds = %383, %159
  %161 = load i64, ptr %30, align 8, !tbaa !34
  %162 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %163 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #7
  %164 = icmp ult i64 %161, %163
  br i1 %164, label %170, label %165

165:                                              ; preds = %160
  store i32 5, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %386

166:                                              ; preds = %127
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %20, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %610

170:                                              ; preds = %160
  %171 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %172 = load i64, ptr %30, align 8, !tbaa !34
  %173 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %172) #7
  %174 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %173, i32 0, i32 0
  %175 = load i32, ptr %174, align 8, !tbaa !40
  switch i32 %175, label %378 [
    i32 0, label %176
    i32 1, label %186
    i32 2, label %192
    i32 9, label %198
    i32 10, label %204
    i32 11, label %210
    i32 3, label %216
    i32 4, label %222
    i32 5, label %228
    i32 6, label %258
    i32 7, label %288
    i32 8, label %318
    i32 12, label %348
  ]

176:                                              ; preds = %170
  %177 = load ptr, ptr %7, align 8, !tbaa !5
  %178 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 0)
          to label %179 unwind label %182

179:                                              ; preds = %176
  %180 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %177, ptr noundef nonnull align 4 dereferenceable(4) %178)
          to label %181 unwind label %182

181:                                              ; preds = %179
  br label %382

182:                                              ; preds = %378, %373, %352, %348, %344, %341, %335, %332, %314, %311, %305, %302, %284, %281, %275, %272, %254, %251, %245, %242, %225, %222, %219, %216, %213, %210, %207, %204, %201, %198, %195, %192, %189, %186, %179, %176
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %20, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %610

186:                                              ; preds = %170
  %187 = load ptr, ptr %7, align 8, !tbaa !5
  %188 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 1)
          to label %189 unwind label %182

189:                                              ; preds = %186
  %190 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull align 4 dereferenceable(4) %188)
          to label %191 unwind label %182

191:                                              ; preds = %189
  br label %382

192:                                              ; preds = %170
  %193 = load ptr, ptr %7, align 8, !tbaa !5
  %194 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %16, i64 noundef 2)
          to label %195 unwind label %182

195:                                              ; preds = %192
  %196 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %193, ptr noundef nonnull align 4 dereferenceable(4) %194)
          to label %197 unwind label %182

197:                                              ; preds = %195
  br label %382

198:                                              ; preds = %170
  %199 = load ptr, ptr %7, align 8, !tbaa !5
  %200 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 0)
          to label %201 unwind label %182

201:                                              ; preds = %198
  %202 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %199, ptr noundef nonnull align 4 dereferenceable(4) %200)
          to label %203 unwind label %182

203:                                              ; preds = %201
  br label %382

204:                                              ; preds = %170
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 1)
          to label %207 unwind label %182

207:                                              ; preds = %204
  %208 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %205, ptr noundef nonnull align 4 dereferenceable(4) %206)
          to label %209 unwind label %182

209:                                              ; preds = %207
  br label %382

210:                                              ; preds = %170
  %211 = load ptr, ptr %7, align 8, !tbaa !5
  %212 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %17, i64 noundef 2)
          to label %213 unwind label %182

213:                                              ; preds = %210
  %214 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef nonnull align 4 dereferenceable(4) %212)
          to label %215 unwind label %182

215:                                              ; preds = %213
  br label %382

216:                                              ; preds = %170
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  %218 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %19, i64 noundef 0)
          to label %219 unwind label %182

219:                                              ; preds = %216
  %220 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %217, ptr noundef nonnull align 4 dereferenceable(4) %218)
          to label %221 unwind label %182

221:                                              ; preds = %219
  br label %382

222:                                              ; preds = %170
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %19, i64 noundef 1)
          to label %225 unwind label %182

225:                                              ; preds = %222
  %226 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %223, ptr noundef nonnull align 4 dereferenceable(4) %224)
          to label %227 unwind label %182

227:                                              ; preds = %225
  br label %382

228:                                              ; preds = %170
  %229 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %230 = load i64, ptr %30, align 8, !tbaa !34
  %231 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %229, i64 noundef %230) #7
  %232 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %231, i32 0, i32 1
  %233 = load i32, ptr %232, align 4, !tbaa !45
  %234 = icmp eq i32 %233, 13
  br i1 %234, label %242, label %235

235:                                              ; preds = %228
  %236 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %237 = load i64, ptr %30, align 8, !tbaa !34
  %238 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %236, i64 noundef %237) #7
  %239 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %238, i32 0, i32 1
  %240 = load i32, ptr %239, align 4, !tbaa !45
  %241 = icmp eq i32 %240, 14
  br i1 %241, label %242, label %251

242:                                              ; preds = %235, %228
  %243 = load ptr, ptr %7, align 8, !tbaa !5
  %244 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %243, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %245 unwind label %182

245:                                              ; preds = %242
  %246 = load float, ptr %23, align 4, !tbaa !38
  %247 = fmul float %246, 2.550000e+02
  %248 = fptosi float %247 to i32
  %249 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 0)
          to label %250 unwind label %182

250:                                              ; preds = %245
  store i32 %248, ptr %249, align 4, !tbaa !37
  br label %257

251:                                              ; preds = %235
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  %253 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 0)
          to label %254 unwind label %182

254:                                              ; preds = %251
  %255 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %252, ptr noundef nonnull align 4 dereferenceable(4) %253)
          to label %256 unwind label %182

256:                                              ; preds = %254
  br label %257

257:                                              ; preds = %256, %250
  br label %382

258:                                              ; preds = %170
  %259 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %260 = load i64, ptr %30, align 8, !tbaa !34
  %261 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %260) #7
  %262 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %261, i32 0, i32 1
  %263 = load i32, ptr %262, align 4, !tbaa !45
  %264 = icmp eq i32 %263, 13
  br i1 %264, label %272, label %265

265:                                              ; preds = %258
  %266 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %267 = load i64, ptr %30, align 8, !tbaa !34
  %268 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %267) #7
  %269 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %268, i32 0, i32 1
  %270 = load i32, ptr %269, align 4, !tbaa !45
  %271 = icmp eq i32 %270, 14
  br i1 %271, label %272, label %281

272:                                              ; preds = %265, %258
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %273, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %275 unwind label %182

275:                                              ; preds = %272
  %276 = load float, ptr %23, align 4, !tbaa !38
  %277 = fmul float %276, 2.550000e+02
  %278 = fptosi float %277 to i32
  %279 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 1)
          to label %280 unwind label %182

280:                                              ; preds = %275
  store i32 %278, ptr %279, align 4, !tbaa !37
  br label %287

281:                                              ; preds = %265
  %282 = load ptr, ptr %7, align 8, !tbaa !5
  %283 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 1)
          to label %284 unwind label %182

284:                                              ; preds = %281
  %285 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %282, ptr noundef nonnull align 4 dereferenceable(4) %283)
          to label %286 unwind label %182

286:                                              ; preds = %284
  br label %287

287:                                              ; preds = %286, %280
  br label %382

288:                                              ; preds = %170
  %289 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %290 = load i64, ptr %30, align 8, !tbaa !34
  %291 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %290) #7
  %292 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %291, i32 0, i32 1
  %293 = load i32, ptr %292, align 4, !tbaa !45
  %294 = icmp eq i32 %293, 13
  br i1 %294, label %302, label %295

295:                                              ; preds = %288
  %296 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %297 = load i64, ptr %30, align 8, !tbaa !34
  %298 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %297) #7
  %299 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %298, i32 0, i32 1
  %300 = load i32, ptr %299, align 4, !tbaa !45
  %301 = icmp eq i32 %300, 14
  br i1 %301, label %302, label %311

302:                                              ; preds = %295, %288
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %303, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %305 unwind label %182

305:                                              ; preds = %302
  %306 = load float, ptr %23, align 4, !tbaa !38
  %307 = fmul float %306, 2.550000e+02
  %308 = fptosi float %307 to i32
  %309 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 2)
          to label %310 unwind label %182

310:                                              ; preds = %305
  store i32 %308, ptr %309, align 4, !tbaa !37
  br label %317

311:                                              ; preds = %295
  %312 = load ptr, ptr %7, align 8, !tbaa !5
  %313 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 2)
          to label %314 unwind label %182

314:                                              ; preds = %311
  %315 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef nonnull align 4 dereferenceable(4) %313)
          to label %316 unwind label %182

316:                                              ; preds = %314
  br label %317

317:                                              ; preds = %316, %310
  br label %382

318:                                              ; preds = %170
  %319 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %320 = load i64, ptr %30, align 8, !tbaa !34
  %321 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %319, i64 noundef %320) #7
  %322 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %321, i32 0, i32 1
  %323 = load i32, ptr %322, align 4, !tbaa !45
  %324 = icmp eq i32 %323, 13
  br i1 %324, label %332, label %325

325:                                              ; preds = %318
  %326 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %327 = load i64, ptr %30, align 8, !tbaa !34
  %328 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %326, i64 noundef %327) #7
  %329 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %328, i32 0, i32 1
  %330 = load i32, ptr %329, align 4, !tbaa !45
  %331 = icmp eq i32 %330, 14
  br i1 %331, label %332, label %341

332:                                              ; preds = %325, %318
  %333 = load ptr, ptr %7, align 8, !tbaa !5
  %334 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %335 unwind label %182

335:                                              ; preds = %332
  %336 = load float, ptr %23, align 4, !tbaa !38
  %337 = fmul float %336, 2.550000e+02
  %338 = fptosi float %337 to i32
  %339 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 3)
          to label %340 unwind label %182

340:                                              ; preds = %335
  store i32 %338, ptr %339, align 4, !tbaa !37
  br label %347

341:                                              ; preds = %325
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %22, i64 noundef 3)
          to label %344 unwind label %182

344:                                              ; preds = %341
  %345 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %342, ptr noundef nonnull align 4 dereferenceable(4) %343)
          to label %346 unwind label %182

346:                                              ; preds = %344
  br label %347

347:                                              ; preds = %346, %340
  br label %382

348:                                              ; preds = %170
  %349 = load ptr, ptr %9, align 8, !tbaa !5
  %350 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %349, i32 noundef 8192)
          to label %351 unwind label %182

351:                                              ; preds = %348
  br i1 %350, label %352, label %373

352:                                              ; preds = %351
  %353 = load ptr, ptr %7, align 8, !tbaa !5
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %25, i64 4, i1 false)
  %355 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %356 = load i64, ptr %30, align 8, !tbaa !34
  %357 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %356) #7
  %358 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %357, i32 0, i32 2
  %359 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %360 = load i64, ptr %30, align 8, !tbaa !34
  %361 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %360) #7
  %362 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %361, i32 0, i32 1
  %363 = load i32, ptr %362, align 4, !tbaa !45
  %364 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 9
  %365 = load i64, ptr %30, align 8, !tbaa !34
  %366 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %365) #7
  %367 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %366, i32 0, i32 3
  %368 = load i32, ptr %367, align 8, !tbaa !46
  %369 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %31, i32 0, i32 0
  %370 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %369, i32 0, i32 0
  %371 = load i32, ptr %370, align 4
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_12VertexHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %46, ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef nonnull align 8 dereferenceable(8) %354, i32 %371, ptr noundef nonnull align 8 dereferenceable(32) %358, i32 noundef %363, i32 noundef %368)
          to label %372 unwind label %182

372:                                              ; preds = %352
  br label %377

373:                                              ; preds = %351
  %374 = load ptr, ptr %7, align 8, !tbaa !5
  %375 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %374, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %376 unwind label %182

376:                                              ; preds = %373
  br label %377

377:                                              ; preds = %376, %372
  br label %382

378:                                              ; preds = %170
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %379, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %381 unwind label %182

381:                                              ; preds = %378
  br label %382

382:                                              ; preds = %381, %377, %347, %317, %287, %257, %227, %221, %215, %209, %203, %197, %191, %181
  br label %383

383:                                              ; preds = %382
  %384 = load i64, ptr %30, align 8, !tbaa !34
  %385 = add i64 %384, 1
  store i64 %385, ptr %30, align 8, !tbaa !34
  br label %160, !llvm.loop !47

386:                                              ; preds = %165
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %25, i64 4, i1 false)
  %388 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %32, i32 0, i32 0
  %389 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %388, i32 0, i32 0
  %390 = load i32, ptr %389, align 4
  %391 = load ptr, ptr %387, align 8, !tbaa !29
  %392 = getelementptr inbounds ptr, ptr %391, i64 8
  %393 = load ptr, ptr %392, align 8
  invoke void %393(ptr noundef nonnull align 8 dereferenceable(8) %387, i32 %390, ptr noundef nonnull align 4 dereferenceable(12) %16)
          to label %394 unwind label %106

394:                                              ; preds = %386
  %395 = load ptr, ptr %9, align 8, !tbaa !5
  %396 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options17vertex_has_normalEv(ptr noundef nonnull align 4 dereferenceable(4) %395)
          to label %397 unwind label %106

397:                                              ; preds = %394
  br i1 %396, label %398, label %407

398:                                              ; preds = %397
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %25, i64 4, i1 false)
  %400 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %33, i32 0, i32 0
  %401 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %400, i32 0, i32 0
  %402 = load i32, ptr %401, align 4
  %403 = load ptr, ptr %399, align 8, !tbaa !29
  %404 = getelementptr inbounds ptr, ptr %403, i64 9
  %405 = load ptr, ptr %404, align 8
  invoke void %405(ptr noundef nonnull align 8 dereferenceable(8) %399, i32 %402, ptr noundef nonnull align 4 dereferenceable(12) %17)
          to label %406 unwind label %106

406:                                              ; preds = %398
  br label %407

407:                                              ; preds = %406, %397
  %408 = load ptr, ptr %9, align 8, !tbaa !5
  %409 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options19vertex_has_texcoordEv(ptr noundef nonnull align 4 dereferenceable(4) %408)
          to label %410 unwind label %106

410:                                              ; preds = %407
  br i1 %409, label %411, label %420

411:                                              ; preds = %410
  %412 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %25, i64 4, i1 false)
  %413 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %34, i32 0, i32 0
  %414 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %413, i32 0, i32 0
  %415 = load i32, ptr %414, align 4
  %416 = load ptr, ptr %412, align 8, !tbaa !29
  %417 = getelementptr inbounds ptr, ptr %416, i64 14
  %418 = load ptr, ptr %417, align 8
  invoke void %418(ptr noundef nonnull align 8 dereferenceable(8) %412, i32 %415, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %419 unwind label %106

419:                                              ; preds = %411
  br label %420

420:                                              ; preds = %419, %410
  %421 = load ptr, ptr %9, align 8, !tbaa !5
  %422 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options16vertex_has_colorEv(ptr noundef nonnull align 4 dereferenceable(4) %421)
          to label %423 unwind label %106

423:                                              ; preds = %420
  br i1 %422, label %424, label %438

424:                                              ; preds = %423
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %25, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  invoke void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(16) %22)
          to label %426 unwind label %434

426:                                              ; preds = %424
  %427 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %35, i32 0, i32 0
  %428 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %427, i32 0, i32 0
  %429 = load i32, ptr %428, align 4
  %430 = load ptr, ptr %425, align 8, !tbaa !29
  %431 = getelementptr inbounds ptr, ptr %430, i64 11
  %432 = load ptr, ptr %431, align 8
  invoke void %432(ptr noundef nonnull align 8 dereferenceable(8) %425, i32 %429, ptr noundef nonnull align 1 dereferenceable(4) %36)
          to label %433 unwind label %434

433:                                              ; preds = %426
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %438

434:                                              ; preds = %426, %424
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %20, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %610

438:                                              ; preds = %433, %423
  br label %439

439:                                              ; preds = %438
  %440 = load i32, ptr %10, align 4, !tbaa !37
  %441 = add i32 %440, 1
  store i32 %441, ptr %10, align 4, !tbaa !37
  br label %111, !llvm.loop !49

442:                                              ; preds = %125
  store i32 0, ptr %10, align 4, !tbaa !37
  br label %443

443:                                              ; preds = %587, %442
  %444 = load i32, ptr %10, align 4, !tbaa !37
  %445 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 5
  %446 = load i32, ptr %445, align 4, !tbaa !28
  %447 = icmp ult i32 %444, %446
  br i1 %447, label %448, label %591

448:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %37, i32 noundef -1)
          to label %449 unwind label %456

449:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store i64 0, ptr %38, align 8, !tbaa !34
  br label %450

450:                                              ; preds = %581, %449
  %451 = load i64, ptr %38, align 8, !tbaa !34
  %452 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 10
  %453 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %452) #7
  %454 = icmp ult i64 %451, %453
  br i1 %454, label %460, label %455

455:                                              ; preds = %450
  store i32 12, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %586

456:                                              ; preds = %448
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %20, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %21, align 4
  br label %590

460:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 48, ptr %39) #7
  %461 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %46, i32 0, i32 10
  %462 = load i64, ptr %38, align 8, !tbaa !34
  %463 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %461, i64 noundef %462) #7
  invoke void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %39, ptr noundef nonnull align 8 dereferenceable(44) %463)
          to label %464 unwind label %467

464:                                              ; preds = %460
  %465 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %39, i32 0, i32 0
  %466 = load i32, ptr %465, align 8, !tbaa !40
  switch i32 %466, label %576 [
    i32 13, label %471
    i32 12, label %552
  ]

467:                                              ; preds = %460
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %20, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %21, align 4
  br label %585

471:                                              ; preds = %464
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  %473 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %474 unwind label %497

474:                                              ; preds = %471
  %475 = load i32, ptr %15, align 4, !tbaa !37
  %476 = icmp eq i32 %475, 3
  br i1 %476, label %477, label %513

477:                                              ; preds = %474
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 3)
          to label %478 unwind label %497

478:                                              ; preds = %477
  %479 = load ptr, ptr %7, align 8, !tbaa !5
  %480 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %479, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %481 unwind label %497

481:                                              ; preds = %478
  %482 = load ptr, ptr %7, align 8, !tbaa !5
  %483 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %482, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %484 unwind label %497

484:                                              ; preds = %481
  %485 = load ptr, ptr %7, align 8, !tbaa !5
  %486 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %485, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %487 unwind label %497

487:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %488 = load i32, ptr %11, align 4, !tbaa !37
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %40, i32 noundef %488)
          to label %489 unwind label %501

489:                                              ; preds = %487
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 0) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %490, ptr align 4 %40, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %491 = load i32, ptr %12, align 4, !tbaa !37
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %41, i32 noundef %491)
          to label %492 unwind label %505

492:                                              ; preds = %489
  %493 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 1) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %493, ptr align 4 %41, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %494 = load i32, ptr %13, align 4, !tbaa !37
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %42, i32 noundef %494)
          to label %495 unwind label %509

495:                                              ; preds = %492
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 2) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %496, ptr align 4 %42, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %533

497:                                              ; preds = %576, %571, %559, %556, %552, %539, %518, %484, %481, %478, %477, %471
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %20, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %21, align 4
  br label %584

501:                                              ; preds = %487
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %20, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %584

505:                                              ; preds = %489
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %20, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %584

509:                                              ; preds = %492
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %20, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %584

513:                                              ; preds = %474
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  store i32 0, ptr %11, align 4, !tbaa !37
  br label %514

514:                                              ; preds = %525, %513
  %515 = load i32, ptr %11, align 4, !tbaa !37
  %516 = load i32, ptr %15, align 4, !tbaa !37
  %517 = icmp ult i32 %515, %516
  br i1 %517, label %518, label %532

518:                                              ; preds = %514
  %519 = load ptr, ptr %7, align 8, !tbaa !5
  %520 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %519, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %521 unwind label %497

521:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %522 = load i32, ptr %14, align 4, !tbaa !37
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %43, i32 noundef %522)
          to label %523 unwind label %528

523:                                              ; preds = %521
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %524 unwind label %528

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

525:                                              ; preds = %524
  %526 = load i32, ptr %11, align 4, !tbaa !37
  %527 = add i32 %526, 1
  store i32 %527, ptr %11, align 4, !tbaa !37
  br label %514, !llvm.loop !50

528:                                              ; preds = %523, %521
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %20, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %584

532:                                              ; preds = %514
  br label %533

533:                                              ; preds = %532, %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = load ptr, ptr %534, align 8, !tbaa !29
  %536 = getelementptr inbounds ptr, ptr %535, i64 4
  %537 = load ptr, ptr %536, align 8
  %538 = invoke i32 %537(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %539 unwind label %547

539:                                              ; preds = %533
  %540 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %44, i32 0, i32 0
  %541 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %540, i32 0, i32 0
  store i32 %538, ptr %541, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %44, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  %542 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %543 unwind label %497

543:                                              ; preds = %539
  br i1 %542, label %551, label %544

544:                                              ; preds = %543
  %545 = load i64, ptr %28, align 8, !tbaa !34
  %546 = add i64 %545, 1
  store i64 %546, ptr %28, align 8, !tbaa !34
  br label %551

547:                                              ; preds = %533
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %20, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %584

551:                                              ; preds = %544, %543
  br label %580

552:                                              ; preds = %464
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %553, i32 noundef 8192)
          to label %555 unwind label %497

555:                                              ; preds = %552
  br i1 %554, label %556, label %571

556:                                              ; preds = %555
  %557 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %558 unwind label %497

558:                                              ; preds = %556
  br i1 %557, label %559, label %571

559:                                              ; preds = %558
  %560 = load ptr, ptr %7, align 8, !tbaa !5
  %561 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 4 %37, i64 4, i1 false)
  %562 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %39, i32 0, i32 2
  %563 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %39, i32 0, i32 1
  %564 = load i32, ptr %563, align 4, !tbaa !45
  %565 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %39, i32 0, i32 3
  %566 = load i32, ptr %565, align 8, !tbaa !46
  %567 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %45, i32 0, i32 0
  %568 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %567, i32 0, i32 0
  %569 = load i32, ptr %568, align 4
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_10FaceHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %46, ptr noundef nonnull align 8 dereferenceable(16) %560, ptr noundef nonnull align 8 dereferenceable(8) %561, i32 %569, ptr noundef nonnull align 8 dereferenceable(32) %562, i32 noundef %564, i32 noundef %566)
          to label %570 unwind label %497

570:                                              ; preds = %559
  br label %575

571:                                              ; preds = %558, %555
  %572 = load ptr, ptr %7, align 8, !tbaa !5
  %573 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %572, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %574 unwind label %497

574:                                              ; preds = %571
  br label %575

575:                                              ; preds = %574, %570
  br label %580

576:                                              ; preds = %464
  %577 = load ptr, ptr %7, align 8, !tbaa !5
  %578 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %577, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %579 unwind label %497

579:                                              ; preds = %576
  br label %580

580:                                              ; preds = %579, %575, %551
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %39) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %39) #7
  br label %581

581:                                              ; preds = %580
  %582 = load i64, ptr %38, align 8, !tbaa !34
  %583 = add i64 %582, 1
  store i64 %583, ptr %38, align 8, !tbaa !34
  br label %450, !llvm.loop !51

584:                                              ; preds = %547, %528, %509, %505, %501, %497
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %39) #7
  br label %585

585:                                              ; preds = %584, %467
  call void @llvm.lifetime.end.p0(i64 48, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %590

586:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %587

587:                                              ; preds = %586
  %588 = load i32, ptr %10, align 4, !tbaa !37
  %589 = add i32 %588, 1
  store i32 %589, ptr %10, align 4, !tbaa !37
  br label %443, !llvm.loop !52

590:                                              ; preds = %585, %456
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %610

591:                                              ; preds = %443
  %592 = load i8, ptr %27, align 1, !tbaa !32, !range !35, !noundef !36
  %593 = trunc i8 %592 to i1
  br i1 %593, label %594, label %598

594:                                              ; preds = %591
  %595 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %596 unwind label %106

596:                                              ; preds = %594
  invoke void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224) %595)
          to label %597 unwind label %106

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597, %591
  %599 = load i64, ptr %28, align 8, !tbaa !34
  %600 = icmp ne i64 %599, 0
  br i1 %600, label %601, label %609

601:                                              ; preds = %598
  %602 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %603 unwind label %106

603:                                              ; preds = %601
  %604 = load i64, ptr %28, align 8, !tbaa !34
  %605 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %602, i64 noundef %604)
          to label %606 unwind label %106

606:                                              ; preds = %603
  %607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef @.str.5)
          to label %608 unwind label %106

608:                                              ; preds = %606
  br label %609

609:                                              ; preds = %608, %598
  store i1 true, ptr %5, align 1
  store i32 1, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %612

610:                                              ; preds = %590, %434, %182, %166, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %611

611:                                              ; preds = %610, %102
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %613

612:                                              ; preds = %609, %77
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %616

613:                                              ; preds = %611, %86
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %614

614:                                              ; preds = %613, %82
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br label %615

615:                                              ; preds = %614, %78
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %618

616:                                              ; preds = %612, %49
  %617 = load i1, ptr %5, align 1
  ret i1 %617

618:                                              ; preds = %615
  %619 = load ptr, ptr %20, align 8
  %620 = load i32, ptr %21, align 4
  %621 = insertvalue { ptr, i32 } poison, ptr %619, 0
  %622 = insertvalue { ptr, i32 } %621, i32 %620, 1
  resume { ptr, i32 } %622
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10can_u_readERSi(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264)) #3 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) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224)) #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) #3 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 24}
!10 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_E", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !13, i64 24, !13, i64 28, !14, i64 32, !13, i64 36, !15, i64 40, !24, i64 88, !24, i64 112}
!11 = !{!"_ZTSN8OpenMesh2IO10BaseReaderE"}
!12 = !{!"_ZTSN8OpenMesh2IO7OptionsE", !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_9ValueTypeE", !7, i64 0}
!15 = !{!"_ZTSSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!10, !13, i64 28}
!29 = !{!30, !30, i64 0}
!30 = !{!"vtable pointer", !8, i64 0}
!31 = !{!10, !13, i64 36}
!32 = !{!33, !33, i64 0}
!33 = !{!"bool", !7, i64 0}
!34 = !{!23, !23, i64 0}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!13, !13, i64 0}
!38 = !{!39, !39, i64 0}
!39 = !{!"float", !7, i64 0}
!40 = !{!41, !42, i64 0}
!41 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_12PropertyInfoE", !42, i64 0, !14, i64 4, !43, i64 8, !14, i64 40}
!42 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_8PropertyE", !7, i64 0}
!43 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !44, i64 0, !23, i64 8, !7, i64 16}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!45 = !{!41, !14, i64 4}
!46 = !{!41, !14, i64 40}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = distinct !{!49, !48}
!50 = distinct !{!50, !48}
!51 = distinct !{!51, !48}
!52 = distinct !{!52, !48}


; 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.OpenMesh::VectorT" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.OpenMesh::VectorT.29" = type { %"struct.std::array.30" }
%"struct.std::array.30" = type { [2 x float] }
%"class.OpenMesh::VectorT.31" = type { %"struct.std::array.32" }
%"struct.std::array.32" = type { [4 x i32] }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = 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::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.OpenMesh::VectorT.38" = type { %"struct.std::array.39" }
%"struct.std::array.39" = type { [4 x i8] }
%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"struct.OpenMesh::IO::_PLYReader_::PropertyInfo" = type <{ i32, i32, %"class.std::__cxx11::basic_string", i32, [4 x i8] }>

@.str.3 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [64 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: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.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

declare noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv() local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10read_asciiERSiRNS0_12BaseImporterERKNS0_7OptionsE(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 4 dereferenceable(4) %3) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.OpenMesh::VectorT", align 4
  %11 = alloca %"class.OpenMesh::VectorT", align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.OpenMesh::VectorT.29", align 4
  %14 = alloca %"class.OpenMesh::VectorT.31", align 4
  %15 = alloca float, align 4
  %16 = alloca %"class.std::vector.33", align 8
  %17 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %18 = alloca %"class.OpenMesh::VectorT.38", align 1
  %19 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %20 = alloca %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", align 8
  %21 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %22 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %23 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %24 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %25 = tail call noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10can_u_readERSi(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1)
  br i1 %25, label %29, label %26

26:                                               ; preds = %4
  %27 = tail call noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
  %28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.3)
  br label %305

29:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #6
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #6
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @_ZN8OpenMesh7VectorTIiLi4EEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %14)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef -1)
          to label %30 unwind label %48

30:                                               ; preds = %29
  %31 = getelementptr inbounds i8, ptr %0, i64 24
  %32 = load i32, ptr %31, align 8, !tbaa !5
  %33 = mul i32 %32, 3
  %34 = getelementptr inbounds i8, ptr %0, i64 28
  %35 = load i32, ptr %34, align 4, !tbaa !27
  %36 = load ptr, ptr %2, align 8, !tbaa !28
  %37 = getelementptr inbounds i8, ptr %36, i64 240
  %38 = load ptr, ptr %37, align 8
  invoke void %38(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 noundef %32, i32 noundef %33, i32 noundef %35)
          to label %39 unwind label %48

39:                                               ; preds = %30
  %40 = getelementptr inbounds i8, ptr %0, i64 36
  %41 = load i32, ptr %40, align 4, !tbaa !30
  %.not = icmp eq i32 %41, 3
  br i1 %.not, label %50, label %42

42:                                               ; preds = %39
  %43 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %44 unwind label %48

44:                                               ; preds = %42
  %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @.str.4)
          to label %46 unwind label %48

46:                                               ; preds = %44
  %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %303 unwind label %48

48:                                               ; preds = %46, %44, %42, %30, %29
  %49 = landingpad { ptr, i32 }
          cleanup
  br label %304

50:                                               ; preds = %39
  %51 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %52 unwind label %58

52:                                               ; preds = %50
  %53 = invoke noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224) %51)
          to label %54 unwind label %58

54:                                               ; preds = %52
  br i1 %53, label %55, label %60

55:                                               ; preds = %54
  %56 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %57 unwind label %.loopexit.split-lp103

57:                                               ; preds = %55
  invoke void @_ZN8OpenMesh8mostream7disableEv(ptr noundef nonnull align 8 dereferenceable(224) %56)
          to label %60 unwind label %.loopexit.split-lp103

58:                                               ; preds = %52, %50
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %304

.loopexit102:                                     ; preds = %63, %._crit_edge, %187, %193
  %lpad.loopexit104 = landingpad { ptr, i32 }
          cleanup
  br label %304

.loopexit.split-lp103:                            ; preds = %55, %57, %293, %295, %297, %299, %301
  %lpad.loopexit.split-lp105 = landingpad { ptr, i32 }
          cleanup
  br label %304

60:                                               ; preds = %57, %54
  %61 = load i32, ptr %31, align 8, !tbaa !5
  %.not140 = icmp eq i32 %61, 0
  br i1 %.not140, label %.critedge, label %.lr.ph126

.lr.ph126:                                        ; preds = %60
  %62 = getelementptr inbounds i8, ptr %0, i64 88
  br label %63

63:                                               ; preds = %.lr.ph126, %207
  %.079124 = phi i32 [ 0, %.lr.ph126 ], [ %208, %207 ]
  %64 = load ptr, ptr %1, align 8, !tbaa !28
  %65 = getelementptr i8, ptr %64, i64 -24
  %66 = load i64, ptr %65, align 8
  %67 = getelementptr inbounds i8, ptr %1, i64 %66
  %68 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %67)
          to label %69 unwind label %.loopexit102

69:                                               ; preds = %63
  br i1 %68, label %.critedge, label %70

70:                                               ; preds = %69
  %71 = load ptr, ptr %2, align 8, !tbaa !28
  %72 = getelementptr inbounds i8, ptr %71, i64 24
  %73 = load ptr, ptr %72, align 8
  %74 = invoke i32 %73(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %75 unwind label %92

75:                                               ; preds = %70
  store i32 %74, ptr %17, align 4
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 0)
  store float 0.000000e+00, ptr %76, align 4, !tbaa !31
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 1)
  store float 0.000000e+00, ptr %77, align 4, !tbaa !31
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 2)
  store float 0.000000e+00, ptr %78, align 4, !tbaa !31
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 0)
  store float 0.000000e+00, ptr %79, align 4, !tbaa !31
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 1)
  store float 0.000000e+00, ptr %80, align 4, !tbaa !31
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 2)
  store float 0.000000e+00, ptr %81, align 4, !tbaa !31
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %13, i64 noundef 0)
  store float 0.000000e+00, ptr %82, align 4, !tbaa !31
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %13, i64 noundef 1)
  store float 0.000000e+00, ptr %83, align 4, !tbaa !31
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef 0)
  store i32 0, ptr %84, align 4, !tbaa !33
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef 1)
  store i32 0, ptr %85, align 4, !tbaa !33
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef 2)
  store i32 0, ptr %86, align 4, !tbaa !33
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef 3)
  store i32 255, ptr %87, align 4, !tbaa !33
  %88 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #6
  %.not141 = icmp eq i64 %88, 0
  br i1 %.not141, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %181, %75
  %.sroa.07.0.copyload = load i32, ptr %17, align 4
  %89 = load ptr, ptr %2, align 8, !tbaa !28
  %90 = getelementptr inbounds i8, ptr %89, i64 64
  %91 = load ptr, ptr %90, align 8
  invoke void %91(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.07.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %10)
          to label %185 unwind label %.loopexit102

92:                                               ; preds = %70
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %304

.lr.ph:                                           ; preds = %75, %181
  %.092123 = phi i64 [ %182, %181 ], [ 0, %75 ]
  %94 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %95 = load i32, ptr %94, align 8, !tbaa !34
  switch i32 %95, label %.invoke [
    i32 0, label %96
    i32 1, label %100
    i32 2, label %102
    i32 9, label %104
    i32 10, label %106
    i32 11, label %108
    i32 3, label %110
    i32 4, label %112
    i32 5, label %116
    i32 6, label %128
    i32 7, label %140
    i32 8, label %152
    i32 12, label %166
  ]

96:                                               ; preds = %.lr.ph
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 0)
  br label %.invoke146

98:                                               ; preds = %.invoke146, %.invoke145, %.invoke, %168, %162, %150, %138, %126
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %304

100:                                              ; preds = %.lr.ph
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 1)
  br label %.invoke146

102:                                              ; preds = %.lr.ph
  %103 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %10, i64 noundef 2)
  br label %.invoke146

104:                                              ; preds = %.lr.ph
  %105 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 0)
  br label %.invoke146

106:                                              ; preds = %.lr.ph
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 1)
  br label %.invoke146

108:                                              ; preds = %.lr.ph
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %11, i64 noundef 2)
  br label %.invoke146

110:                                              ; preds = %.lr.ph
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %13, i64 noundef 0)
  br label %.invoke146

112:                                              ; preds = %.lr.ph
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %13, i64 noundef 1)
  br label %.invoke146

.invoke146:                                       ; preds = %96, %100, %102, %104, %106, %108, %110, %112
  %114 = phi ptr [ %113, %112 ], [ %111, %110 ], [ %109, %108 ], [ %107, %106 ], [ %105, %104 ], [ %103, %102 ], [ %101, %100 ], [ %97, %96 ]
  %115 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %114)
          to label %181 unwind label %98

116:                                              ; preds = %.lr.ph
  %117 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %118 = getelementptr inbounds i8, ptr %117, i64 4
  %119 = load i32, ptr %118, align 4, !tbaa !39
  %120 = icmp eq i32 %119, 13
  br i1 %120, label %126, label %121

121:                                              ; preds = %116
  %122 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %123 = getelementptr inbounds i8, ptr %122, i64 4
  %124 = load i32, ptr %123, align 4, !tbaa !39
  %125 = icmp eq i32 %124, 14
  br i1 %125, label %126, label %.invoke145

126:                                              ; preds = %121, %116
  %127 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %.sink.split unwind label %98

128:                                              ; preds = %.lr.ph
  %129 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %130 = getelementptr inbounds i8, ptr %129, i64 4
  %131 = load i32, ptr %130, align 4, !tbaa !39
  %132 = icmp eq i32 %131, 13
  br i1 %132, label %138, label %133

133:                                              ; preds = %128
  %134 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %135 = getelementptr inbounds i8, ptr %134, i64 4
  %136 = load i32, ptr %135, align 4, !tbaa !39
  %137 = icmp eq i32 %136, 14
  br i1 %137, label %138, label %.invoke145

138:                                              ; preds = %133, %128
  %139 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %.sink.split unwind label %98

140:                                              ; preds = %.lr.ph
  %141 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %142 = getelementptr inbounds i8, ptr %141, i64 4
  %143 = load i32, ptr %142, align 4, !tbaa !39
  %144 = icmp eq i32 %143, 13
  br i1 %144, label %150, label %145

145:                                              ; preds = %140
  %146 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %147 = getelementptr inbounds i8, ptr %146, i64 4
  %148 = load i32, ptr %147, align 4, !tbaa !39
  %149 = icmp eq i32 %148, 14
  br i1 %149, label %150, label %.invoke145

150:                                              ; preds = %145, %140
  %151 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %.sink.split unwind label %98

152:                                              ; preds = %.lr.ph
  %153 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %154 = getelementptr inbounds i8, ptr %153, i64 4
  %155 = load i32, ptr %154, align 4, !tbaa !39
  %156 = icmp eq i32 %155, 13
  br i1 %156, label %162, label %157

157:                                              ; preds = %152
  %158 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %159 = getelementptr inbounds i8, ptr %158, i64 4
  %160 = load i32, ptr %159, align 4, !tbaa !39
  %161 = icmp eq i32 %160, 14
  br i1 %161, label %162, label %.invoke145

162:                                              ; preds = %157, %152
  %163 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERf(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %.sink.split unwind label %98

.invoke145:                                       ; preds = %157, %145, %133, %121
  %.sink = phi i64 [ 0, %121 ], [ 1, %133 ], [ 2, %145 ], [ 3, %157 ]
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef %.sink)
  %165 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %164)
          to label %181 unwind label %98

166:                                              ; preds = %.lr.ph
  %167 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 8192)
  br i1 %167, label %168, label %.invoke

168:                                              ; preds = %166
  %.sroa.08.0.copyload = load i32, ptr %17, align 4
  %169 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %170 = getelementptr inbounds i8, ptr %169, i64 8
  %171 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %172 = getelementptr inbounds i8, ptr %171, i64 4
  %173 = load i32, ptr %172, align 4, !tbaa !39
  %174 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %.092123) #6
  %175 = getelementptr inbounds i8, ptr %174, i64 40
  %176 = load i32, ptr %175, align 8, !tbaa !40
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_12VertexHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.08.0.copyload, ptr noundef nonnull align 8 dereferenceable(32) %170, i32 noundef %173, i32 noundef %176)
          to label %181 unwind label %98

.invoke:                                          ; preds = %.lr.ph, %166
  %177 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %181 unwind label %98

.sink.split:                                      ; preds = %162, %150, %138, %126
  %.sink149 = phi i64 [ 0, %126 ], [ 1, %138 ], [ 2, %150 ], [ 3, %162 ]
  %.sink151 = load float, ptr %15, align 4, !tbaa !31
  %178 = fmul float %.sink151, 2.550000e+02
  %179 = fptosi float %178 to i32
  %180 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %14, i64 noundef %.sink149)
  store i32 %179, ptr %180, align 4, !tbaa !33
  br label %181

181:                                              ; preds = %.sink.split, %.invoke146, %.invoke145, %.invoke, %168
  %182 = add nuw i64 %.092123, 1
  %183 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #6
  %184 = icmp ult i64 %182, %183
  br i1 %184, label %.lr.ph, label %._crit_edge, !llvm.loop !41

185:                                              ; preds = %._crit_edge
  %186 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options17vertex_has_normalEv(ptr noundef nonnull align 4 dereferenceable(4) %3)
  br i1 %186, label %187, label %191

187:                                              ; preds = %185
  %.sroa.06.0.copyload = load i32, ptr %17, align 4
  %188 = load ptr, ptr %2, align 8, !tbaa !28
  %189 = getelementptr inbounds i8, ptr %188, i64 72
  %190 = load ptr, ptr %189, align 8
  invoke void %190(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.06.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %11)
          to label %191 unwind label %.loopexit102

191:                                              ; preds = %187, %185
  %192 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options19vertex_has_texcoordEv(ptr noundef nonnull align 4 dereferenceable(4) %3)
  br i1 %192, label %193, label %197

193:                                              ; preds = %191
  %.sroa.05.0.copyload = load i32, ptr %17, align 4
  %194 = load ptr, ptr %2, align 8, !tbaa !28
  %195 = getelementptr inbounds i8, ptr %194, i64 112
  %196 = load ptr, ptr %195, align 8
  invoke void %196(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.05.0.copyload, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %197 unwind label %.loopexit102

197:                                              ; preds = %193, %191
  %198 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options16vertex_has_colorEv(ptr noundef nonnull align 4 dereferenceable(4) %3)
  br i1 %198, label %199, label %207

199:                                              ; preds = %197
  %.sroa.04.0.copyload = load i32, ptr %17, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  invoke void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(16) %14)
          to label %200 unwind label %205

200:                                              ; preds = %199
  %201 = load ptr, ptr %2, align 8, !tbaa !28
  %202 = getelementptr inbounds i8, ptr %201, i64 88
  %203 = load ptr, ptr %202, align 8
  invoke void %203(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.04.0.copyload, ptr noundef nonnull align 1 dereferenceable(4) %18)
          to label %204 unwind label %205

204:                                              ; preds = %200
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %207

205:                                              ; preds = %200, %199
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %304

207:                                              ; preds = %197, %204
  %208 = add nuw i32 %.079124, 1
  %209 = load i32, ptr %31, align 8, !tbaa !5
  %210 = icmp ult i32 %208, %209
  br i1 %210, label %63, label %.critedge, !llvm.loop !43

.critedge:                                        ; preds = %69, %207, %60
  %211 = load i32, ptr %34, align 4, !tbaa !27
  %.not142 = icmp eq i32 %211, 0
  br i1 %.not142, label %._crit_edge138, label %.lr.ph137

.lr.ph137:                                        ; preds = %.critedge
  %212 = getelementptr inbounds i8, ptr %0, i64 112
  %213 = getelementptr inbounds i8, ptr %20, i64 8
  %214 = getelementptr inbounds i8, ptr %20, i64 4
  %215 = getelementptr inbounds i8, ptr %20, i64 40
  br label %216

216:                                              ; preds = %.lr.ph137, %._crit_edge134
  %.180136 = phi i32 [ 0, %.lr.ph137 ], [ %218, %._crit_edge134 ]
  %.089135 = phi i64 [ 0, %.lr.ph137 ], [ %.190.lcssa, %._crit_edge134 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 noundef -1)
  %217 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #6
  %.not143 = icmp eq i64 %217, 0
  br i1 %.not143, label %._crit_edge134, label %.lr.ph133

._crit_edge134:                                   ; preds = %287, %216
  %.190.lcssa = phi i64 [ %.089135, %216 ], [ %.291, %287 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  %218 = add nuw i32 %.180136, 1
  %219 = load i32, ptr %34, align 4, !tbaa !27
  %220 = icmp ult i32 %218, %219
  br i1 %220, label %216, label %._crit_edge138, !llvm.loop !44

.lr.ph133:                                        ; preds = %216, %287
  %.081131 = phi i64 [ %288, %287 ], [ 0, %216 ]
  %.190130 = phi i64 [ %.291, %287 ], [ %.089135, %216 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #6
  %221 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %.081131) #6
  invoke void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef nonnull align 8 dereferenceable(44) %221)
          to label %222 unwind label %224

222:                                              ; preds = %.lr.ph133
  %223 = load i32, ptr %20, align 8, !tbaa !34
  switch i32 %223, label %.invoke152 [
    i32 13, label %226
    i32 12, label %279
  ]

224:                                              ; preds = %.lr.ph133
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %292

226:                                              ; preds = %222
  %227 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %228 unwind label %.loopexit.split-lp

228:                                              ; preds = %226
  %229 = load i32, ptr %9, align 4, !tbaa !33
  %230 = icmp eq i32 %229, 3
  br i1 %230, label %231, label %257

231:                                              ; preds = %228
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 3)
          to label %232 unwind label %.loopexit.split-lp

232:                                              ; preds = %231
  %233 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %234 unwind label %.loopexit.split-lp

234:                                              ; preds = %232
  %235 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %236 unwind label %.loopexit.split-lp

236:                                              ; preds = %234
  %237 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %238 unwind label %.loopexit.split-lp

238:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %239 = load i32, ptr %5, align 4, !tbaa !33
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 noundef %239)
          to label %240 unwind label %251

240:                                              ; preds = %238
  %241 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0) #6
  %242 = load i32, ptr %21, align 4
  store i32 %242, ptr %241, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  %243 = load i32, ptr %6, align 4, !tbaa !33
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %22, i32 noundef %243)
          to label %244 unwind label %253

244:                                              ; preds = %240
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 1) #6
  %246 = load i32, ptr %22, align 4
  store i32 %246, ptr %245, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  %247 = load i32, ptr %7, align 4, !tbaa !33
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %23, i32 noundef %247)
          to label %248 unwind label %255

248:                                              ; preds = %244
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 2) #6
  %250 = load i32, ptr %23, align 4
  store i32 %250, ptr %249, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %.loopexit

.loopexit101:                                     ; preds = %.lr.ph129
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %291

.loopexit.split-lp:                               ; preds = %.invoke152, %226, %231, %232, %234, %236, %283
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %291

251:                                              ; preds = %238
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br label %291

253:                                              ; preds = %240
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br label %291

255:                                              ; preds = %244
  %256 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %291

257:                                              ; preds = %228
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  store i32 0, ptr %5, align 4, !tbaa !33
  %258 = load i32, ptr %9, align 4, !tbaa !33
  %.not144 = icmp eq i32 %258, 0
  br i1 %.not144, label %.loopexit, label %.lr.ph129

.lr.ph129:                                        ; preds = %257, %263
  %259 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERj(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %260 unwind label %.loopexit101

260:                                              ; preds = %.lr.ph129
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  %261 = load i32, ptr %8, align 4, !tbaa !33
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %24, i32 noundef %261)
          to label %262 unwind label %268

262:                                              ; preds = %260
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %263 unwind label %268

263:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  %264 = load i32, ptr %5, align 4, !tbaa !33
  %265 = add i32 %264, 1
  store i32 %265, ptr %5, align 4, !tbaa !33
  %266 = load i32, ptr %9, align 4, !tbaa !33
  %267 = icmp ult i32 %265, %266
  br i1 %267, label %.lr.ph129, label %.loopexit, !llvm.loop !45

268:                                              ; preds = %262, %260
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  br label %291

.loopexit:                                        ; preds = %263, %257, %248
  %270 = load ptr, ptr %2, align 8, !tbaa !28
  %271 = getelementptr inbounds i8, ptr %270, i64 32
  %272 = load ptr, ptr %271, align 8
  %273 = invoke i32 %272(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %274 unwind label %277

274:                                              ; preds = %.loopexit
  store i32 %273, ptr %19, align 4
  %275 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %19)
  %not. = xor i1 %275, true
  %276 = zext i1 %not. to i64
  %spec.select = add i64 %.190130, %276
  br label %287

277:                                              ; preds = %.loopexit
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %291

279:                                              ; preds = %222
  %280 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %3, i32 noundef 8192)
  br i1 %280, label %281, label %.invoke152

281:                                              ; preds = %279
  %282 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %19)
  br i1 %282, label %283, label %.invoke152

283:                                              ; preds = %281
  %.sroa.0.0.copyload = load i32, ptr %19, align 4
  %284 = load i32, ptr %214, align 4, !tbaa !39
  %285 = load i32, ptr %215, align 8, !tbaa !40
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_10FaceHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.0.0.copyload, ptr noundef nonnull align 8 dereferenceable(32) %213, i32 noundef %284, i32 noundef %285)
          to label %287 unwind label %.loopexit.split-lp

.invoke152:                                       ; preds = %222, %279, %281
  %286 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %287 unwind label %.loopexit.split-lp

287:                                              ; preds = %.invoke152, %274, %283
  %.291 = phi i64 [ %.190130, %283 ], [ %spec.select, %274 ], [ %.190130, %.invoke152 ]
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #6
  %288 = add nuw i64 %.081131, 1
  %289 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #6
  %290 = icmp ult i64 %288, %289
  br i1 %290, label %.lr.ph133, label %._crit_edge134, !llvm.loop !46

291:                                              ; preds = %.loopexit101, %.loopexit.split-lp, %277, %268, %255, %253, %251
  %.pn = phi { ptr, i32 } [ %278, %277 ], [ %256, %255 ], [ %254, %253 ], [ %252, %251 ], [ %269, %268 ], [ %lpad.loopexit, %.loopexit101 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #6
  br label %292

292:                                              ; preds = %291, %224
  %.pn.pn = phi { ptr, i32 } [ %.pn, %291 ], [ %225, %224 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  br label %304

._crit_edge138:                                   ; preds = %._crit_edge134, %.critedge
  %.089.lcssa = phi i64 [ 0, %.critedge ], [ %.190.lcssa, %._crit_edge134 ]
  br i1 %53, label %293, label %296

293:                                              ; preds = %._crit_edge138
  %294 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %295 unwind label %.loopexit.split-lp103

295:                                              ; preds = %293
  invoke void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224) %294)
          to label %296 unwind label %.loopexit.split-lp103

296:                                              ; preds = %295, %._crit_edge138
  %.not93 = icmp eq i64 %.089.lcssa, 0
  br i1 %.not93, label %303, label %297

297:                                              ; preds = %296
  %298 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %299 unwind label %.loopexit.split-lp103

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %298, i64 noundef %.089.lcssa)
          to label %301 unwind label %.loopexit.split-lp103

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull @.str.5)
          to label %303 unwind label %.loopexit.split-lp103

303:                                              ; preds = %296, %301, %46
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br label %305

304:                                              ; preds = %.loopexit102, %.loopexit.split-lp103, %58, %292, %205, %98, %92, %48
  %.pn99 = phi { ptr, i32 } [ %49, %48 ], [ %59, %58 ], [ %99, %98 ], [ %206, %205 ], [ %93, %92 ], [ %.pn.pn, %292 ], [ %lpad.loopexit104, %.loopexit102 ], [ %lpad.loopexit.split-lp105, %.loopexit.split-lp103 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn99

305:                                              ; preds = %303, %26
  %.1 = phi i1 [ %.not, %303 ], [ false, %26 ]
  ret i1 %.1
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_10can_u_readERSi(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef nonnull align 8 dereferenceable(16)) 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 #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224)) local_unnamed_addr #3 align 2

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

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

; 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 #4 align 2

; 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 #4 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_12VertexHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), i32, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #3 align 2

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

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

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

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

; 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 #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb0ENS_10FaceHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8), i32, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224)) 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 #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 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 = { "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 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 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 #5 = { 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 #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 24}
!6 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_E", !7, i64 0, !8, i64 8, !10, i64 16, !10, i64 20, !11, i64 24, !11, i64 28, !12, i64 32, !11, i64 36, !13, i64 40, !23, i64 88, !23, i64 112}
!7 = !{!"_ZTSN8OpenMesh2IO10BaseReaderE"}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN8OpenMesh2IO7OptionsE", !11, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_9ValueTypeE", !8, i64 0}
!13 = !{!"_ZTSSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !22, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !21, i64 8, !21, i64 16, !21, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!21 = !{!"any pointer", !8, i64 0}
!22 = !{!"long", !8, i64 0}
!23 = !{!"_ZTSSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!27 = !{!6, !11, i64 28}
!28 = !{!29, !29, i64 0}
!29 = !{!"vtable pointer", !9, i64 0}
!30 = !{!6, !11, i64 36}
!31 = !{!32, !32, i64 0}
!32 = !{!"float", !8, i64 0}
!33 = !{!11, !11, i64 0}
!34 = !{!35, !36, i64 0}
!35 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_12PropertyInfoE", !36, i64 0, !12, i64 4, !37, i64 8, !12, i64 40}
!36 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_8PropertyE", !8, i64 0}
!37 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !38, i64 0, !22, i64 8, !8, i64 16}
!38 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !21, i64 0}
!39 = !{!35, !12, i64 4}
!40 = !{!35, !12, i64 40}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = distinct !{!44, !42}
!45 = distinct !{!45, !42}
!46 = distinct !{!46, !42}


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