; 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.OpenMesh::VectorT.29" = type { %"struct.std::array.30" }
%"struct.std::array.30" = type { [2 x float] }
%"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.31" = type { %"struct.std::array.32" }
%"struct.std::array.32" = type { [4 x 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.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::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.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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #3 align 2

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

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

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

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

53:                                               ; preds = %5
  %54 = call noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
  %55 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef @.str.3)
  store i1 false, ptr %6, align 1
  br label %722

56:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 12, ptr %12) #7
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %12)
  call void @llvm.lifetime.start.p0(i64 12, ptr %13) #7
  call void @_ZN8OpenMesh7VectorTIfLi3EEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %13)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @_ZN8OpenMesh7VectorTIfLi2EEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %16, i32 noundef -1)
          to label %57 unwind label %82

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  invoke void @_ZN8OpenMesh7VectorTIiLi4EEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %19)
          to label %58 unwind label %86

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 4
  %61 = load i32, ptr %60, align 8, !tbaa !11
  %62 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 4
  %63 = load i32, ptr %62, align 8, !tbaa !11
  %64 = mul i32 3, %63
  %65 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 5
  %66 = load i32, ptr %65, align 4, !tbaa !30
  %67 = load ptr, ptr %59, align 8, !tbaa !31
  %68 = getelementptr inbounds ptr, ptr %67, i64 30
  %69 = load ptr, ptr %68, align 8
  invoke void %69(ptr noundef nonnull align 8 dereferenceable(8) %59, i32 noundef %61, i32 noundef %64, i32 noundef %66)
          to label %70 unwind label %90

70:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  %71 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %72 unwind label %94

72:                                               ; preds = %70
  %73 = invoke noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224) %71)
          to label %74 unwind label %94

74:                                               ; preds = %72
  %75 = zext i1 %73 to i8
  store i8 %75, ptr %21, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store i64 0, ptr %22, align 8, !tbaa !33
  %76 = load i8, ptr %21, align 1, !tbaa !9, !range !34, !noundef !35
  %77 = trunc i8 %76 to i1
  br i1 %77, label %78, label %102

78:                                               ; preds = %74
  %79 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %80 unwind label %98

80:                                               ; preds = %78
  invoke void @_ZN8OpenMesh8mostream7disableEv(ptr noundef nonnull align 8 dereferenceable(224) %79)
          to label %81 unwind label %98

81:                                               ; preds = %80
  br label %102

82:                                               ; preds = %56
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %17, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %18, align 4
  br label %721

86:                                               ; preds = %57
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %17, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %18, align 4
  br label %720

90:                                               ; preds = %58
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %17, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %18, align 4
  br label %719

94:                                               ; preds = %72, %70
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %17, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %18, align 4
  br label %718

98:                                               ; preds = %713, %710, %708, %703, %701, %80, %78
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %17, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %18, align 4
  br label %717

102:                                              ; preds = %81, %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !36
  br label %103

103:                                              ; preds = %514, %102
  %104 = load i32, ptr %23, align 4, !tbaa !36
  %105 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 4
  %106 = load i32, ptr %105, align 8, !tbaa !11
  %107 = icmp ult i32 %104, %106
  br i1 %107, label %108, label %117

108:                                              ; preds = %103
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = load ptr, ptr %109, align 8, !tbaa !31
  %111 = getelementptr i8, ptr %110, i64 -24
  %112 = load i64, ptr %111, align 8
  %113 = getelementptr inbounds i8, ptr %109, i64 %112
  %114 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %113)
          to label %115 unwind label %120

115:                                              ; preds = %108
  %116 = xor i1 %114, true
  br label %117

117:                                              ; preds = %115, %103
  %118 = phi i1 [ false, %103 ], [ %116, %115 ]
  br i1 %118, label %124, label %119

119:                                              ; preds = %117
  store i32 2, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %518

120:                                              ; preds = %495, %486, %482, %473, %469, %461, %154, %152, %150, %148, %146, %144, %142, %140, %138, %136, %134, %130, %108
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %17, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %18, align 4
  br label %517

124:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %125 = load ptr, ptr %9, align 8, !tbaa !5
  %126 = load ptr, ptr %125, align 8, !tbaa !31
  %127 = getelementptr inbounds ptr, ptr %126, i64 3
  %128 = load ptr, ptr %127, align 8
  %129 = invoke i32 %128(ptr noundef nonnull align 8 dereferenceable(8) %125)
          to label %130 unwind label %163

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

134:                                              ; preds = %130
  store float 0.000000e+00, ptr %133, align 4, !tbaa !37
  %135 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %12, i64 noundef 1)
          to label %136 unwind label %120

136:                                              ; preds = %134
  store float 0.000000e+00, ptr %135, align 4, !tbaa !37
  %137 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %12, i64 noundef 2)
          to label %138 unwind label %120

138:                                              ; preds = %136
  store float 0.000000e+00, ptr %137, align 4, !tbaa !37
  %139 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 0)
          to label %140 unwind label %120

140:                                              ; preds = %138
  store float 0.000000e+00, ptr %139, align 4, !tbaa !37
  %141 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 1)
          to label %142 unwind label %120

142:                                              ; preds = %140
  store float 0.000000e+00, ptr %141, align 4, !tbaa !37
  %143 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 2)
          to label %144 unwind label %120

144:                                              ; preds = %142
  store float 0.000000e+00, ptr %143, align 4, !tbaa !37
  %145 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %14, i64 noundef 0)
          to label %146 unwind label %120

146:                                              ; preds = %144
  store float 0.000000e+00, ptr %145, align 4, !tbaa !37
  %147 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %14, i64 noundef 1)
          to label %148 unwind label %120

148:                                              ; preds = %146
  store float 0.000000e+00, ptr %147, align 4, !tbaa !37
  %149 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 0)
          to label %150 unwind label %120

150:                                              ; preds = %148
  store i32 0, ptr %149, align 4, !tbaa !36
  %151 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 1)
          to label %152 unwind label %120

152:                                              ; preds = %150
  store i32 0, ptr %151, align 4, !tbaa !36
  %153 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 2)
          to label %154 unwind label %120

154:                                              ; preds = %152
  store i32 0, ptr %153, align 4, !tbaa !36
  %155 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 3)
          to label %156 unwind label %120

156:                                              ; preds = %154
  store i32 255, ptr %155, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store i64 0, ptr %26, align 8, !tbaa !33
  br label %157

157:                                              ; preds = %458, %156
  %158 = load i64, ptr %26, align 8, !tbaa !33
  %159 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %160 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #7
  %161 = icmp ult i64 %158, %160
  br i1 %161, label %167, label %162

162:                                              ; preds = %157
  store i32 5, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %461

163:                                              ; preds = %124
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %17, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %517

167:                                              ; preds = %157
  %168 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %169 = load i64, ptr %26, align 8, !tbaa !33
  %170 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %168, i64 noundef %169) #7
  %171 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %170, i32 0, i32 0
  %172 = load i32, ptr %171, align 8, !tbaa !39
  switch i32 %172, label %446 [
    i32 0, label %173
    i32 1, label %187
    i32 2, label %197
    i32 9, label %207
    i32 10, label %217
    i32 11, label %227
    i32 3, label %237
    i32 4, label %247
    i32 5, label %257
    i32 6, label %295
    i32 7, label %333
    i32 8, label %371
    i32 12, label %409
  ]

173:                                              ; preds = %167
  %174 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %175 = load i64, ptr %26, align 8, !tbaa !33
  %176 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %174, i64 noundef %175) #7
  %177 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %176, i32 0, i32 1
  %178 = load i32, ptr %177, align 4, !tbaa !44
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %12, i64 noundef 0)
          to label %181 unwind label %183

181:                                              ; preds = %173
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %178, ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull align 4 dereferenceable(4) %180)
          to label %182 unwind label %183

182:                                              ; preds = %181
  br label %457

183:                                              ; preds = %454, %446, %442, %434, %413, %409, %406, %398, %392, %385, %368, %360, %354, %347, %330, %322, %316, %309, %292, %284, %278, %271, %255, %247, %245, %237, %235, %227, %225, %217, %215, %207, %205, %197, %195, %187, %181, %173
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %17, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %517

187:                                              ; preds = %167
  %188 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %189 = load i64, ptr %26, align 8, !tbaa !33
  %190 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef %189) #7
  %191 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %190, i32 0, i32 1
  %192 = load i32, ptr %191, align 4, !tbaa !44
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %12, i64 noundef 1)
          to label %195 unwind label %183

195:                                              ; preds = %187
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %192, ptr noundef nonnull align 8 dereferenceable(16) %193, ptr noundef nonnull align 4 dereferenceable(4) %194)
          to label %196 unwind label %183

196:                                              ; preds = %195
  br label %457

197:                                              ; preds = %167
  %198 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %199 = load i64, ptr %26, align 8, !tbaa !33
  %200 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %198, i64 noundef %199) #7
  %201 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %200, i32 0, i32 1
  %202 = load i32, ptr %201, align 4, !tbaa !44
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %12, i64 noundef 2)
          to label %205 unwind label %183

205:                                              ; preds = %197
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %202, ptr noundef nonnull align 8 dereferenceable(16) %203, ptr noundef nonnull align 4 dereferenceable(4) %204)
          to label %206 unwind label %183

206:                                              ; preds = %205
  br label %457

207:                                              ; preds = %167
  %208 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %209 = load i64, ptr %26, align 8, !tbaa !33
  %210 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %208, i64 noundef %209) #7
  %211 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %210, i32 0, i32 1
  %212 = load i32, ptr %211, align 4, !tbaa !44
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 0)
          to label %215 unwind label %183

215:                                              ; preds = %207
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %212, ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull align 4 dereferenceable(4) %214)
          to label %216 unwind label %183

216:                                              ; preds = %215
  br label %457

217:                                              ; preds = %167
  %218 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %219 = load i64, ptr %26, align 8, !tbaa !33
  %220 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %219) #7
  %221 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %220, i32 0, i32 1
  %222 = load i32, ptr %221, align 4, !tbaa !44
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 1)
          to label %225 unwind label %183

225:                                              ; preds = %217
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %222, ptr noundef nonnull align 8 dereferenceable(16) %223, ptr noundef nonnull align 4 dereferenceable(4) %224)
          to label %226 unwind label %183

226:                                              ; preds = %225
  br label %457

227:                                              ; preds = %167
  %228 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %229 = load i64, ptr %26, align 8, !tbaa !33
  %230 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %228, i64 noundef %229) #7
  %231 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %230, i32 0, i32 1
  %232 = load i32, ptr %231, align 4, !tbaa !44
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %13, i64 noundef 2)
          to label %235 unwind label %183

235:                                              ; preds = %227
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %232, ptr noundef nonnull align 8 dereferenceable(16) %233, ptr noundef nonnull align 4 dereferenceable(4) %234)
          to label %236 unwind label %183

236:                                              ; preds = %235
  br label %457

237:                                              ; preds = %167
  %238 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %239 = load i64, ptr %26, align 8, !tbaa !33
  %240 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef %239) #7
  %241 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %240, i32 0, i32 1
  %242 = load i32, ptr %241, align 4, !tbaa !44
  %243 = load ptr, ptr %8, align 8, !tbaa !5
  %244 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %14, i64 noundef 0)
          to label %245 unwind label %183

245:                                              ; preds = %237
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %242, ptr noundef nonnull align 8 dereferenceable(16) %243, ptr noundef nonnull align 4 dereferenceable(4) %244)
          to label %246 unwind label %183

246:                                              ; preds = %245
  br label %457

247:                                              ; preds = %167
  %248 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %249 = load i64, ptr %26, align 8, !tbaa !33
  %250 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %248, i64 noundef %249) #7
  %251 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %250, i32 0, i32 1
  %252 = load i32, ptr %251, align 4, !tbaa !44
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %14, i64 noundef 1)
          to label %255 unwind label %183

255:                                              ; preds = %247
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %252, ptr noundef nonnull align 8 dereferenceable(16) %253, ptr noundef nonnull align 4 dereferenceable(4) %254)
          to label %256 unwind label %183

256:                                              ; preds = %255
  br label %457

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

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

271:                                              ; preds = %264, %257
  %272 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %273 = load i64, ptr %26, align 8, !tbaa !33
  %274 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %273) #7
  %275 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %274, i32 0, i32 1
  %276 = load i32, ptr %275, align 4, !tbaa !44
  %277 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %276, ptr noundef nonnull align 8 dereferenceable(16) %277, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %278 unwind label %183

278:                                              ; preds = %271
  %279 = load float, ptr %20, align 4, !tbaa !37
  %280 = fmul float %279, 2.550000e+02
  %281 = fptosi float %280 to i32
  %282 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 0)
          to label %283 unwind label %183

283:                                              ; preds = %278
  store i32 %281, ptr %282, align 4, !tbaa !36
  br label %294

284:                                              ; preds = %264
  %285 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %286 = load i64, ptr %26, align 8, !tbaa !33
  %287 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %285, i64 noundef %286) #7
  %288 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %287, i32 0, i32 1
  %289 = load i32, ptr %288, align 4, !tbaa !44
  %290 = load ptr, ptr %8, align 8, !tbaa !5
  %291 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 0)
          to label %292 unwind label %183

292:                                              ; preds = %284
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRi(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %289, ptr noundef nonnull align 8 dereferenceable(16) %290, ptr noundef nonnull align 4 dereferenceable(4) %291)
          to label %293 unwind label %183

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293, %283
  br label %457

295:                                              ; preds = %167
  %296 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %297 = load i64, ptr %26, align 8, !tbaa !33
  %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 !44
  %301 = icmp eq i32 %300, 13
  br i1 %301, label %309, label %302

302:                                              ; preds = %295
  %303 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %304 = load i64, ptr %26, align 8, !tbaa !33
  %305 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %303, i64 noundef %304) #7
  %306 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %305, i32 0, i32 1
  %307 = load i32, ptr %306, align 4, !tbaa !44
  %308 = icmp eq i32 %307, 14
  br i1 %308, label %309, label %322

309:                                              ; preds = %302, %295
  %310 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %311 = load i64, ptr %26, align 8, !tbaa !33
  %312 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %311) #7
  %313 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %312, i32 0, i32 1
  %314 = load i32, ptr %313, align 4, !tbaa !44
  %315 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %314, ptr noundef nonnull align 8 dereferenceable(16) %315, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %316 unwind label %183

316:                                              ; preds = %309
  %317 = load float, ptr %20, align 4, !tbaa !37
  %318 = fmul float %317, 2.550000e+02
  %319 = fptosi float %318 to i32
  %320 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 1)
          to label %321 unwind label %183

321:                                              ; preds = %316
  store i32 %319, ptr %320, align 4, !tbaa !36
  br label %332

322:                                              ; preds = %302
  %323 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %324 = load i64, ptr %26, align 8, !tbaa !33
  %325 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %323, i64 noundef %324) #7
  %326 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %325, i32 0, i32 1
  %327 = load i32, ptr %326, align 4, !tbaa !44
  %328 = load ptr, ptr %8, align 8, !tbaa !5
  %329 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 1)
          to label %330 unwind label %183

330:                                              ; preds = %322
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRi(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %327, ptr noundef nonnull align 8 dereferenceable(16) %328, ptr noundef nonnull align 4 dereferenceable(4) %329)
          to label %331 unwind label %183

331:                                              ; preds = %330
  br label %332

332:                                              ; preds = %331, %321
  br label %457

333:                                              ; preds = %167
  %334 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %335 = load i64, ptr %26, align 8, !tbaa !33
  %336 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef %335) #7
  %337 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %336, i32 0, i32 1
  %338 = load i32, ptr %337, align 4, !tbaa !44
  %339 = icmp eq i32 %338, 13
  br i1 %339, label %347, label %340

340:                                              ; preds = %333
  %341 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %342 = load i64, ptr %26, align 8, !tbaa !33
  %343 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %341, i64 noundef %342) #7
  %344 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %343, i32 0, i32 1
  %345 = load i32, ptr %344, align 4, !tbaa !44
  %346 = icmp eq i32 %345, 14
  br i1 %346, label %347, label %360

347:                                              ; preds = %340, %333
  %348 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %349 = load i64, ptr %26, align 8, !tbaa !33
  %350 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %348, i64 noundef %349) #7
  %351 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %350, i32 0, i32 1
  %352 = load i32, ptr %351, align 4, !tbaa !44
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %352, ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %354 unwind label %183

354:                                              ; preds = %347
  %355 = load float, ptr %20, align 4, !tbaa !37
  %356 = fmul float %355, 2.550000e+02
  %357 = fptosi float %356 to i32
  %358 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 2)
          to label %359 unwind label %183

359:                                              ; preds = %354
  store i32 %357, ptr %358, align 4, !tbaa !36
  br label %370

360:                                              ; preds = %340
  %361 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %362 = load i64, ptr %26, align 8, !tbaa !33
  %363 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %361, i64 noundef %362) #7
  %364 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %363, i32 0, i32 1
  %365 = load i32, ptr %364, align 4, !tbaa !44
  %366 = load ptr, ptr %8, align 8, !tbaa !5
  %367 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 2)
          to label %368 unwind label %183

368:                                              ; preds = %360
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRi(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %365, ptr noundef nonnull align 8 dereferenceable(16) %366, ptr noundef nonnull align 4 dereferenceable(4) %367)
          to label %369 unwind label %183

369:                                              ; preds = %368
  br label %370

370:                                              ; preds = %369, %359
  br label %457

371:                                              ; preds = %167
  %372 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %373 = load i64, ptr %26, align 8, !tbaa !33
  %374 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %373) #7
  %375 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %374, i32 0, i32 1
  %376 = load i32, ptr %375, align 4, !tbaa !44
  %377 = icmp eq i32 %376, 13
  br i1 %377, label %385, label %378

378:                                              ; preds = %371
  %379 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %380 = load i64, ptr %26, align 8, !tbaa !33
  %381 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %379, i64 noundef %380) #7
  %382 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !44
  %384 = icmp eq i32 %383, 14
  br i1 %384, label %385, label %398

385:                                              ; preds = %378, %371
  %386 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %387 = load i64, ptr %26, align 8, !tbaa !33
  %388 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %386, i64 noundef %387) #7
  %389 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %388, i32 0, i32 1
  %390 = load i32, ptr %389, align 4, !tbaa !44
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %390, ptr noundef nonnull align 8 dereferenceable(16) %391, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %392 unwind label %183

392:                                              ; preds = %385
  %393 = load float, ptr %20, align 4, !tbaa !37
  %394 = fmul float %393, 2.550000e+02
  %395 = fptosi float %394 to i32
  %396 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 3)
          to label %397 unwind label %183

397:                                              ; preds = %392
  store i32 %395, ptr %396, align 4, !tbaa !36
  br label %408

398:                                              ; preds = %378
  %399 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %400 = load i64, ptr %26, align 8, !tbaa !33
  %401 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %399, i64 noundef %400) #7
  %402 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %401, i32 0, i32 1
  %403 = load i32, ptr %402, align 4, !tbaa !44
  %404 = load ptr, ptr %8, align 8, !tbaa !5
  %405 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %19, i64 noundef 3)
          to label %406 unwind label %183

406:                                              ; preds = %398
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRi(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %403, ptr noundef nonnull align 8 dereferenceable(16) %404, ptr noundef nonnull align 4 dereferenceable(4) %405)
          to label %407 unwind label %183

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407, %397
  br label %457

409:                                              ; preds = %167
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %410, i32 noundef 8192)
          to label %412 unwind label %183

412:                                              ; preds = %409
  br i1 %411, label %413, label %434

413:                                              ; preds = %412
  %414 = load ptr, ptr %8, align 8, !tbaa !5
  %415 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %16, i64 4, i1 false)
  %416 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %417 = load i64, ptr %26, align 8, !tbaa !33
  %418 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %416, i64 noundef %417) #7
  %419 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %418, i32 0, i32 2
  %420 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %421 = load i64, ptr %26, align 8, !tbaa !33
  %422 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %420, i64 noundef %421) #7
  %423 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %422, i32 0, i32 1
  %424 = load i32, ptr %423, align 4, !tbaa !44
  %425 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %426 = load i64, ptr %26, align 8, !tbaa !33
  %427 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %425, i64 noundef %426) #7
  %428 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %427, i32 0, i32 3
  %429 = load i32, ptr %428, align 8, !tbaa !45
  %430 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %27, i32 0, i32 0
  %431 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %430, i32 0, i32 0
  %432 = load i32, ptr %431, align 4
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_12VertexHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %414, ptr noundef nonnull align 8 dereferenceable(8) %415, i32 %432, ptr noundef nonnull align 8 dereferenceable(32) %419, i32 noundef %424, i32 noundef %429)
          to label %433 unwind label %183

433:                                              ; preds = %413
  br label %445

434:                                              ; preds = %412
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 8
  %437 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %438 = load i64, ptr %26, align 8, !tbaa !33
  %439 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %437, i64 noundef %438) #7
  %440 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %439, i32 0, i32 1
  %441 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %436, ptr noundef nonnull align 4 dereferenceable(4) %440)
          to label %442 unwind label %183

442:                                              ; preds = %434
  %443 = load i32, ptr %441, align 4, !tbaa !36
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %435, i32 noundef %443)
          to label %444 unwind label %183

444:                                              ; preds = %442
  br label %445

445:                                              ; preds = %444, %433
  br label %457

446:                                              ; preds = %167
  %447 = load ptr, ptr %8, align 8, !tbaa !5
  %448 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 8
  %449 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 9
  %450 = load i64, ptr %26, align 8, !tbaa !33
  %451 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %449, i64 noundef %450) #7
  %452 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %451, i32 0, i32 1
  %453 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %448, ptr noundef nonnull align 4 dereferenceable(4) %452)
          to label %454 unwind label %183

454:                                              ; preds = %446
  %455 = load i32, ptr %453, align 4, !tbaa !36
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %447, i32 noundef %455)
          to label %456 unwind label %183

456:                                              ; preds = %454
  br label %457

457:                                              ; preds = %456, %445, %408, %370, %332, %294, %256, %246, %236, %226, %216, %206, %196, %182
  br label %458

458:                                              ; preds = %457
  %459 = load i64, ptr %26, align 8, !tbaa !33
  %460 = add i64 %459, 1
  store i64 %460, ptr %26, align 8, !tbaa !33
  br label %157, !llvm.loop !46

461:                                              ; preds = %162
  %462 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %16, i64 4, i1 false)
  %463 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %28, i32 0, i32 0
  %464 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %463, i32 0, i32 0
  %465 = load i32, ptr %464, align 4
  %466 = load ptr, ptr %462, align 8, !tbaa !31
  %467 = getelementptr inbounds ptr, ptr %466, i64 8
  %468 = load ptr, ptr %467, align 8
  invoke void %468(ptr noundef nonnull align 8 dereferenceable(8) %462, i32 %465, ptr noundef nonnull align 4 dereferenceable(12) %12)
          to label %469 unwind label %120

469:                                              ; preds = %461
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options17vertex_has_normalEv(ptr noundef nonnull align 4 dereferenceable(4) %470)
          to label %472 unwind label %120

472:                                              ; preds = %469
  br i1 %471, label %473, label %482

473:                                              ; preds = %472
  %474 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %16, i64 4, i1 false)
  %475 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %29, i32 0, i32 0
  %476 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %475, i32 0, i32 0
  %477 = load i32, ptr %476, align 4
  %478 = load ptr, ptr %474, align 8, !tbaa !31
  %479 = getelementptr inbounds ptr, ptr %478, i64 9
  %480 = load ptr, ptr %479, align 8
  invoke void %480(ptr noundef nonnull align 8 dereferenceable(8) %474, i32 %477, ptr noundef nonnull align 4 dereferenceable(12) %13)
          to label %481 unwind label %120

481:                                              ; preds = %473
  br label %482

482:                                              ; preds = %481, %472
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  %484 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options19vertex_has_texcoordEv(ptr noundef nonnull align 4 dereferenceable(4) %483)
          to label %485 unwind label %120

485:                                              ; preds = %482
  br i1 %484, label %486, label %495

486:                                              ; preds = %485
  %487 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %16, i64 4, i1 false)
  %488 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %30, i32 0, i32 0
  %489 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %488, i32 0, i32 0
  %490 = load i32, ptr %489, align 4
  %491 = load ptr, ptr %487, align 8, !tbaa !31
  %492 = getelementptr inbounds ptr, ptr %491, i64 14
  %493 = load ptr, ptr %492, align 8
  invoke void %493(ptr noundef nonnull align 8 dereferenceable(8) %487, i32 %490, ptr noundef nonnull align 4 dereferenceable(8) %14)
          to label %494 unwind label %120

494:                                              ; preds = %486
  br label %495

495:                                              ; preds = %494, %485
  %496 = load ptr, ptr %11, align 8, !tbaa !5
  %497 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options16vertex_has_colorEv(ptr noundef nonnull align 4 dereferenceable(4) %496)
          to label %498 unwind label %120

498:                                              ; preds = %495
  br i1 %497, label %499, label %513

499:                                              ; preds = %498
  %500 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %16, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  invoke void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(16) %19)
          to label %501 unwind label %509

501:                                              ; preds = %499
  %502 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %31, i32 0, i32 0
  %503 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %502, i32 0, i32 0
  %504 = load i32, ptr %503, align 4
  %505 = load ptr, ptr %500, align 8, !tbaa !31
  %506 = getelementptr inbounds ptr, ptr %505, i64 11
  %507 = load ptr, ptr %506, align 8
  invoke void %507(ptr noundef nonnull align 8 dereferenceable(8) %500, i32 %504, ptr noundef nonnull align 1 dereferenceable(4) %32)
          to label %508 unwind label %509

508:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %513

509:                                              ; preds = %501, %499
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %17, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %517

513:                                              ; preds = %508, %498
  br label %514

514:                                              ; preds = %513
  %515 = load i32, ptr %23, align 4, !tbaa !36
  %516 = add i32 %515, 1
  store i32 %516, ptr %23, align 4, !tbaa !36
  br label %103, !llvm.loop !48

517:                                              ; preds = %509, %183, %163, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %717

518:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 0, ptr %33, align 4, !tbaa !36
  br label %519

519:                                              ; preds = %694, %518
  %520 = load i32, ptr %33, align 4, !tbaa !36
  %521 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 5
  %522 = load i32, ptr %521, align 4, !tbaa !30
  %523 = icmp ult i32 %520, %522
  br i1 %523, label %525, label %524

524:                                              ; preds = %519
  store i32 9, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %698

525:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  invoke void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %34, i32 noundef -1)
          to label %526 unwind label %533

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  store i64 0, ptr %35, align 8, !tbaa !33
  br label %527

527:                                              ; preds = %688, %526
  %528 = load i64, ptr %35, align 8, !tbaa !33
  %529 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 10
  %530 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %529) #7
  %531 = icmp ult i64 %528, %530
  br i1 %531, label %537, label %532

532:                                              ; preds = %527
  store i32 12, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %693

533:                                              ; preds = %525
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %17, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %18, align 4
  br label %697

537:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 48, ptr %36) #7
  %538 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 10
  %539 = load i64, ptr %35, align 8, !tbaa !33
  %540 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %538, i64 noundef %539) #7
  invoke void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %36, ptr noundef nonnull align 8 dereferenceable(44) %540)
          to label %541 unwind label %544

541:                                              ; preds = %537
  %542 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 0
  %543 = load i32, ptr %542, align 8, !tbaa !39
  switch i32 %543, label %676 [
    i32 13, label %548
    i32 12, label %645
  ]

544:                                              ; preds = %537
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %17, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %18, align 4
  br label %692

548:                                              ; preds = %541
  %549 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 3
  %550 = load i32, ptr %549, align 8, !tbaa !45
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %550, ptr noundef nonnull align 8 dereferenceable(16) %551, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %552 unwind label %578

552:                                              ; preds = %548
  %553 = load i32, ptr %37, align 4, !tbaa !36
  %554 = icmp eq i32 %553, 3
  br i1 %554, label %555, label %599

555:                                              ; preds = %552
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 3)
          to label %556 unwind label %578

556:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %557 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 1
  %558 = load i32, ptr %557, align 4, !tbaa !44
  %559 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %558, ptr noundef nonnull align 8 dereferenceable(16) %559, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %560 unwind label %582

560:                                              ; preds = %556
  %561 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 1
  %562 = load i32, ptr %561, align 4, !tbaa !44
  %563 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %562, ptr noundef nonnull align 8 dereferenceable(16) %563, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %564 unwind label %582

564:                                              ; preds = %560
  %565 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 1
  %566 = load i32, ptr %565, align 4, !tbaa !44
  %567 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %566, ptr noundef nonnull align 8 dereferenceable(16) %567, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %568 unwind label %582

568:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %569 = load i32, ptr %38, align 4, !tbaa !36
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %41, i32 noundef %569)
          to label %570 unwind label %586

570:                                              ; preds = %568
  %571 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %571, 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
  %572 = load i32, ptr %39, align 4, !tbaa !36
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %42, i32 noundef %572)
          to label %573 unwind label %590

573:                                              ; preds = %570
  %574 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 1) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %574, ptr align 4 %42, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %575 = load i32, ptr %40, align 4, !tbaa !36
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %43, i32 noundef %575)
          to label %576 unwind label %594

576:                                              ; preds = %573
  %577 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 2) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %577, ptr align 4 %43, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %626

578:                                              ; preds = %684, %676, %672, %664, %652, %649, %645, %632, %555, %548
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %17, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %18, align 4
  br label %691

582:                                              ; preds = %564, %560, %556
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %17, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %18, align 4
  br label %598

586:                                              ; preds = %568
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %17, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %598

590:                                              ; preds = %570
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %17, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %598

594:                                              ; preds = %573
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %17, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %598

598:                                              ; preds = %594, %590, %586, %582
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %691

599:                                              ; preds = %552
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  store i32 0, ptr %44, align 4, !tbaa !36
  br label %600

600:                                              ; preds = %613, %599
  %601 = load i32, ptr %44, align 4, !tbaa !36
  %602 = load i32, ptr %37, align 4, !tbaa !36
  %603 = icmp ult i32 %601, %602
  br i1 %603, label %605, label %604

604:                                              ; preds = %600
  store i32 16, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %625

605:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %606 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 1
  %607 = load i32, ptr %606, align 4, !tbaa !44
  %608 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %50, i32 noundef %607, ptr noundef nonnull align 8 dereferenceable(16) %608, ptr noundef nonnull align 4 dereferenceable(4) %45)
          to label %609 unwind label %616

609:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  %610 = load i32, ptr %45, align 4, !tbaa !36
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %46, i32 noundef %610)
          to label %611 unwind label %620

611:                                              ; preds = %609
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %612 unwind label %620

612:                                              ; preds = %611
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %613

613:                                              ; preds = %612
  %614 = load i32, ptr %44, align 4, !tbaa !36
  %615 = add i32 %614, 1
  store i32 %615, ptr %44, align 4, !tbaa !36
  br label %600, !llvm.loop !49

616:                                              ; preds = %605
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %17, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %18, align 4
  br label %624

620:                                              ; preds = %611, %609
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %17, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %624

624:                                              ; preds = %620, %616
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %691

625:                                              ; preds = %604
  br label %626

626:                                              ; preds = %625, %576
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %627 = load ptr, ptr %9, align 8, !tbaa !5
  %628 = load ptr, ptr %627, align 8, !tbaa !31
  %629 = getelementptr inbounds ptr, ptr %628, i64 4
  %630 = load ptr, ptr %629, align 8
  %631 = invoke i32 %630(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %632 unwind label %640

632:                                              ; preds = %626
  %633 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %47, i32 0, i32 0
  %634 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %633, i32 0, i32 0
  store i32 %631, ptr %634, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %47, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  %635 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %636 unwind label %578

636:                                              ; preds = %632
  br i1 %635, label %644, label %637

637:                                              ; preds = %636
  %638 = load i64, ptr %22, align 8, !tbaa !33
  %639 = add i64 %638, 1
  store i64 %639, ptr %22, align 8, !tbaa !33
  br label %644

640:                                              ; preds = %626
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %17, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %691

644:                                              ; preds = %637, %636
  br label %687

645:                                              ; preds = %541
  %646 = load ptr, ptr %11, align 8, !tbaa !5
  %647 = invoke noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %646, i32 noundef 8192)
          to label %648 unwind label %578

648:                                              ; preds = %645
  br i1 %647, label %649, label %664

649:                                              ; preds = %648
  %650 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %651 unwind label %578

651:                                              ; preds = %649
  br i1 %650, label %652, label %664

652:                                              ; preds = %651
  %653 = load ptr, ptr %8, align 8, !tbaa !5
  %654 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %34, i64 4, i1 false)
  %655 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 2
  %656 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 1
  %657 = load i32, ptr %656, align 4, !tbaa !44
  %658 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %36, i32 0, i32 3
  %659 = load i32, ptr %658, align 8, !tbaa !45
  %660 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %48, i32 0, i32 0
  %661 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %660, i32 0, i32 0
  %662 = load i32, ptr %661, align 4
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_10FaceHandleEEEvRSiRNS0_12BaseImporterET0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9ValueTypeESG_(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %653, ptr noundef nonnull align 8 dereferenceable(8) %654, i32 %662, ptr noundef nonnull align 8 dereferenceable(32) %655, i32 noundef %657, i32 noundef %659)
          to label %663 unwind label %578

663:                                              ; preds = %652
  br label %675

664:                                              ; preds = %651, %648
  %665 = load ptr, ptr %8, align 8, !tbaa !5
  %666 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 8
  %667 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 10
  %668 = load i64, ptr %35, align 8, !tbaa !33
  %669 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %667, i64 noundef %668) #7
  %670 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %669, i32 0, i32 1
  %671 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %666, ptr noundef nonnull align 4 dereferenceable(4) %670)
          to label %672 unwind label %578

672:                                              ; preds = %664
  %673 = load i32, ptr %671, align 4, !tbaa !36
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %665, i32 noundef %673)
          to label %674 unwind label %578

674:                                              ; preds = %672
  br label %675

675:                                              ; preds = %674, %663
  br label %687

676:                                              ; preds = %541
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  %678 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 8
  %679 = getelementptr inbounds %"class.OpenMesh::IO::_PLYReader_", ptr %50, i32 0, i32 10
  %680 = load i64, ptr %35, align 8, !tbaa !33
  %681 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %679, i64 noundef %680) #7
  %682 = getelementptr inbounds %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", ptr %681, i32 0, i32 1
  %683 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %678, ptr noundef nonnull align 4 dereferenceable(4) %682)
          to label %684 unwind label %578

684:                                              ; preds = %676
  %685 = load i32, ptr %683, align 4, !tbaa !36
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %50, ptr noundef nonnull align 8 dereferenceable(16) %677, i32 noundef %685)
          to label %686 unwind label %578

686:                                              ; preds = %684
  br label %687

687:                                              ; preds = %686, %675, %644
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %36) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #7
  br label %688

688:                                              ; preds = %687
  %689 = load i64, ptr %35, align 8, !tbaa !33
  %690 = add i64 %689, 1
  store i64 %690, ptr %35, align 8, !tbaa !33
  br label %527, !llvm.loop !50

691:                                              ; preds = %640, %624, %598, %578
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %36) #7
  br label %692

692:                                              ; preds = %691, %544
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %697

693:                                              ; preds = %532
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %694

694:                                              ; preds = %693
  %695 = load i32, ptr %33, align 4, !tbaa !36
  %696 = add i32 %695, 1
  store i32 %696, ptr %33, align 4, !tbaa !36
  br label %519, !llvm.loop !51

697:                                              ; preds = %692, %533
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %717

698:                                              ; preds = %524
  %699 = load i8, ptr %21, align 1, !tbaa !9, !range !34, !noundef !35
  %700 = trunc i8 %699 to i1
  br i1 %700, label %701, label %705

701:                                              ; preds = %698
  %702 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %703 unwind label %98

703:                                              ; preds = %701
  invoke void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224) %702)
          to label %704 unwind label %98

704:                                              ; preds = %703
  br label %705

705:                                              ; preds = %704, %698
  %706 = load i64, ptr %22, align 8, !tbaa !33
  %707 = icmp ne i64 %706, 0
  br i1 %707, label %708, label %716

708:                                              ; preds = %705
  %709 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %710 unwind label %98

710:                                              ; preds = %708
  %711 = load i64, ptr %22, align 8, !tbaa !33
  %712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %709, i64 noundef %711)
          to label %713 unwind label %98

713:                                              ; preds = %710
  %714 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %712, ptr noundef @.str.5)
          to label %715 unwind label %98

715:                                              ; preds = %713
  br label %716

716:                                              ; preds = %715, %705
  store i1 true, ptr %6, align 1
  store i32 1, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #7
  br label %722

717:                                              ; preds = %697, %517, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %718

718:                                              ; preds = %717, %94
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  br label %719

719:                                              ; preds = %718, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %720

720:                                              ; preds = %719, %86
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  br label %721

721:                                              ; preds = %720, %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #7
  br label %724

722:                                              ; preds = %716, %53
  %723 = load i1, ptr %6, align 1
  ret i1 %723

724:                                              ; preds = %721
  %725 = load ptr, ptr %17, align 8
  %726 = load i32, ptr %18, align 4
  %727 = insertvalue { ptr, i32 } poison, ptr %725, 0
  %728 = insertvalue { ptr, i32 } %727, i32 %726, 1
  resume { ptr, i32 } %728
}

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 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) #3 align 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 #4 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local 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 dso_local void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 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) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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) #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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="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, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !15, i64 24}
!12 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_E", !13, i64 0, !7, i64 8, !14, i64 16, !14, i64 20, !15, i64 24, !15, i64 28, !16, i64 32, !15, i64 36, !17, i64 40, !26, i64 88, !26, i64 112}
!13 = !{!"_ZTSN8OpenMesh2IO10BaseReaderE"}
!14 = !{!"_ZTSN8OpenMesh2IO7OptionsE", !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_9ValueTypeE", !7, i64 0}
!17 = !{!"_ZTSSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEE", !18, i64 0}
!18 = !{!"_ZTSSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE", !19, i64 0}
!19 = !{!"_ZTSNSt8_Rb_treeIN8OpenMesh2IO11_PLYReader_9ValueTypeESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !20, i64 0, !22, i64 8}
!20 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEEE", !21, i64 0}
!21 = !{!"_ZTSSt4lessIN8OpenMesh2IO11_PLYReader_9ValueTypeEE"}
!22 = !{!"_ZTSSt15_Rb_tree_header", !23, i64 0, !25, i64 32}
!23 = !{!"_ZTSSt18_Rb_tree_node_base", !24, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!24 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!"_ZTSSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!12, !15, i64 28}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !8, i64 0}
!33 = !{!25, !25, i64 0}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!15, !15, i64 0}
!37 = !{!38, !38, i64 0}
!38 = !{!"float", !7, i64 0}
!39 = !{!40, !41, i64 0}
!40 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_12PropertyInfoE", !41, i64 0, !16, i64 4, !42, i64 8, !16, i64 40}
!41 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_8PropertyE", !7, i64 0}
!42 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !43, i64 0, !25, i64 8, !7, i64 16}
!43 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!44 = !{!40, !16, i64 4}
!45 = !{!40, !16, i64 40}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !47}
!51 = distinct !{!51, !47}


; 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.OpenMesh::VectorT.29" = type { %"struct.std::array.30" }
%"struct.std::array.30" = type { [2 x float] }
%"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.31" = type { %"struct.std::array.32" }
%"struct.std::array.32" = type { [4 x 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.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] }

@.str.3 = external hidden unnamed_addr constant [38 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK8OpenMesh2IO11_PLYReader_11read_binaryERSiRNS0_12BaseImporterEbRKNS0_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, i1 noundef zeroext %3, ptr noundef nonnull align 4 dereferenceable(4) %4) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.OpenMesh::VectorT", align 4
  %7 = alloca %"class.OpenMesh::VectorT", align 4
  %8 = alloca %"class.OpenMesh::VectorT.29", align 4
  %9 = alloca %"class.std::vector.33", align 8
  %10 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %11 = alloca %"class.OpenMesh::VectorT.31", align 4
  %12 = alloca float, align 4
  %13 = alloca %"class.OpenMesh::VectorT.38", align 1
  %14 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %15 = alloca %"struct.OpenMesh::IO::_PLYReader_::PropertyInfo", align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %21 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %22 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %23 = alloca i32, 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 = %5
  %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 %352

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

30:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  call void @_ZN8OpenMesh7VectorTIiLi4EEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %11)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %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 %49

39:                                               ; preds = %30
  %40 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %41 unwind label %51

41:                                               ; preds = %39
  %42 = invoke noundef zeroext i1 @_ZNK8OpenMesh8mostream10is_enabledEv(ptr noundef nonnull align 8 dereferenceable(224) %40)
          to label %43 unwind label %51

43:                                               ; preds = %41
  br i1 %42, label %44, label %55

44:                                               ; preds = %43
  %45 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %46 unwind label %53

46:                                               ; preds = %44
  invoke void @_ZN8OpenMesh8mostream7disableEv(ptr noundef nonnull align 8 dereferenceable(224) %45)
          to label %55 unwind label %53

47:                                               ; preds = %29
  %48 = landingpad { ptr, i32 }
          cleanup
  br label %351

49:                                               ; preds = %30
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %350

51:                                               ; preds = %41, %39
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %350

53:                                               ; preds = %347, %345, %343, %341, %339, %46, %44
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %350

55:                                               ; preds = %46, %43
  %56 = load i32, ptr %31, align 8, !tbaa !5
  %.not167 = icmp eq i32 %56, 0
  br i1 %.not167, label %.critedge, label %.lr.ph152

.lr.ph152:                                        ; preds = %55
  %57 = getelementptr inbounds i8, ptr %0, i64 88
  %58 = getelementptr inbounds i8, ptr %0, i64 40
  br label %59

59:                                               ; preds = %.lr.ph152, %248
  %.0117150 = phi i32 [ 0, %.lr.ph152 ], [ %249, %248 ]
  %60 = load ptr, ptr %1, align 8, !tbaa !28
  %61 = getelementptr i8, ptr %60, i64 -24
  %62 = load i64, ptr %61, align 8
  %63 = getelementptr inbounds i8, ptr %1, i64 %62
  %64 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv(ptr noundef nonnull align 8 dereferenceable(264) %63)
          to label %65 unwind label %72

65:                                               ; preds = %59
  br i1 %64, label %.critedge, label %74

.critedge:                                        ; preds = %65, %248, %55
  %66 = load i32, ptr %34, align 4, !tbaa !27
  %.not169 = icmp eq i32 %66, 0
  br i1 %.not169, label %._crit_edge165, label %.lr.ph164

.lr.ph164:                                        ; preds = %.critedge
  %67 = getelementptr inbounds i8, ptr %0, i64 112
  %68 = getelementptr inbounds i8, ptr %0, i64 40
  %69 = getelementptr inbounds i8, ptr %15, i64 8
  %70 = getelementptr inbounds i8, ptr %15, i64 4
  %71 = getelementptr inbounds i8, ptr %15, i64 40
  br label %252

72:                                               ; preds = %234, %228, %._crit_edge, %59
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %350

74:                                               ; preds = %65
  %75 = load ptr, ptr %2, align 8, !tbaa !28
  %76 = getelementptr inbounds i8, ptr %75, i64 24
  %77 = load ptr, ptr %76, align 8
  %78 = invoke i32 %77(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %79 unwind label %96

79:                                               ; preds = %74
  store i32 %78, ptr %10, align 4
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 0)
  store float 0.000000e+00, ptr %80, align 4, !tbaa !30
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 1)
  store float 0.000000e+00, ptr %81, align 4, !tbaa !30
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 2)
  store float 0.000000e+00, ptr %82, align 4, !tbaa !30
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 0)
  store float 0.000000e+00, ptr %83, align 4, !tbaa !30
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 1)
  store float 0.000000e+00, ptr %84, align 4, !tbaa !30
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 2)
  store float 0.000000e+00, ptr %85, align 4, !tbaa !30
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %8, i64 noundef 0)
  store float 0.000000e+00, ptr %86, align 4, !tbaa !30
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %8, i64 noundef 1)
  store float 0.000000e+00, ptr %87, align 4, !tbaa !30
  %88 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef 0)
  store i32 0, ptr %88, align 4, !tbaa !32
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef 1)
  store i32 0, ptr %89, align 4, !tbaa !32
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef 2)
  store i32 0, ptr %90, align 4, !tbaa !32
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef 3)
  store i32 255, ptr %91, align 4, !tbaa !32
  %92 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #6
  %.not168 = icmp eq i64 %92, 0
  br i1 %.not168, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %222, %79
  %.sroa.013.0.copyload = load i32, ptr %10, align 4
  %93 = load ptr, ptr %2, align 8, !tbaa !28
  %94 = getelementptr inbounds i8, ptr %93, i64 64
  %95 = load ptr, ptr %94, align 8
  invoke void %95(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.013.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %6)
          to label %226 unwind label %72

96:                                               ; preds = %74
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %350

.lr.ph:                                           ; preds = %79, %222
  %.0118149 = phi i64 [ %223, %222 ], [ 0, %79 ]
  %98 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %99 = load i32, ptr %98, align 8, !tbaa !33
  switch i32 %99, label %.invoke184 [
    i32 0, label %100
    i32 1, label %107
    i32 2, label %112
    i32 9, label %117
    i32 10, label %122
    i32 11, label %127
    i32 3, label %132
    i32 4, label %137
    i32 5, label %144
    i32 6, label %158
    i32 7, label %172
    i32 8, label %186
    i32 12, label %204
  ]

100:                                              ; preds = %.lr.ph
  %101 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %102 = getelementptr inbounds i8, ptr %101, i64 4
  %103 = load i32, ptr %102, align 4, !tbaa !38
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 0)
  br label %.invoke173

105:                                              ; preds = %.invoke184, %.invoke173, %.invoke172, %.invoke, %206, %196, %182, %168, %154
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %350

107:                                              ; preds = %.lr.ph
  %108 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %109 = getelementptr inbounds i8, ptr %108, i64 4
  %110 = load i32, ptr %109, align 4, !tbaa !38
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 1)
  br label %.invoke173

112:                                              ; preds = %.lr.ph
  %113 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %114 = getelementptr inbounds i8, ptr %113, i64 4
  %115 = load i32, ptr %114, align 4, !tbaa !38
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %6, i64 noundef 2)
  br label %.invoke173

117:                                              ; preds = %.lr.ph
  %118 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %119 = getelementptr inbounds i8, ptr %118, i64 4
  %120 = load i32, ptr %119, align 4, !tbaa !38
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 0)
  br label %.invoke173

122:                                              ; preds = %.lr.ph
  %123 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %124 = getelementptr inbounds i8, ptr %123, i64 4
  %125 = load i32, ptr %124, align 4, !tbaa !38
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 1)
  br label %.invoke173

127:                                              ; preds = %.lr.ph
  %128 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %129 = getelementptr inbounds i8, ptr %128, i64 4
  %130 = load i32, ptr %129, align 4, !tbaa !38
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi3EEixEm(ptr noundef nonnull align 4 dereferenceable(12) %7, i64 noundef 2)
  br label %.invoke173

132:                                              ; preds = %.lr.ph
  %133 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %134 = getelementptr inbounds i8, ptr %133, i64 4
  %135 = load i32, ptr %134, align 4, !tbaa !38
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %8, i64 noundef 0)
  br label %.invoke173

137:                                              ; preds = %.lr.ph
  %138 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %139 = getelementptr inbounds i8, ptr %138, i64 4
  %140 = load i32, ptr %139, align 4, !tbaa !38
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIfLi2EEixEm(ptr noundef nonnull align 4 dereferenceable(8) %8, i64 noundef 1)
  br label %.invoke173

.invoke173:                                       ; preds = %100, %107, %112, %117, %122, %127, %132, %137
  %142 = phi i32 [ %140, %137 ], [ %135, %132 ], [ %130, %127 ], [ %125, %122 ], [ %120, %117 ], [ %115, %112 ], [ %110, %107 ], [ %103, %100 ]
  %143 = phi ptr [ %141, %137 ], [ %136, %132 ], [ %131, %127 ], [ %126, %122 ], [ %121, %117 ], [ %116, %112 ], [ %111, %107 ], [ %104, %100 ]
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %142, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %143)
          to label %222 unwind label %105

144:                                              ; preds = %.lr.ph
  %145 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %146 = getelementptr inbounds i8, ptr %145, i64 4
  %147 = load i32, ptr %146, align 4, !tbaa !38
  %148 = icmp eq i32 %147, 13
  br i1 %148, label %154, label %149

149:                                              ; preds = %144
  %150 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %151 = getelementptr inbounds i8, ptr %150, i64 4
  %152 = load i32, ptr %151, align 4, !tbaa !38
  %153 = icmp eq i32 %152, 14
  br i1 %153, label %154, label %.invoke172

154:                                              ; preds = %149, %144
  %155 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %156 = getelementptr inbounds i8, ptr %155, i64 4
  %157 = load i32, ptr %156, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %157, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %.sink.split unwind label %105

158:                                              ; preds = %.lr.ph
  %159 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %160 = getelementptr inbounds i8, ptr %159, i64 4
  %161 = load i32, ptr %160, align 4, !tbaa !38
  %162 = icmp eq i32 %161, 13
  br i1 %162, label %168, label %163

163:                                              ; preds = %158
  %164 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %165 = getelementptr inbounds i8, ptr %164, i64 4
  %166 = load i32, ptr %165, align 4, !tbaa !38
  %167 = icmp eq i32 %166, 14
  br i1 %167, label %168, label %.invoke172

168:                                              ; preds = %163, %158
  %169 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %170 = getelementptr inbounds i8, ptr %169, i64 4
  %171 = load i32, ptr %170, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %171, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %.sink.split unwind label %105

172:                                              ; preds = %.lr.ph
  %173 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %174 = getelementptr inbounds i8, ptr %173, i64 4
  %175 = load i32, ptr %174, align 4, !tbaa !38
  %176 = icmp eq i32 %175, 13
  br i1 %176, label %182, label %177

177:                                              ; preds = %172
  %178 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %179 = getelementptr inbounds i8, ptr %178, i64 4
  %180 = load i32, ptr %179, align 4, !tbaa !38
  %181 = icmp eq i32 %180, 14
  br i1 %181, label %182, label %.invoke172

182:                                              ; preds = %177, %172
  %183 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %184 = getelementptr inbounds i8, ptr %183, i64 4
  %185 = load i32, ptr %184, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %185, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %.sink.split unwind label %105

186:                                              ; preds = %.lr.ph
  %187 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %188 = getelementptr inbounds i8, ptr %187, i64 4
  %189 = load i32, ptr %188, align 4, !tbaa !38
  %190 = icmp eq i32 %189, 13
  br i1 %190, label %196, label %191

191:                                              ; preds = %186
  %192 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %193 = getelementptr inbounds i8, ptr %192, i64 4
  %194 = load i32, ptr %193, align 4, !tbaa !38
  %195 = icmp eq i32 %194, 14
  br i1 %195, label %196, label %.invoke172

196:                                              ; preds = %191, %186
  %197 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %198 = getelementptr inbounds i8, ptr %197, i64 4
  %199 = load i32, ptr %198, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_9readValueENS1_9ValueTypeERSiRf(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %199, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %.sink.split unwind label %105

.invoke172:                                       ; preds = %191, %177, %163, %149
  %.sink = phi i64 [ 0, %149 ], [ 1, %163 ], [ 2, %177 ], [ 3, %191 ]
  %200 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %201 = getelementptr inbounds i8, ptr %200, i64 4
  %202 = load i32, ptr %201, align 4, !tbaa !38
  %203 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef %.sink)
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRi(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %202, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %203)
          to label %222 unwind label %105

204:                                              ; preds = %.lr.ph
  %205 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef 8192)
  br i1 %205, label %206, label %.invoke184

206:                                              ; preds = %204
  %.sroa.014.0.copyload = load i32, ptr %10, align 4
  %207 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %208 = getelementptr inbounds i8, ptr %207, i64 8
  %209 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %210 = getelementptr inbounds i8, ptr %209, i64 4
  %211 = load i32, ptr %210, align 4, !tbaa !38
  %212 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %213 = getelementptr inbounds i8, ptr %212, i64 40
  %214 = load i32, ptr %213, align 8, !tbaa !39
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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.014.0.copyload, ptr noundef nonnull align 8 dereferenceable(32) %208, i32 noundef %211, i32 noundef %214)
          to label %222 unwind label %105

.invoke184:                                       ; preds = %.lr.ph, %204
  %215 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %.0118149) #6
  %216 = getelementptr inbounds i8, ptr %215, i64 4
  %217 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %58, ptr noundef nonnull align 4 dereferenceable(4) %216)
          to label %.invoke unwind label %105

.invoke:                                          ; preds = %.invoke184
  %218 = load i32, ptr %217, align 4, !tbaa !32
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %218)
          to label %222 unwind label %105

.sink.split:                                      ; preds = %196, %182, %168, %154
  %.sink179 = phi i64 [ 0, %154 ], [ 1, %168 ], [ 2, %182 ], [ 3, %196 ]
  %.sink181 = load float, ptr %12, align 4, !tbaa !30
  %219 = fmul float %.sink181, 2.550000e+02
  %220 = fptosi float %219 to i32
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh7VectorTIiLi4EEixEm(ptr noundef nonnull align 4 dereferenceable(16) %11, i64 noundef %.sink179)
  store i32 %220, ptr %221, align 4, !tbaa !32
  br label %222

222:                                              ; preds = %.sink.split, %.invoke173, %.invoke172, %.invoke, %206
  %223 = add nuw i64 %.0118149, 1
  %224 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #6
  %225 = icmp ult i64 %223, %224
  br i1 %225, label %.lr.ph, label %._crit_edge, !llvm.loop !40

226:                                              ; preds = %._crit_edge
  %227 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options17vertex_has_normalEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %227, label %228, label %232

228:                                              ; preds = %226
  %.sroa.012.0.copyload = load i32, ptr %10, align 4
  %229 = load ptr, ptr %2, align 8, !tbaa !28
  %230 = getelementptr inbounds i8, ptr %229, i64 72
  %231 = load ptr, ptr %230, align 8
  invoke void %231(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.012.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %7)
          to label %232 unwind label %72

232:                                              ; preds = %228, %226
  %233 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options19vertex_has_texcoordEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %233, label %234, label %238

234:                                              ; preds = %232
  %.sroa.011.0.copyload = load i32, ptr %10, align 4
  %235 = load ptr, ptr %2, align 8, !tbaa !28
  %236 = getelementptr inbounds i8, ptr %235, i64 112
  %237 = load ptr, ptr %236, align 8
  invoke void %237(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.011.0.copyload, ptr noundef nonnull align 4 dereferenceable(8) %8)
          to label %238 unwind label %72

238:                                              ; preds = %234, %232
  %239 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options16vertex_has_colorEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %239, label %240, label %248

240:                                              ; preds = %238
  %.sroa.010.0.copyload = load i32, ptr %10, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  invoke void @_ZN8OpenMesh7VectorTIhLi4EEC2IiSt9enable_ifILb1EvEEERKNS0_IT_Li4EEE(ptr noundef nonnull align 1 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(16) %11)
          to label %241 unwind label %246

241:                                              ; preds = %240
  %242 = load ptr, ptr %2, align 8, !tbaa !28
  %243 = getelementptr inbounds i8, ptr %242, i64 88
  %244 = load ptr, ptr %243, align 8
  invoke void %244(ptr noundef nonnull align 8 dereferenceable(8) %2, i32 %.sroa.010.0.copyload, ptr noundef nonnull align 1 dereferenceable(4) %13)
          to label %245 unwind label %246

245:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br label %248

246:                                              ; preds = %241, %240
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br label %350

248:                                              ; preds = %238, %245
  %249 = add nuw i32 %.0117150, 1
  %250 = load i32, ptr %31, align 8, !tbaa !5
  %251 = icmp ult i32 %249, %250
  br i1 %251, label %59, label %.critedge, !llvm.loop !42

._crit_edge165:                                   ; preds = %._crit_edge161, %.critedge
  %.0114.lcssa = phi i64 [ 0, %.critedge ], [ %.1115.lcssa, %._crit_edge161 ]
  br i1 %42, label %339, label %342

252:                                              ; preds = %.lr.ph164, %._crit_edge161
  %.0104163 = phi i32 [ 0, %.lr.ph164 ], [ %254, %._crit_edge161 ]
  %.0114162 = phi i64 [ 0, %.lr.ph164 ], [ %.1115.lcssa, %._crit_edge161 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  call void @_ZN8OpenMesh10FaceHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %14, i32 noundef -1)
  %253 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #6
  %.not170 = icmp eq i64 %253, 0
  br i1 %.not170, label %._crit_edge161, label %.lr.ph160

._crit_edge161:                                   ; preds = %333, %252
  %.1115.lcssa = phi i64 [ %.0114162, %252 ], [ %.2116, %333 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  %254 = add nuw i32 %.0104163, 1
  %255 = load i32, ptr %34, align 4, !tbaa !27
  %256 = icmp ult i32 %254, %255
  br i1 %256, label %252, label %._crit_edge165, !llvm.loop !43

.lr.ph160:                                        ; preds = %252, %333
  %.0103158 = phi i64 [ %334, %333 ], [ 0, %252 ]
  %.1115157 = phi i64 [ %.2116, %333 ], [ %.0114162, %252 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #6
  %257 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %.0103158) #6
  invoke void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %15, ptr noundef nonnull align 8 dereferenceable(44) %257)
          to label %258 unwind label %260

258:                                              ; preds = %.lr.ph160
  %259 = load i32, ptr %15, align 8, !tbaa !33
  switch i32 %259, label %.invoke186 [
    i32 13, label %262
    i32 12, label %322
  ]

260:                                              ; preds = %.lr.ph160
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %338

262:                                              ; preds = %258
  %263 = load i32, ptr %71, align 8, !tbaa !39
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %263, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %264 unwind label %287

264:                                              ; preds = %262
  %265 = load i32, ptr %16, align 4, !tbaa !32
  %266 = icmp eq i32 %265, 3
  br i1 %266, label %267, label %298

267:                                              ; preds = %264
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 3)
          to label %268 unwind label %287

268:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  %269 = load i32, ptr %70, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %269, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %270 unwind label %289

270:                                              ; preds = %268
  %271 = load i32, ptr %70, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %271, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %272 unwind label %289

272:                                              ; preds = %270
  %273 = load i32, ptr %70, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %273, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %274 unwind label %289

274:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  %275 = load i32, ptr %17, align 4, !tbaa !32
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %20, i32 noundef %275)
          to label %276 unwind label %291

276:                                              ; preds = %274
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #6
  %278 = load i32, ptr %20, align 4
  store i32 %278, ptr %277, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %279 = load i32, ptr %18, align 4, !tbaa !32
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 noundef %279)
          to label %280 unwind label %293

280:                                              ; preds = %276
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 1) #6
  %282 = load i32, ptr %21, align 4
  store i32 %282, ptr %281, 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
  %283 = load i32, ptr %19, align 4, !tbaa !32
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %22, i32 noundef %283)
          to label %284 unwind label %295

284:                                              ; preds = %280
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 2) #6
  %286 = load i32, ptr %22, align 4
  store i32 %286, ptr %285, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %.loopexit

287:                                              ; preds = %.invoke186, %.invoke182, %326, %267, %262
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %337

289:                                              ; preds = %272, %270, %268
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %297

291:                                              ; preds = %274
  %292 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br label %297

293:                                              ; preds = %276
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br label %297

295:                                              ; preds = %280
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br label %297

297:                                              ; preds = %295, %293, %291, %289
  %.pn120 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ], [ %292, %291 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %337

298:                                              ; preds = %264
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %299 = load i32, ptr %16, align 4, !tbaa !32
  %.not171 = icmp eq i32 %299, 0
  br i1 %.not171, label %.loopexit, label %.lr.ph156

.lr.ph156:                                        ; preds = %298, %304
  %.0102154 = phi i32 [ %305, %304 ], [ 0, %298 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  %300 = load i32, ptr %70, align 4, !tbaa !38
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_11readIntegerENS1_9ValueTypeERSiRj(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %300, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %301 unwind label %308

301:                                              ; preds = %.lr.ph156
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  %302 = load i32, ptr %23, align 4, !tbaa !32
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %24, i32 noundef %302)
          to label %303 unwind label %310

303:                                              ; preds = %301
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %304 unwind label %310

304:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  %305 = add nuw i32 %.0102154, 1
  %306 = load i32, ptr %16, align 4, !tbaa !32
  %307 = icmp ult i32 %305, %306
  br i1 %307, label %.lr.ph156, label %.loopexit, !llvm.loop !44

308:                                              ; preds = %.lr.ph156
  %309 = landingpad { ptr, i32 }
          cleanup
  br label %312

310:                                              ; preds = %303, %301
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  br label %312

312:                                              ; preds = %310, %308
  %.pn = phi { ptr, i32 } [ %311, %310 ], [ %309, %308 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %337

.loopexit:                                        ; preds = %304, %298, %284
  %313 = load ptr, ptr %2, align 8, !tbaa !28
  %314 = getelementptr inbounds i8, ptr %313, i64 32
  %315 = load ptr, ptr %314, align 8
  %316 = invoke i32 %315(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %317 unwind label %320

317:                                              ; preds = %.loopexit
  store i32 %316, ptr %14, align 4
  %318 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %14)
  %not. = xor i1 %318, true
  %319 = zext i1 %not. to i64
  %spec.select = add i64 %.1115157, %319
  br label %333

320:                                              ; preds = %.loopexit
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %337

322:                                              ; preds = %258
  %323 = call noundef zeroext i1 @_ZNK8OpenMesh2IO7Options5checkEi(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef 8192)
  br i1 %323, label %324, label %.invoke186

324:                                              ; preds = %322
  %325 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %14)
  br i1 %325, label %326, label %.invoke186

326:                                              ; preds = %324
  %.sroa.0.0.copyload = load i32, ptr %14, align 4
  %327 = load i32, ptr %70, align 4, !tbaa !38
  %328 = load i32, ptr %71, align 8, !tbaa !39
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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) %69, i32 noundef %327, i32 noundef %328)
          to label %333 unwind label %287

.invoke186:                                       ; preds = %258, %322, %324
  %329 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %.0103158) #6
  %330 = getelementptr inbounds i8, ptr %329, i64 4
  %331 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIN8OpenMesh2IO11_PLYReader_9ValueTypeEiSt4lessIS3_ESaISt4pairIKS3_iEEEixERS7_(ptr noundef nonnull align 8 dereferenceable(48) %68, ptr noundef nonnull align 4 dereferenceable(4) %330)
          to label %.invoke182 unwind label %287

.invoke182:                                       ; preds = %.invoke186
  %332 = load i32, ptr %331, align 4, !tbaa !32
  invoke void @_ZNK8OpenMesh2IO11_PLYReader_13consume_inputERSii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %332)
          to label %333 unwind label %287

333:                                              ; preds = %.invoke182, %317, %326
  %.2116 = phi i64 [ %.1115157, %326 ], [ %spec.select, %317 ], [ %.1115157, %.invoke182 ]
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #6
  %334 = add nuw i64 %.0103158, 1
  %335 = call noundef i64 @_ZNKSt6vectorIN8OpenMesh2IO11_PLYReader_12PropertyInfoESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #6
  %336 = icmp ult i64 %334, %335
  br i1 %336, label %.lr.ph160, label %._crit_edge161, !llvm.loop !45

337:                                              ; preds = %320, %312, %297, %287
  %.pn122 = phi { ptr, i32 } [ %288, %287 ], [ %321, %320 ], [ %.pn120, %297 ], [ %.pn, %312 ]
  call void @_ZN8OpenMesh2IO11_PLYReader_12PropertyInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #6
  br label %338

338:                                              ; preds = %337, %260
  %.pn122.pn = phi { ptr, i32 } [ %.pn122, %337 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br label %350

339:                                              ; preds = %._crit_edge165
  %340 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %341 unwind label %53

341:                                              ; preds = %339
  invoke void @_ZN8OpenMesh8mostream6enableEv(ptr noundef nonnull align 8 dereferenceable(224) %340)
          to label %342 unwind label %53

342:                                              ; preds = %341, %._crit_edge165
  %.not = icmp eq i64 %.0114.lcssa, 0
  br i1 %.not, label %349, label %343

343:                                              ; preds = %342
  %344 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_Z5omerrv()
          to label %345 unwind label %53

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %344, i64 noundef %.0114.lcssa)
          to label %347 unwind label %53

347:                                              ; preds = %345
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull @.str.5)
          to label %349 unwind label %53

349:                                              ; preds = %347, %342
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #6
  br label %352

350:                                              ; preds = %51, %72, %96, %105, %246, %338, %53, %49
  %.pn125.pn.pn.pn = phi { ptr, i32 } [ %50, %49 ], [ %52, %51 ], [ %.pn122.pn, %338 ], [ %54, %53 ], [ %106, %105 ], [ %247, %246 ], [ %73, %72 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  br label %351

351:                                              ; preds = %350, %47
  %.pn125.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn125.pn.pn.pn, %350 ], [ %48, %47 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #6
  resume { ptr, i32 } %.pn125.pn.pn.pn.pn

352:                                              ; preds = %349, %26
  ret i1 %25
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local 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 dso_local void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 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 #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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 #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8OpenMesh2IO11_PLYReader_18readCustomPropertyILb1ENS_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 #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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="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 = !{!31, !31, i64 0}
!31 = !{!"float", !8, i64 0}
!32 = !{!11, !11, i64 0}
!33 = !{!34, !35, i64 0}
!34 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_12PropertyInfoE", !35, i64 0, !12, i64 4, !36, i64 8, !12, i64 40}
!35 = !{!"_ZTSN8OpenMesh2IO11_PLYReader_8PropertyE", !8, i64 0}
!36 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !37, i64 0, !22, i64 8, !8, i64 16}
!37 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !21, i64 0}
!38 = !{!34, !12, i64 4}
!39 = !{!34, !12, i64 40}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = distinct !{!42, !41}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !41}
!45 = distinct !{!45, !41}


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