; LLVM IR from bldeng/AASolver :: AndersonOpt/external/OpenMesh/Core/Mesh (PolyConnectivity)

; 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"

%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl" }
%"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl" = type { %"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = 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::HalfedgeHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60" = type { %"class.OpenMesh::Iterators::GenericCirculatorBaseT.base", %"struct.OpenMesh::HalfedgeHandle" }
%"class.OpenMesh::Iterators::GenericCirculatorBaseT.base" = type <{ ptr, %"struct.OpenMesh::HalfedgeHandle", %"struct.OpenMesh::HalfedgeHandle", i32 }>
%"struct.OpenMesh::EdgeHandle" = type { %"class.OpenMesh::BaseHandle" }
%"struct.OpenMesh::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.__gnu_cxx::__normal_iterator.61" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.62" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [41 x i8], align 1
@__PRETTY_FUNCTION__._ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb = external hidden unnamed_addr constant [63 x i8], align 1

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh16PolyConnectivity11is_boundaryENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(416), i32) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel24opposite_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10EdgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel11edge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb(ptr noundef nonnull align 8 dereferenceable(416) %0, i32 %1, i1 noundef zeroext %2) #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %8 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %9 = alloca %"class.std::vector.55", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector.43", align 8
  %13 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %14 = alloca %"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60", align 8
  %15 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %16 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %17 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %18 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %19 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %20 = alloca %"struct.OpenMesh::EdgeHandle", align 4
  %21 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %22 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %23 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.61", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.61", align 8
  %26 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %27 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %28 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %29 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %30 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %31 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %32 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %33 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %34 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %35 = alloca %"struct.OpenMesh::EdgeHandle", align 4
  %36 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %37 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %38 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %39 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %40 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %41 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %42 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %43 = alloca %"struct.OpenMesh::EdgeHandle", align 4
  %44 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %45 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %46 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %47 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %48 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %49 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %50 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %51 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %52 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %53 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %54 = alloca %"struct.OpenMesh::EdgeHandle", align 4
  %55 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %56 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %57 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %58 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %59 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %60 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %61 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %62 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %63 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %64 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %65 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %66 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %67 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %68 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.62", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.62", align 8
  %71 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %72 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %4, i32 0, i32 0
  %73 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %72, i32 0, i32 0
  store i32 %1, ptr %73, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  %74 = zext i1 %2 to i8
  store i8 %74, ptr %6, align 1, !tbaa !9
  %75 = load ptr, ptr %5, align 8
  %76 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %76, label %77, label %84

77:                                               ; preds = %3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %7, ptr align 4 %4, i64 4, i1 false)
  %78 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %7, i32 0, i32 0
  %79 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %78, i32 0, i32 0
  %80 = load i32, ptr %79, align 4
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %80)
  %82 = call noundef zeroext i1 @_ZNK8OpenMesh10Attributes10StatusInfo7deletedEv(ptr noundef nonnull align 4 dereferenceable(4) %81)
  %83 = xor i1 %82, true
  br label %84

84:                                               ; preds = %77, %3
  %85 = phi i1 [ false, %3 ], [ %83, %77 ]
  br i1 %85, label %86, label %87

86:                                               ; preds = %84
  br label %89

87:                                               ; preds = %84
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.4, i32 noundef 514, ptr noundef @__PRETTY_FUNCTION__._ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb) #6
  unreachable

88:                                               ; No predecessors!
  br label %89

89:                                               ; preds = %88, %86
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %8, ptr align 4 %4, i64 4, i1 false)
  %90 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %8, i32 0, i32 0
  %91 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %90, i32 0, i32 0
  %92 = load i32, ptr %91, align 4
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %92)
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %93, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #7
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  invoke void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 3)
          to label %94 unwind label %105

94:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 3)
          to label %95 unwind label %109

95:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef -1)
          to label %96 unwind label %113

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %15, ptr align 4 %4, i64 4, i1 false)
  %97 = getelementptr inbounds %"struct.OpenMesh::FaceHandle", ptr %15, i32 0, i32 0
  %98 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %97, i32 0, i32 0
  %99 = load i32, ptr %98, align 4
  invoke void @_ZN8OpenMesh16PolyConnectivity7fh_iterENS_10FaceHandleE(ptr dead_on_unwind writable sret(%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60") align 8 %14, ptr noundef nonnull align 8 dereferenceable(416) %75, i32 %99)
          to label %100 unwind label %117

100:                                              ; preds = %96
  br label %101

101:                                              ; preds = %170, %100
  %102 = invoke noundef zeroext i1 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEE8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %103 unwind label %117

103:                                              ; preds = %101
  br i1 %102, label %121, label %104

104:                                              ; preds = %103
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  br label %176

105:                                              ; preds = %89
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %10, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %11, align 4
  br label %472

109:                                              ; preds = %94
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %10, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %11, align 4
  br label %471

113:                                              ; preds = %95
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %10, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %11, align 4
  br label %470

117:                                              ; preds = %168, %134, %129, %123, %101, %96
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %10, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %11, align 4
  br label %175

121:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %122 = invoke i32 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEdeEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %123 unwind label %151

123:                                              ; preds = %121
  %124 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %16, i32 0, i32 0
  %125 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %124, i32 0, i32 0
  store i32 %122, ptr %125, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %13, ptr align 4 %16, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %13, i64 4, i1 false)
  %126 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %17, i32 0, i32 0
  %127 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %126, i32 0, i32 0
  %128 = load i32, ptr %127, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_boundaryENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %128)
          to label %129 unwind label %117

129:                                              ; preds = %123
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %13, i64 4, i1 false)
  %130 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %19, i32 0, i32 0
  %131 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %130, i32 0, i32 0
  %132 = load i32, ptr %131, align 4
  %133 = invoke i32 @_ZNK8OpenMesh11ArrayKernel24opposite_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %132)
          to label %134 unwind label %117

134:                                              ; preds = %129
  %135 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %18, i32 0, i32 0
  %136 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %135, i32 0, i32 0
  store i32 %133, ptr %136, align 4
  %137 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %18, i32 0, i32 0
  %138 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %137, i32 0, i32 0
  %139 = load i32, ptr %138, align 4
  %140 = invoke noundef zeroext i1 @_ZNK8OpenMesh16PolyConnectivity11is_boundaryENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(416) %75, i32 %139)
          to label %141 unwind label %117

141:                                              ; preds = %134
  br i1 %140, label %142, label %159

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %21, ptr align 4 %13, i64 4, i1 false)
  %143 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %21, i32 0, i32 0
  %144 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %143, i32 0, i32 0
  %145 = load i32, ptr %144, align 4
  %146 = invoke i32 @_ZNK8OpenMesh11ArrayKernel11edge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %145)
          to label %147 unwind label %155

147:                                              ; preds = %142
  %148 = getelementptr inbounds %"struct.OpenMesh::EdgeHandle", ptr %20, i32 0, i32 0
  %149 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %148, i32 0, i32 0
  store i32 %146, ptr %149, align 4
  invoke void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %150 unwind label %155

150:                                              ; preds = %147
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %159

151:                                              ; preds = %121
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %10, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %175

155:                                              ; preds = %147, %142
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %10, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %175

159:                                              ; preds = %150, %141
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %23, ptr align 4 %13, i64 4, i1 false)
  %160 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %23, i32 0, i32 0
  %161 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %160, i32 0, i32 0
  %162 = load i32, ptr %161, align 4
  %163 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %162)
          to label %164 unwind label %171

164:                                              ; preds = %159
  %165 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %22, i32 0, i32 0
  %166 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %165, i32 0, i32 0
  store i32 %163, ptr %166, align 4
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %167 unwind label %171

167:                                              ; preds = %164
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %168

168:                                              ; preds = %167
  %169 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEppEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %170 unwind label %117

170:                                              ; preds = %168
  br label %101, !llvm.loop !11

171:                                              ; preds = %164, %159
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %10, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %175

175:                                              ; preds = %171, %155, %151, %117
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  br label %470

176:                                              ; preds = %104
  %177 = call noundef zeroext i1 @_ZNKSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br i1 %177, label %450, label %178

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %179 = call ptr @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %180 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.61", ptr %24, i32 0, i32 0
  store ptr %179, ptr %180, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %181 = call ptr @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %182 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.61", ptr %25, i32 0, i32 0
  store ptr %181, ptr %182, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 noundef -1)
          to label %183 unwind label %276

183:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %27, i32 noundef -1)
          to label %184 unwind label %280

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %28, i32 noundef -1)
          to label %185 unwind label %284

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %29, i32 noundef -1)
          to label %186 unwind label %288

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %30, i32 noundef -1)
          to label %187 unwind label %292

187:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  invoke void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %31, i32 noundef -1)
          to label %188 unwind label %296

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %32, i32 noundef -1)
          to label %189 unwind label %300

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 noundef -1)
          to label %190 unwind label %304

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %439, %190
  %192 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br i1 %192, label %193, label %441

193:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %194, i64 4, i1 false)
  %195 = getelementptr inbounds %"struct.OpenMesh::EdgeHandle", ptr %35, i32 0, i32 0
  %196 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %195, i32 0, i32 0
  %197 = load i32, ptr %196, align 4
  %198 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %197, i32 noundef 0)
          to label %199 unwind label %308

199:                                              ; preds = %193
  %200 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %34, i32 0, i32 0
  %201 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %200, i32 0, i32 0
  store i32 %198, ptr %201, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %34, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %26, i64 4, i1 false)
  %202 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %37, i32 0, i32 0
  %203 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 4
  %205 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %204)
          to label %206 unwind label %312

206:                                              ; preds = %199
  %207 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %36, i32 0, i32 0
  %208 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %207, i32 0, i32 0
  store i32 %205, ptr %208, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %36, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 %26, i64 4, i1 false)
  %209 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %39, i32 0, i32 0
  %210 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %209, i32 0, i32 0
  %211 = load i32, ptr %210, align 4
  %212 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %211)
          to label %213 unwind label %316

213:                                              ; preds = %206
  %214 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %38, i32 0, i32 0
  %215 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %214, i32 0, i32 0
  store i32 %212, ptr %215, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %38, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 4 %26, i64 4, i1 false)
  %216 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %41, i32 0, i32 0
  %217 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %216, i32 0, i32 0
  %218 = load i32, ptr %217, align 4
  %219 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %218)
          to label %220 unwind label %320

220:                                              ; preds = %213
  %221 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %40, i32 0, i32 0
  %222 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %221, i32 0, i32 0
  store i32 %219, ptr %222, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %40, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %223 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %223, i64 4, i1 false)
  %224 = getelementptr inbounds %"struct.OpenMesh::EdgeHandle", ptr %43, i32 0, i32 0
  %225 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %224, i32 0, i32 0
  %226 = load i32, ptr %225, align 4
  %227 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %226, i32 noundef 1)
          to label %228 unwind label %324

228:                                              ; preds = %220
  %229 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %42, i32 0, i32 0
  %230 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %229, i32 0, i32 0
  store i32 %227, ptr %230, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, 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 %44) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 4 %27, i64 4, i1 false)
  %231 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %45, i32 0, i32 0
  %232 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 4
  %234 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %233)
          to label %235 unwind label %328

235:                                              ; preds = %228
  %236 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %44, i32 0, i32 0
  %237 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %236, i32 0, i32 0
  store i32 %234, ptr %237, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %44, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 4 %27, i64 4, i1 false)
  %238 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %47, i32 0, i32 0
  %239 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %238, i32 0, i32 0
  %240 = load i32, ptr %239, align 4
  %241 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %240)
          to label %242 unwind label %332

242:                                              ; preds = %235
  %243 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %46, i32 0, i32 0
  %244 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %243, i32 0, i32 0
  store i32 %241, ptr %244, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %46, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 4 %27, i64 4, i1 false)
  %245 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %49, i32 0, i32 0
  %246 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %245, i32 0, i32 0
  %247 = load i32, ptr %246, align 4
  %248 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %247)
          to label %249 unwind label %336

249:                                              ; preds = %242
  %250 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %48, i32 0, i32 0
  %251 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %250, i32 0, i32 0
  store i32 %248, ptr %251, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %48, i64 4, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 4 %30, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 %29, i64 4, i1 false)
  %252 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %50, i32 0, i32 0
  %253 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %252, i32 0, i32 0
  %254 = load i32, ptr %253, align 4
  %255 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %51, i32 0, i32 0
  %256 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %255, i32 0, i32 0
  %257 = load i32, ptr %256, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel24set_next_halfedge_handleENS_14HalfedgeHandleES1_(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %254, i32 %257)
          to label %258 unwind label %304

258:                                              ; preds = %249
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 4 %31, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %53, ptr align 4 %28, i64 4, i1 false)
  %259 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %52, i32 0, i32 0
  %260 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %259, i32 0, i32 0
  %261 = load i32, ptr %260, align 4
  %262 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %53, i32 0, i32 0
  %263 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %262, i32 0, i32 0
  %264 = load i32, ptr %263, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel24set_next_halfedge_handleENS_14HalfedgeHandleES1_(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %261, i32 %264)
          to label %265 unwind label %304

265:                                              ; preds = %258
  %266 = invoke noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel15has_edge_statusEv(ptr noundef nonnull align 8 dereferenceable(368) %75)
          to label %267 unwind label %304

267:                                              ; preds = %265
  br i1 %266, label %268, label %340

268:                                              ; preds = %267
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %269, i64 4, i1 false)
  %270 = getelementptr inbounds %"struct.OpenMesh::EdgeHandle", ptr %54, i32 0, i32 0
  %271 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %270, i32 0, i32 0
  %272 = load i32, ptr %271, align 4
  %273 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10EdgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %272)
          to label %274 unwind label %304

274:                                              ; preds = %268
  invoke void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %273, i1 noundef zeroext true)
          to label %275 unwind label %304

275:                                              ; preds = %274
  br label %340

276:                                              ; preds = %178
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %10, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %11, align 4
  br label %449

280:                                              ; preds = %183
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %10, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %11, align 4
  br label %448

284:                                              ; preds = %184
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %10, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %11, align 4
  br label %447

288:                                              ; preds = %185
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %10, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %11, align 4
  br label %446

292:                                              ; preds = %186
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %10, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %11, align 4
  br label %445

296:                                              ; preds = %187
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %10, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %11, align 4
  br label %444

300:                                              ; preds = %188
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %10, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %11, align 4
  br label %443

304:                                              ; preds = %429, %424, %418, %413, %407, %388, %383, %377, %372, %366, %354, %349, %348, %343, %340, %274, %268, %265, %258, %249, %189
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %10, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %11, align 4
  br label %442

308:                                              ; preds = %193
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %10, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %442

312:                                              ; preds = %199
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %10, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %442

316:                                              ; preds = %206
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %10, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %442

320:                                              ; preds = %213
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %10, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %442

324:                                              ; preds = %220
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %10, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %442

328:                                              ; preds = %228
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %10, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %442

332:                                              ; preds = %235
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %10, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %442

336:                                              ; preds = %242
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %10, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %442

340:                                              ; preds = %275, %267
  %341 = invoke noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel19has_halfedge_statusEv(ptr noundef nonnull align 8 dereferenceable(368) %75)
          to label %342 unwind label %304

342:                                              ; preds = %340
  br i1 %341, label %343, label %356

343:                                              ; preds = %342
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %26, i64 4, i1 false)
  %344 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %55, i32 0, i32 0
  %345 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %344, i32 0, i32 0
  %346 = load i32, ptr %345, align 4
  %347 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %346)
          to label %348 unwind label %304

348:                                              ; preds = %343
  invoke void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %347, i1 noundef zeroext true)
          to label %349 unwind label %304

349:                                              ; preds = %348
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 4 %27, i64 4, i1 false)
  %350 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %56, i32 0, i32 0
  %351 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %350, i32 0, i32 0
  %352 = load i32, ptr %351, align 4
  %353 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %352)
          to label %354 unwind label %304

354:                                              ; preds = %349
  invoke void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %353, i1 noundef zeroext true)
          to label %355 unwind label %304

355:                                              ; preds = %354
  br label %356

356:                                              ; preds = %355, %342
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %32, i64 4, i1 false)
  %357 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %58, i32 0, i32 0
  %358 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %357, i32 0, i32 0
  %359 = load i32, ptr %358, align 4
  %360 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %359)
          to label %361 unwind label %379

361:                                              ; preds = %356
  %362 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %57, i32 0, i32 0
  %363 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %362, i32 0, i32 0
  store i32 %360, ptr %363, align 4
  %364 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %365 unwind label %379

365:                                              ; preds = %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br i1 %364, label %366, label %397

366:                                              ; preds = %365
  %367 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %368 unwind label %304

368:                                              ; preds = %366
  br i1 %367, label %369, label %388

369:                                              ; preds = %368
  %370 = load i8, ptr %6, align 1, !tbaa !9, !range !13, !noundef !14
  %371 = trunc i8 %370 to i1
  br i1 %371, label %372, label %383

372:                                              ; preds = %369
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 4 %32, i64 4, i1 false)
  %373 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %59, i32 0, i32 0
  %374 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %373, i32 0, i32 0
  %375 = load i32, ptr %374, align 4
  %376 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %375)
          to label %377 unwind label %304

377:                                              ; preds = %372
  invoke void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %376, i1 noundef zeroext true)
          to label %378 unwind label %304

378:                                              ; preds = %377
  br label %383

379:                                              ; preds = %361, %356
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %10, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br label %442

383:                                              ; preds = %378, %369
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %32, i64 4, i1 false)
  %384 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %60, i32 0, i32 0
  %385 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %384, i32 0, i32 0
  %386 = load i32, ptr %385, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_isolatedENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %386)
          to label %387 unwind label %304

387:                                              ; preds = %383
  br label %396

388:                                              ; preds = %368
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %61, ptr align 4 %32, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %28, i64 4, i1 false)
  %389 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %61, i32 0, i32 0
  %390 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %389, i32 0, i32 0
  %391 = load i32, ptr %390, align 4
  %392 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %62, i32 0, i32 0
  %393 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %392, i32 0, i32 0
  %394 = load i32, ptr %393, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel19set_halfedge_handleENS_12VertexHandleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %391, i32 %394)
          to label %395 unwind label %304

395:                                              ; preds = %388
  br label %396

396:                                              ; preds = %395, %387
  br label %397

397:                                              ; preds = %396, %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %33, i64 4, i1 false)
  %398 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %64, i32 0, i32 0
  %399 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %398, i32 0, i32 0
  %400 = load i32, ptr %399, align 4
  %401 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %400)
          to label %402 unwind label %420

402:                                              ; preds = %397
  %403 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %63, i32 0, i32 0
  %404 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %403, i32 0, i32 0
  store i32 %401, ptr %404, align 4
  %405 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %406 unwind label %420

406:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br i1 %405, label %407, label %438

407:                                              ; preds = %406
  %408 = invoke noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %409 unwind label %304

409:                                              ; preds = %407
  br i1 %408, label %410, label %429

410:                                              ; preds = %409
  %411 = load i8, ptr %6, align 1, !tbaa !9, !range !13, !noundef !14
  %412 = trunc i8 %411 to i1
  br i1 %412, label %413, label %424

413:                                              ; preds = %410
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %33, i64 4, i1 false)
  %414 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %65, i32 0, i32 0
  %415 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %414, i32 0, i32 0
  %416 = load i32, ptr %415, align 4
  %417 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %416)
          to label %418 unwind label %304

418:                                              ; preds = %413
  invoke void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %417, i1 noundef zeroext true)
          to label %419 unwind label %304

419:                                              ; preds = %418
  br label %424

420:                                              ; preds = %402, %397
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %10, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br label %442

424:                                              ; preds = %419, %410
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %33, i64 4, i1 false)
  %425 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %66, i32 0, i32 0
  %426 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %425, i32 0, i32 0
  %427 = load i32, ptr %426, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_isolatedENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %427)
          to label %428 unwind label %304

428:                                              ; preds = %424
  br label %437

429:                                              ; preds = %409
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %67, ptr align 4 %33, i64 4, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %29, i64 4, i1 false)
  %430 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %67, i32 0, i32 0
  %431 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %430, i32 0, i32 0
  %432 = load i32, ptr %431, align 4
  %433 = getelementptr inbounds %"struct.OpenMesh::HalfedgeHandle", ptr %68, i32 0, i32 0
  %434 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %433, i32 0, i32 0
  %435 = load i32, ptr %434, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel19set_halfedge_handleENS_12VertexHandleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %75, i32 %432, i32 %435)
          to label %436 unwind label %304

436:                                              ; preds = %429
  br label %437

437:                                              ; preds = %436, %428
  br label %438

438:                                              ; preds = %437, %406
  br label %439

439:                                              ; preds = %438
  %440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br label %191, !llvm.loop !15

441:                                              ; preds = %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %450

442:                                              ; preds = %420, %379, %336, %332, %328, %324, %320, %316, %312, %308, %304
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %443

443:                                              ; preds = %442, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %444

444:                                              ; preds = %443, %296
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %445

445:                                              ; preds = %444, %292
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  br label %446

446:                                              ; preds = %445, %288
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %447

447:                                              ; preds = %446, %284
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %448

448:                                              ; preds = %447, %280
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %449

449:                                              ; preds = %448, %276
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %470

450:                                              ; preds = %441, %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %451 = call ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %452 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.62", ptr %69, i32 0, i32 0
  store ptr %451, ptr %452, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %453 = call ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %454 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.62", ptr %70, i32 0, i32 0
  store ptr %453, ptr %454, align 8
  br label %455

455:                                              ; preds = %463, %450
  %456 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  br i1 %456, label %457, label %469

457:                                              ; preds = %455
  %458 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %458, i64 4, i1 false)
  %459 = getelementptr inbounds %"struct.OpenMesh::VertexHandle", ptr %71, i32 0, i32 0
  %460 = getelementptr inbounds %"class.OpenMesh::BaseHandle", ptr %459, i32 0, i32 0
  %461 = load i32, ptr %460, align 4
  invoke void @_ZN8OpenMesh16PolyConnectivity24adjust_outgoing_halfedgeENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(416) %75, i32 %461)
          to label %462 unwind label %465

462:                                              ; preds = %457
  br label %463

463:                                              ; preds = %462
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br label %455, !llvm.loop !16

465:                                              ; preds = %457
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %10, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  br label %470

469:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #7
  ret void

470:                                              ; preds = %465, %449, %175, %113
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %471

471:                                              ; preds = %470, %109
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #7
  br label %472

472:                                              ; preds = %471, %105
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #7
  br label %473

473:                                              ; preds = %472
  %474 = load ptr, ptr %10, align 8
  %475 = load i32, ptr %11, align 4
  %476 = insertvalue { ptr, i32 } poison, ptr %474, 0
  %477 = insertvalue { ptr, i32 } %476, i32 %475, 1
  resume { ptr, i32 } %477
}

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368), i32, i32 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel15has_edge_statusEv(ptr noundef nonnull align 8 dereferenceable(368)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel19has_halfedge_statusEv(ptr noundef nonnull align 8 dereferenceable(368)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh16PolyConnectivity7fh_iterENS_10FaceHandleE(ptr dead_on_unwind noalias writable sret(%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60") align 8, ptr noundef nonnull align 8 dereferenceable(416), i32) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEdeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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"

%"struct.OpenMesh::FaceHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::BaseHandle" = type { i32 }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl" }
%"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl" = type { %"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<OpenMesh::EdgeHandle, std::allocator<OpenMesh::EdgeHandle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = 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::HalfedgeHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60" = type { %"class.OpenMesh::Iterators::GenericCirculatorBaseT.base", %"struct.OpenMesh::HalfedgeHandle" }
%"class.OpenMesh::Iterators::GenericCirculatorBaseT.base" = type <{ ptr, %"struct.OpenMesh::HalfedgeHandle", %"struct.OpenMesh::HalfedgeHandle", i32 }>
%"struct.OpenMesh::EdgeHandle" = type { %"class.OpenMesh::BaseHandle" }
%"struct.OpenMesh::VertexHandle" = type { %"class.OpenMesh::BaseHandle" }
%"class.__gnu_cxx::__normal_iterator.61" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.62" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [41 x i8], align 1
@__PRETTY_FUNCTION__._ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb = external hidden unnamed_addr constant [63 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel24opposite_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10EdgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel11edge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb(ptr noundef nonnull align 8 dereferenceable(416) %0, i32 %1, i1 noundef zeroext %2) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.OpenMesh::FaceHandle", align 4
  %5 = alloca %"class.std::vector.55", align 8
  %6 = alloca %"class.std::vector.43", align 8
  %7 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %8 = alloca %"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60", align 8
  %9 = alloca %"struct.OpenMesh::EdgeHandle", align 4
  %10 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.61", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.61", align 8
  %13 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %14 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %15 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %16 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %17 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %18 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %19 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %20 = alloca %"struct.OpenMesh::VertexHandle", align 4
  %21 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %22 = alloca %"struct.OpenMesh::HalfedgeHandle", align 4
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.62", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.62", align 8
  store i32 %1, ptr %4, align 4
  %25 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandle8is_validEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  br i1 %25, label %26, label %.critedge

26:                                               ; preds = %3
  %.sroa.042.0.copyload = load i32, ptr %4, align 4
  %27 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.042.0.copyload)
  %28 = call noundef zeroext i1 @_ZNK8OpenMesh10Attributes10StatusInfo7deletedEv(ptr noundef nonnull align 4 dereferenceable(4) %27)
  br i1 %28, label %.critedge, label %29

.critedge:                                        ; preds = %3, %26
  call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.4, i32 noundef 514, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8OpenMesh16PolyConnectivity11delete_faceENS_10FaceHandleEb) #5
  unreachable

29:                                               ; preds = %26
  %.sroa.041.0.copyload = load i32, ptr %4, align 4
  %30 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.041.0.copyload)
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %30, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #6
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3)
          to label %31 unwind label %37

31:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef 3)
          to label %32 unwind label %39

32:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %7, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  %.sroa.040.0.copyload = load i32, ptr %4, align 4
  invoke void @_ZN8OpenMesh16PolyConnectivity7fh_iterENS_10FaceHandleE(ptr dead_on_unwind nonnull writable sret(%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60") align 8 %8, ptr noundef nonnull align 8 dereferenceable(416) %0, i32 %.sroa.040.0.copyload)
          to label %.preheader59 unwind label %.loopexit.split-lp61

.preheader59:                                     ; preds = %32, %60
  %33 = invoke noundef zeroext i1 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEE8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %34 unwind label %.loopexit60

34:                                               ; preds = %.preheader59
  br i1 %33, label %41, label %35

35:                                               ; preds = %34
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  %36 = call noundef zeroext i1 @_ZNKSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  br i1 %36, label %153, label %65

37:                                               ; preds = %29
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %165

39:                                               ; preds = %31
  %40 = landingpad { ptr, i32 }
          cleanup
  br label %164

.loopexit60:                                      ; preds = %.preheader59, %43, %44, %46, %60
  %lpad.loopexit62 = landingpad { ptr, i32 }
          cleanup
  br label %64

.loopexit.split-lp61:                             ; preds = %32
  %lpad.loopexit.split-lp63 = landingpad { ptr, i32 }
          cleanup
  br label %64

41:                                               ; preds = %34
  %42 = invoke i32 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEdeEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %43 unwind label %53

43:                                               ; preds = %41
  store i32 %42, ptr %7, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_boundaryENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %42)
          to label %44 unwind label %.loopexit60

44:                                               ; preds = %43
  %.sroa.036.0.copyload = load i32, ptr %7, align 4
  %45 = invoke i32 @_ZNK8OpenMesh11ArrayKernel24opposite_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.036.0.copyload)
          to label %46 unwind label %.loopexit60

46:                                               ; preds = %44
  %47 = invoke noundef zeroext i1 @_ZNK8OpenMesh16PolyConnectivity11is_boundaryENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(416) %0, i32 %45)
          to label %48 unwind label %.loopexit60

48:                                               ; preds = %46
  br i1 %47, label %49, label %57

49:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %.sroa.035.0.copyload = load i32, ptr %7, align 4
  %50 = invoke i32 @_ZNK8OpenMesh11ArrayKernel11edge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.035.0.copyload)
          to label %51 unwind label %55

51:                                               ; preds = %49
  store i32 %50, ptr %9, align 4
  invoke void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %52 unwind label %55

52:                                               ; preds = %51
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %57

53:                                               ; preds = %41
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %64

55:                                               ; preds = %51, %49
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %64

57:                                               ; preds = %52, %48
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %.sroa.034.0.copyload = load i32, ptr %7, align 4
  %58 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.034.0.copyload)
          to label %59 unwind label %62

59:                                               ; preds = %57
  store i32 %58, ptr %10, align 4
  invoke void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %60 unwind label %62

60:                                               ; preds = %59
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  %61 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEppEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %.preheader59 unwind label %.loopexit60, !llvm.loop !5

62:                                               ; preds = %59, %57
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br label %64

64:                                               ; preds = %.loopexit60, %.loopexit.split-lp61, %62, %55, %53
  %.pn54 = phi { ptr, i32 } [ %63, %62 ], [ %56, %55 ], [ %54, %53 ], [ %lpad.loopexit62, %.loopexit60 ], [ %lpad.loopexit.split-lp63, %.loopexit.split-lp61 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  br label %163

65:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %66 = call ptr @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  store ptr %66, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %67 = call ptr @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  store ptr %67, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %14, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %15, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %16, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @_ZN8OpenMesh14HalfedgeHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %18, i32 noundef -1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 noundef -1)
          to label %68 unwind label %95

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  invoke void @_ZN8OpenMesh12VertexHandleC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %20, i32 noundef -1)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %68
  %69 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  br i1 %69, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader, %148
  %70 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %.sroa.032.0.copyload = load i32, ptr %70, align 4
  %71 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.032.0.copyload, i32 noundef 0)
          to label %72 unwind label %97

72:                                               ; preds = %.lr.ph
  store i32 %71, ptr %13, align 4
  %73 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %71)
          to label %74 unwind label %99

74:                                               ; preds = %72
  store i32 %73, ptr %19, align 4
  %.sroa.028.0.copyload = load i32, ptr %13, align 4
  %75 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.028.0.copyload)
          to label %76 unwind label %101

76:                                               ; preds = %74
  store i32 %75, ptr %15, align 4
  %.sroa.026.0.copyload = load i32, ptr %13, align 4
  %77 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.026.0.copyload)
          to label %78 unwind label %103

78:                                               ; preds = %76
  store i32 %77, ptr %17, align 4
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %.sroa.024.0.copyload = load i32, ptr %79, align 4
  %80 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.024.0.copyload, i32 noundef 1)
          to label %81 unwind label %105

81:                                               ; preds = %78
  store i32 %80, ptr %14, align 4
  %82 = invoke i32 @_ZNK8OpenMesh11ArrayKernel16to_vertex_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %80)
          to label %83 unwind label %107

83:                                               ; preds = %81
  store i32 %82, ptr %20, align 4
  %.sroa.020.0.copyload = load i32, ptr %14, align 4
  %84 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20next_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.020.0.copyload)
          to label %85 unwind label %109

85:                                               ; preds = %83
  store i32 %84, ptr %16, align 4
  %.sroa.018.0.copyload = load i32, ptr %14, align 4
  %86 = invoke i32 @_ZNK8OpenMesh11ArrayKernel20prev_halfedge_handleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.018.0.copyload)
          to label %87 unwind label %111

87:                                               ; preds = %85
  store i32 %86, ptr %18, align 4
  %.sroa.017.0.copyload = load i32, ptr %17, align 4
  %.sroa.016.0.copyload = load i32, ptr %16, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel24set_next_halfedge_handleENS_14HalfedgeHandleES1_(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.017.0.copyload, i32 %.sroa.016.0.copyload)
          to label %88 unwind label %.loopexit

88:                                               ; preds = %87
  %.sroa.015.0.copyload = load i32, ptr %18, align 4
  %.sroa.014.0.copyload = load i32, ptr %15, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel24set_next_halfedge_handleENS_14HalfedgeHandleES1_(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.015.0.copyload, i32 %.sroa.014.0.copyload)
          to label %89 unwind label %.loopexit

89:                                               ; preds = %88
  %90 = call noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel15has_edge_statusEv(ptr noundef nonnull align 8 dereferenceable(368) %0)
  br i1 %90, label %91, label %113

91:                                               ; preds = %89
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %.sroa.013.0.copyload = load i32, ptr %92, align 4
  %93 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10EdgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.013.0.copyload)
          to label %94 unwind label %.loopexit

94:                                               ; preds = %91
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %93, i1 noundef zeroext true)
  br label %113

95:                                               ; preds = %65
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %152

.loopexit:                                        ; preds = %87, %88, %91, %115, %117, %127, %132, %133, %141, %146, %147
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %151

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

97:                                               ; preds = %.lr.ph
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %151

99:                                               ; preds = %72
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %151

101:                                              ; preds = %74
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %151

103:                                              ; preds = %76
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %151

105:                                              ; preds = %78
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %151

107:                                              ; preds = %81
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %151

109:                                              ; preds = %83
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %151

111:                                              ; preds = %85
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %151

113:                                              ; preds = %94, %89
  %114 = call noundef zeroext i1 @_ZNK8OpenMesh11ArrayKernel19has_halfedge_statusEv(ptr noundef nonnull align 8 dereferenceable(368) %0)
  br i1 %114, label %115, label %120

115:                                              ; preds = %113
  %.sroa.012.0.copyload = load i32, ptr %13, align 4
  %116 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.012.0.copyload)
          to label %117 unwind label %.loopexit

117:                                              ; preds = %115
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %116, i1 noundef zeroext true)
  %.sroa.011.0.copyload = load i32, ptr %14, align 4
  %118 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.011.0.copyload)
          to label %119 unwind label %.loopexit

119:                                              ; preds = %117
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %118, i1 noundef zeroext true)
  br label %120

120:                                              ; preds = %119, %113
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %.sroa.010.0.copyload = load i32, ptr %19, align 4
  %121 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.010.0.copyload)
          to label %122 unwind label %130

122:                                              ; preds = %120
  store i32 %121, ptr %21, align 4
  %123 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %14)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br i1 %123, label %124, label %134

124:                                              ; preds = %122
  %125 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %14)
  br i1 %125, label %126, label %133

126:                                              ; preds = %124
  br i1 %2, label %127, label %132

127:                                              ; preds = %126
  %.sroa.09.0.copyload = load i32, ptr %19, align 4
  %128 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.09.0.copyload)
          to label %129 unwind label %.loopexit

129:                                              ; preds = %127
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %128, i1 noundef zeroext true)
  br label %132

130:                                              ; preds = %120
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br label %151

132:                                              ; preds = %129, %126
  %.sroa.08.0.copyload = load i32, ptr %19, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_isolatedENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.08.0.copyload)
          to label %134 unwind label %.loopexit

133:                                              ; preds = %124
  %.sroa.07.0.copyload = load i32, ptr %19, align 4
  %.sroa.06.0.copyload = load i32, ptr %15, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel19set_halfedge_handleENS_12VertexHandleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.07.0.copyload, i32 %.sroa.06.0.copyload)
          to label %134 unwind label %.loopexit

134:                                              ; preds = %132, %133, %122
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  %.sroa.05.0.copyload = load i32, ptr %20, align 4
  %135 = invoke i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.05.0.copyload)
          to label %136 unwind label %144

136:                                              ; preds = %134
  store i32 %135, ptr %22, align 4
  %137 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br i1 %137, label %138, label %148

138:                                              ; preds = %136
  %139 = call noundef zeroext i1 @_ZNK8OpenMesh10BaseHandleeqERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %13)
  br i1 %139, label %140, label %147

140:                                              ; preds = %138
  br i1 %2, label %141, label %146

141:                                              ; preds = %140
  %.sroa.04.0.copyload = load i32, ptr %20, align 4
  %142 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.04.0.copyload)
          to label %143 unwind label %.loopexit

143:                                              ; preds = %141
  call void @_ZN8OpenMesh10Attributes10StatusInfo11set_deletedEb(ptr noundef nonnull align 4 dereferenceable(4) %142, i1 noundef zeroext true)
  br label %146

144:                                              ; preds = %134
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  br label %151

146:                                              ; preds = %143, %140
  %.sroa.03.0.copyload = load i32, ptr %20, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel12set_isolatedENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.03.0.copyload)
          to label %148 unwind label %.loopexit

147:                                              ; preds = %138
  %.sroa.02.0.copyload = load i32, ptr %20, align 4
  %.sroa.01.0.copyload = load i32, ptr %16, align 4
  invoke void @_ZN8OpenMesh11ArrayKernel19set_halfedge_handleENS_12VertexHandleENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368) %0, i32 %.sroa.02.0.copyload, i32 %.sroa.01.0.copyload)
          to label %148 unwind label %.loopexit

148:                                              ; preds = %136, %147, %146
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %150 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh10EdgeHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  br i1 %150, label %.lr.ph, label %._crit_edge, !llvm.loop !7

._crit_edge:                                      ; preds = %148, %.preheader
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #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
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %153

151:                                              ; preds = %.loopexit, %.loopexit.split-lp, %144, %130, %111, %109, %107, %105, %103, %101, %99, %97
  %.pn = phi { ptr, i32 } [ %145, %144 ], [ %131, %130 ], [ %112, %111 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %104, %103 ], [ %102, %101 ], [ %100, %99 ], [ %98, %97 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  br label %152

152:                                              ; preds = %151, %95
  %.pn.pn = phi { ptr, i32 } [ %.pn, %151 ], [ %96, %95 ]
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %163

153:                                              ; preds = %._crit_edge, %35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %154 = call ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  store ptr %154, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  %155 = call ptr @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  store ptr %155, ptr %24, align 8
  %156 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  br i1 %156, label %.lr.ph66, label %._crit_edge67

.lr.ph66:                                         ; preds = %153, %158
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  %.sroa.0.0.copyload = load i32, ptr %157, align 4
  invoke void @_ZN8OpenMesh16PolyConnectivity24adjust_outgoing_halfedgeENS_12VertexHandleE(ptr noundef nonnull align 8 dereferenceable(416) %0, i32 %.sroa.0.0.copyload)
          to label %158 unwind label %161

158:                                              ; preds = %.lr.ph66
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  %160 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN8OpenMesh12VertexHandleESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  br i1 %160, label %.lr.ph66, label %._crit_edge67, !llvm.loop !8

161:                                              ; preds = %.lr.ph66
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  br label %163

._crit_edge67:                                    ; preds = %158, %153
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  ret void

163:                                              ; preds = %161, %152, %64
  %.pn54.pn = phi { ptr, i32 } [ %.pn54, %64 ], [ %162, %161 ], [ %.pn.pn, %152 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  br label %164

164:                                              ; preds = %163, %39
  %.pn54.pn.pn = phi { ptr, i32 } [ %.pn54.pn, %163 ], [ %40, %39 ]
  call void @_ZNSt6vectorIN8OpenMesh12VertexHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  br label %165

165:                                              ; preds = %164, %37
  %.pn54.pn.pn.pn = phi { ptr, i32 } [ %.pn54.pn.pn, %164 ], [ %38, %37 ]
  call void @_ZNSt6vectorIN8OpenMesh10EdgeHandleESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn54.pn.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh11ArrayKernel15halfedge_handleENS_10EdgeHandleEj(ptr noundef nonnull align 8 dereferenceable(368), i32, i32 noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_14HalfedgeHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN8OpenMesh11ArrayKernel6statusENS_10FaceHandleE(ptr noundef nonnull align 8 dereferenceable(368), i32) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8OpenMesh16PolyConnectivity7fh_iterENS_10FaceHandleE(ptr dead_on_unwind noalias writable sret(%"class.OpenMesh::Iterators::GenericCirculatorT_DEPRECATED.60") align 8, ptr noundef nonnull align 8 dereferenceable(416), i32) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZNK8OpenMesh9Iterators29GenericCirculatorT_DEPRECATEDINS_16PolyConnectivityENS_10FaceHandleENS_14HalfedgeHandleEXadL_ZNKS0_22GenericCirculatorBaseTIS2_E16toHalfedgeHandleEvEEEdeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass