; LLVM IR from ASDAlexander77/TypeScriptCompiler :: tsc/tsc-new-parser (node_factory)

; 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.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.512" = type <{ %"struct.ts::data::ReadonlyArray.513", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.513" = type { %"class.std::vector.514" }
%"class.std::vector.514" = type { %"struct.std::_Vector_base.515" }
%"struct.std::_Vector_base.515" = type { %"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.520" = type <{ %"struct.ts::data::ReadonlyArray.521", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.521" = type { %"class.std::vector.522" }
%"class.std::vector.522" = type { %"struct.std::_Vector_base.523" }
%"struct.std::_Vector_base.523" = type { %"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.680 = type { %"class.std::shared_ptr.681" }
%"class.std::shared_ptr.681" = type { %"class.std::__shared_ptr.682" }
%"class.std::__shared_ptr.682" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.undefined_t = type { i8 }
%"struct.ts::data::Node" = type <{ ptr, %"struct.ts::data::TextRange", i32, i32, i32, i32, [4 x i8], %"struct.ts::data::NodeArray", i32, [4 x i8], %struct.ptr.17, %struct.ptr.17, i32, i8, [3 x i8] }>
%"struct.ts::data::NamedDeclaration" = type { %"struct.ts::data::Declaration", %struct.ptr.17 }
%"struct.ts::data::Declaration" = type { %"struct.ts::data::DeclarationStatement", %struct.ptr.58, %struct.ptr.58 }
%"struct.ts::data::DeclarationStatement" = type { %"struct.ts::data::Statement" }
%"struct.ts::data::Statement" = type { %"struct.ts::data::PrimaryExpression" }
%"struct.ts::data::PrimaryExpression" = type { %"struct.ts::data::MemberExpression" }
%"struct.ts::data::MemberExpression" = type { %"struct.ts::data::LeftHandSideExpression" }
%"struct.ts::data::LeftHandSideExpression" = type { %"struct.ts::data::UpdateExpression" }
%"struct.ts::data::UpdateExpression" = type { %"struct.ts::data::UnaryExpression" }
%"struct.ts::data::UnaryExpression" = type { %"struct.ts::data::ExpressionWithTypeArguments" }
%"struct.ts::data::ExpressionWithTypeArguments" = type { %"struct.ts::data::NodeWithTypeArguments", %struct.ptr.54 }
%"struct.ts::data::NodeWithTypeArguments" = type { %"struct.ts::data::Expression", %"struct.ts::data::NodeArray.46" }
%"struct.ts::data::Expression" = type { %"struct.ts::data::TypeNode" }
%"struct.ts::data::TypeNode" = type { %"struct.ts::data::JSDocContainer" }
%"struct.ts::data::JSDocContainer" = type { %"struct.ts::data::Node.base", [3 x i8], %"struct.ts::data::NodeArray.30", %"struct.ts::data::NodeArray.38" }
%"struct.ts::data::Node.base" = type <{ ptr, %"struct.ts::data::TextRange", i32, i32, i32, i32, [4 x i8], %"struct.ts::data::NodeArray", i32, [4 x i8], %struct.ptr.17, %struct.ptr.17, i32, i8 }>
%"struct.ts::data::NodeArray.38" = type <{ %"struct.ts::data::ReadonlyArray.39", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.39" = type { %"class.std::vector.40" }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.46" = type <{ %"struct.ts::data::ReadonlyArray.47", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.47" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.54 = type { %"class.std::shared_ptr.55" }
%"class.std::shared_ptr.55" = type { %"class.std::__shared_ptr.56" }
%"class.std::__shared_ptr.56" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.58 = type { %"class.std::shared_ptr.59" }
%"class.std::shared_ptr.59" = type { %"class.std::__shared_ptr.60" }
%"class.std::__shared_ptr.60" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::ClassLikeDeclaration" = type { %"struct.ts::data::NamedDeclaration", %"struct.ts::data::NodeArray.174", %"struct.ts::data::NodeArray.512", %"struct.ts::data::NodeArray.520" }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef, i32 noundef) #1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef, i32 noundef) #1

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind noalias writable sret(%struct.ptr) align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.174") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data14HeritageClauseEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.512") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data12ClassElementEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.520") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef, i1 noundef zeroext) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data14HeritageClauseEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data12ClassElementEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory22createClassDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES3_INS1_10IdentifierEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_14HeritageClauseEEEENS2_IS3_INS1_12ClassElementEEEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.680) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i1, align 1
  %16 = alloca %"struct.ts::data::NodeArray", align 8
  %17 = alloca %"struct.ts::data::NodeArray", align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %struct.ptr.17, align 8
  %21 = alloca %struct.ptr, align 8
  %22 = alloca %struct.ptr, align 8
  %23 = alloca %"struct.ts::data::NodeArray.174", align 8
  %24 = alloca %"struct.ts::data::NodeArray.174", align 8
  %25 = alloca %"struct.ts::data::NodeArray.512", align 8
  %26 = alloca %"struct.ts::data::NodeArray.512", align 8
  %27 = alloca %"struct.ts::data::NodeArray.520", align 8
  %28 = alloca %"struct.ts::data::NodeArray.520", align 8
  %29 = alloca %"struct.ts::data::NodeArray", align 8
  %30 = alloca %"struct.ts::data::NodeArray", align 8
  %31 = alloca %struct.ptr.17, align 8
  %32 = alloca %"struct.ts::data::NodeArray.174", align 8
  %33 = alloca %"struct.ts::data::NodeArray.512", align 8
  %34 = alloca %"struct.ts::data::NodeArray.520", align 8
  %35 = alloca %"struct.ts::data::NodeArray.30", align 8
  %36 = alloca %struct.undefined_t, align 1
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %37 = load ptr, ptr %9, align 8
  store i1 false, ptr %15, align 1
  call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data16ClassDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.680) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %37, i32 noundef 263)
  call void @llvm.lifetime.start.p0(i64 48, ptr %16) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %17, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %38 unwind label %81

38:                                               ; preds = %7
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray") align 8 %16, ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %17)
          to label %39 unwind label %85

39:                                               ; preds = %38
  %40 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %41 unwind label %89

41:                                               ; preds = %39
  %42 = getelementptr inbounds %"struct.ts::data::Node", ptr %40, i32 0, i32 7
  %43 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %42, ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  invoke void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind writable sret(%struct.ptr) align 8 %21, ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %22)
          to label %44 unwind label %95

44:                                               ; preds = %41
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef %21)
          to label %45 unwind label %99

45:                                               ; preds = %44
  %46 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %47 unwind label %103

47:                                               ; preds = %45
  %48 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %46, i32 0, i32 1
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %24, ptr noundef nonnull align 8 dereferenceable(44) %4)
          to label %50 unwind label %109

50:                                               ; preds = %47
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.174") align 8 %23, ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %24)
          to label %51 unwind label %113

51:                                               ; preds = %50
  %52 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %53 unwind label %117

53:                                               ; preds = %51
  %54 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %52, i32 0, i32 1
  %55 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %54, ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %25) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %26, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %56 unwind label %123

56:                                               ; preds = %53
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data14HeritageClauseEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.512") align 8 %25, ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %26)
          to label %57 unwind label %127

57:                                               ; preds = %56
  %58 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %59 unwind label %131

59:                                               ; preds = %57
  %60 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %58, i32 0, i32 2
  %61 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %60, ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %28, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %62 unwind label %137

62:                                               ; preds = %59
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data12ClassElementEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.520") align 8 %27, ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %28, i1 noundef zeroext false)
          to label %63 unwind label %141

63:                                               ; preds = %62
  %64 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %65 unwind label %145

65:                                               ; preds = %63
  %66 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %64, i32 0, i32 3
  %67 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %66, ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #5
  %68 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %69 unwind label %151

69:                                               ; preds = %65
  %70 = getelementptr inbounds %"struct.ts::data::Node", ptr %68, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %29, ptr noundef nonnull align 8 dereferenceable(44) %70)
          to label %71 unwind label %151

71:                                               ; preds = %69
  %72 = invoke noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef %29)
          to label %73 unwind label %155

73:                                               ; preds = %71
  %74 = invoke noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %72, i32 noundef 2)
          to label %75 unwind label %155

75:                                               ; preds = %73
  %76 = icmp sgt i32 %74, 0
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  br i1 %76, label %77, label %159

77:                                               ; preds = %75
  %78 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %79 unwind label %151

79:                                               ; preds = %77
  %80 = getelementptr inbounds %"struct.ts::data::Node", ptr %78, i32 0, i32 5
  store i32 1, ptr %80, align 8, !tbaa !9
  br label %251

81:                                               ; preds = %7
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %18, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %19, align 4
  br label %94

85:                                               ; preds = %38
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %18, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %19, align 4
  br label %93

89:                                               ; preds = %39
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %18, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  br label %93

93:                                               ; preds = %89, %85
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  br label %94

94:                                               ; preds = %93, %81
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #5
  br label %269

95:                                               ; preds = %41
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %18, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %19, align 4
  br label %108

99:                                               ; preds = %44
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %18, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %19, align 4
  br label %107

103:                                              ; preds = %45
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %18, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %19, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  br label %107

107:                                              ; preds = %103, %99
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %108

108:                                              ; preds = %107, %95
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %269

109:                                              ; preds = %47
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %18, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %19, align 4
  br label %122

113:                                              ; preds = %50
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %18, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %19, align 4
  br label %121

117:                                              ; preds = %51
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %18, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  br label %121

121:                                              ; preds = %117, %113
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  br label %122

122:                                              ; preds = %121, %109
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #5
  br label %269

123:                                              ; preds = %53
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %18, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %19, align 4
  br label %136

127:                                              ; preds = %56
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %18, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %19, align 4
  br label %135

131:                                              ; preds = %57
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %18, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  br label %135

135:                                              ; preds = %131, %127
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  br label %136

136:                                              ; preds = %135, %123
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #5
  br label %269

137:                                              ; preds = %59
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %18, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %19, align 4
  br label %150

141:                                              ; preds = %62
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %18, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %19, align 4
  br label %149

145:                                              ; preds = %63
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %18, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  br label %149

149:                                              ; preds = %145, %141
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  br label %150

150:                                              ; preds = %149, %137
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #5
  br label %269

151:                                              ; preds = %222, %220, %214, %212, %161, %159, %77, %69, %65
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %18, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %19, align 4
  br label %269

155:                                              ; preds = %73, %71
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %18, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  br label %269

159:                                              ; preds = %75
  %160 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %161 unwind label %151

161:                                              ; preds = %159
  %162 = getelementptr inbounds %"struct.ts::data::Node", ptr %160, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %30, ptr noundef nonnull align 8 dereferenceable(44) %162)
          to label %163 unwind label %151

163:                                              ; preds = %161
  %164 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %30)
          to label %165 unwind label %226

165:                                              ; preds = %163
  %166 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %167 unwind label %226

167:                                              ; preds = %165
  %168 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %166, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %168) #5
  %169 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %31)
          to label %170 unwind label %230

170:                                              ; preds = %167
  %171 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %164, i32 noundef %169)
          to label %172 unwind label %230

172:                                              ; preds = %170
  %173 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %174 unwind label %230

174:                                              ; preds = %172
  %175 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %173, i32 0, i32 1
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %32, ptr noundef nonnull align 8 dereferenceable(44) %175)
          to label %176 unwind label %230

176:                                              ; preds = %174
  %177 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %32)
          to label %178 unwind label %234

178:                                              ; preds = %176
  %179 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %171, i32 noundef %177)
          to label %180 unwind label %234

180:                                              ; preds = %178
  %181 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %182 unwind label %234

182:                                              ; preds = %180
  %183 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %181, i32 0, i32 2
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %33, ptr noundef nonnull align 8 dereferenceable(44) %183)
          to label %184 unwind label %234

184:                                              ; preds = %182
  %185 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data14HeritageClauseEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %33)
          to label %186 unwind label %238

186:                                              ; preds = %184
  %187 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %179, i32 noundef %185)
          to label %188 unwind label %238

188:                                              ; preds = %186
  %189 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %190 unwind label %238

190:                                              ; preds = %188
  %191 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %189, i32 0, i32 3
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %34, ptr noundef nonnull align 8 dereferenceable(44) %191)
          to label %192 unwind label %238

192:                                              ; preds = %190
  %193 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data12ClassElementEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %37, ptr noundef %34)
          to label %194 unwind label %242

194:                                              ; preds = %192
  %195 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %187, i32 noundef %193)
          to label %196 unwind label %242

196:                                              ; preds = %194
  %197 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %198 unwind label %242

198:                                              ; preds = %196
  %199 = getelementptr inbounds %"struct.ts::data::ClassLikeDeclaration", ptr %197, i32 0, i32 1
  %200 = invoke noundef zeroext i1 @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(44) %199)
          to label %201 unwind label %242

201:                                              ; preds = %198
  %202 = zext i1 %200 to i64
  %203 = select i1 %200, i32 1, i32 0
  %204 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %195, i32 noundef %203)
          to label %205 unwind label %242

205:                                              ; preds = %201
  %206 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %204, i32 noundef 1024)
          to label %207 unwind label %242

207:                                              ; preds = %205
  %208 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %209 unwind label %242

209:                                              ; preds = %207
  %210 = getelementptr inbounds %"struct.ts::data::Node", ptr %208, i32 0, i32 5
  %211 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN2tsoRERNS_14TransformFlagsES0_(ptr noundef nonnull align 4 dereferenceable(4) %210, i32 noundef %206)
          to label %212 unwind label %242

212:                                              ; preds = %209
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %33) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  %213 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %214 unwind label %151

214:                                              ; preds = %212
  %215 = getelementptr inbounds %"struct.ts::data::Node", ptr %213, i32 0, i32 5
  %216 = load i32, ptr %215, align 8, !tbaa !9
  %217 = invoke noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %216, i32 noundef 8192)
          to label %218 unwind label %151

218:                                              ; preds = %214
  %219 = icmp sgt i32 %217, 0
  br i1 %219, label %220, label %250

220:                                              ; preds = %218
  %221 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %222 unwind label %151

222:                                              ; preds = %220
  %223 = getelementptr inbounds %"struct.ts::data::Node", ptr %221, i32 0, i32 5
  %224 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN2tsoRERNS_14TransformFlagsES0_(ptr noundef nonnull align 4 dereferenceable(4) %223, i32 noundef 1)
          to label %225 unwind label %151

225:                                              ; preds = %222
  br label %250

226:                                              ; preds = %165, %163
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %18, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %19, align 4
  br label %249

230:                                              ; preds = %174, %172, %170, %167
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %18, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %19, align 4
  br label %248

234:                                              ; preds = %182, %180, %178, %176
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %18, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %19, align 4
  br label %247

238:                                              ; preds = %190, %188, %186, %184
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %18, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %19, align 4
  br label %246

242:                                              ; preds = %209, %207, %205, %201, %198, %196, %194, %192
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %18, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  br label %246

246:                                              ; preds = %242, %238
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %33) #5
  br label %247

247:                                              ; preds = %246, %234
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  br label %248

248:                                              ; preds = %247, %230
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  br label %249

249:                                              ; preds = %248, %226
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  br label %269

250:                                              ; preds = %225, %218
  br label %251

251:                                              ; preds = %250, %79
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %35)
          to label %252 unwind label %258

252:                                              ; preds = %251
  %253 = invoke noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %254 unwind label %262

254:                                              ; preds = %252
  %255 = getelementptr inbounds %"struct.ts::data::JSDocContainer", ptr %253, i32 0, i32 2
  %256 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %255, ptr noundef nonnull align 8 dereferenceable(44) %35) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %35) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #5
  store i1 true, ptr %15, align 1
  %257 = load i1, ptr %15, align 1
  br i1 %257, label %268, label %267

258:                                              ; preds = %251
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %18, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %19, align 4
  br label %266

262:                                              ; preds = %252
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %18, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %35) #5
  br label %266

266:                                              ; preds = %262, %258
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #5
  br label %269

267:                                              ; preds = %254
  call void @_ZN3ptrIN2ts4data16ClassDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %268

268:                                              ; preds = %267, %254
  ret void

269:                                              ; preds = %266, %249, %155, %151, %150, %136, %122, %108, %94
  call void @_ZN3ptrIN2ts4data16ClassDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %270

270:                                              ; preds = %269
  %271 = load ptr, ptr %18, align 8
  %272 = load i32, ptr %19, align 4
  %273 = insertvalue { ptr, i32 } poison, ptr %271, 0
  %274 = insertvalue { ptr, i32 } %273, i32 %272, 1
  resume { ptr, i32 } %274
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data16ClassDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind noalias writable sret(%struct.ptr.680) align 8, ptr noundef nonnull align 8 dereferenceable(232), i32 noundef) #3 align 2

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !17, i64 32}
!10 = !{!"_ZTSN2ts4data4NodeE", !11, i64 8, !14, i64 20, !15, i64 24, !16, i64 28, !17, i64 32, !18, i64 40, !13, i64 88, !25, i64 96, !25, i64 112, !29, i64 128, !24, i64 132}
!11 = !{!"_ZTSN2ts4data9TextRangeE", !12, i64 0, !13, i64 8}
!12 = !{!"_ZTSN2ts8pos_typeE", !13, i64 0, !13, i64 4}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS10SyntaxKind", !7, i64 0}
!15 = !{!"_ZTSN2ts9NodeFlagsE", !7, i64 0}
!16 = !{!"_ZTSN2ts13ModifierFlagsE", !7, i64 0}
!17 = !{!"_ZTSN2ts14TransformFlagsE", !7, i64 0}
!18 = !{!"_ZTSN2ts4data9NodeArrayI3ptrINS0_4NodeEEEE", !19, i64 0, !11, i64 24, !24, i64 36, !24, i64 37, !24, i64 38, !17, i64 40}
!19 = !{!"_ZTSN2ts4data13ReadonlyArrayI3ptrINS0_4NodeEEEE", !20, i64 0}
!20 = !{!"_ZTSSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTS3ptrIN2ts4data4NodeEE", !26, i64 0}
!26 = !{!"_ZTSSt10shared_ptrIN2ts4data4NodeEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN2ts4data4NodeELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !28, i64 8}
!28 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!29 = !{!"_ZTSN2ts13InternalFlagsE", !7, i64 0}


; 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.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.512" = type <{ %"struct.ts::data::ReadonlyArray.513", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.513" = type { %"class.std::vector.514" }
%"class.std::vector.514" = type { %"struct.std::_Vector_base.515" }
%"struct.std::_Vector_base.515" = type { %"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::HeritageClause>, std::allocator<ptr<ts::data::HeritageClause>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.520" = type <{ %"struct.ts::data::ReadonlyArray.521", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.521" = type { %"class.std::vector.522" }
%"class.std::vector.522" = type { %"struct.std::_Vector_base.523" }
%"struct.std::_Vector_base.523" = type { %"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::ClassElement>, std::allocator<ptr<ts::data::ClassElement>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.680 = type { %"class.std::shared_ptr.681" }
%"class.std::shared_ptr.681" = type { %"class.std::__shared_ptr.682" }
%"class.std::__shared_ptr.682" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind noalias writable sret(%struct.ptr) align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.174") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data14HeritageClauseEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.512") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data12ClassElementEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.520") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef, i1 noundef zeroext) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data14HeritageClauseEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data12ClassElementEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory22createClassDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES3_INS1_10IdentifierEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_14HeritageClauseEEEENS2_IS3_INS1_12ClassElementEEEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.680) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"struct.ts::data::NodeArray", align 8
  %9 = alloca %"struct.ts::data::NodeArray", align 8
  %10 = alloca %struct.ptr.17, align 8
  %11 = alloca %struct.ptr, align 8
  %12 = alloca %struct.ptr, align 8
  %13 = alloca %"struct.ts::data::NodeArray.174", align 8
  %14 = alloca %"struct.ts::data::NodeArray.174", align 8
  %15 = alloca %"struct.ts::data::NodeArray.512", align 8
  %16 = alloca %"struct.ts::data::NodeArray.512", align 8
  %17 = alloca %"struct.ts::data::NodeArray.520", align 8
  %18 = alloca %"struct.ts::data::NodeArray.520", align 8
  %19 = alloca %"struct.ts::data::NodeArray", align 8
  %20 = alloca %"struct.ts::data::NodeArray", align 8
  %21 = alloca %struct.ptr.17, align 8
  %22 = alloca %"struct.ts::data::NodeArray.174", align 8
  %23 = alloca %"struct.ts::data::NodeArray.512", align 8
  %24 = alloca %"struct.ts::data::NodeArray.520", align 8
  %25 = alloca %"struct.ts::data::NodeArray.30", align 8
  tail call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data16ClassDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.680) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, i32 noundef 263)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %26 unwind label %59

26:                                               ; preds = %7
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray") align 8 %8, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %9)
          to label %27 unwind label %61

27:                                               ; preds = %26
  %28 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %29 = getelementptr inbounds i8, ptr %28, i64 40
  %30 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %29, ptr noundef nonnull align 8 dereferenceable(44) %8) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %8) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind nonnull writable sret(%struct.ptr) align 8 %11, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %12)
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %11)
  %31 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %32 = getelementptr inbounds i8, ptr %31, i64 328
  %33 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %14, ptr noundef nonnull align 8 dereferenceable(44) %4)
          to label %34 unwind label %64

34:                                               ; preds = %27
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.174") align 8 %13, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %14)
          to label %35 unwind label %66

35:                                               ; preds = %34
  %36 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %37 = getelementptr inbounds i8, ptr %36, i64 344
  %38 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %37, ptr noundef nonnull align 8 dereferenceable(44) %13) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %13) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %14) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %16, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %39 unwind label %69

39:                                               ; preds = %35
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data14HeritageClauseEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.512") align 8 %15, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %16)
          to label %40 unwind label %71

40:                                               ; preds = %39
  %41 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %42 = getelementptr inbounds i8, ptr %41, i64 392
  %43 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %42, ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %18, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %44 unwind label %74

44:                                               ; preds = %40
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data12ClassElementEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.520") align 8 %17, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %18, i1 noundef zeroext false)
          to label %45 unwind label %76

45:                                               ; preds = %44
  %46 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %47 = getelementptr inbounds i8, ptr %46, i64 440
  %48 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %47, ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  %49 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %50 = getelementptr inbounds i8, ptr %49, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %19, ptr noundef nonnull align 8 dereferenceable(44) %50)
          to label %51 unwind label %79

51:                                               ; preds = %45
  %52 = invoke noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef nonnull %19)
          to label %53 unwind label %81

53:                                               ; preds = %51
  %54 = call noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %52, i32 noundef 2)
  %55 = icmp sgt i32 %54, 0
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  %56 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  br i1 %55, label %57, label %83

57:                                               ; preds = %53
  %58 = getelementptr inbounds i8, ptr %56, i64 32
  store i32 1, ptr %58, align 8, !tbaa !5
  br label %143

59:                                               ; preds = %7
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %63

61:                                               ; preds = %26
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #5
  br label %63

63:                                               ; preds = %61, %59
  %.pn = phi { ptr, i32 } [ %62, %61 ], [ %60, %59 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #5
  br label %147

64:                                               ; preds = %27
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %68

66:                                               ; preds = %34
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %14) #5
  br label %68

68:                                               ; preds = %66, %64
  %.pn13 = phi { ptr, i32 } [ %67, %66 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #5
  br label %147

69:                                               ; preds = %35
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %73

71:                                               ; preds = %39
  %72 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  br label %73

73:                                               ; preds = %71, %69
  %.pn15 = phi { ptr, i32 } [ %72, %71 ], [ %70, %69 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #5
  br label %147

74:                                               ; preds = %40
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %78

76:                                               ; preds = %44
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %78

78:                                               ; preds = %76, %74
  %.pn17 = phi { ptr, i32 } [ %77, %76 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  br label %147

79:                                               ; preds = %83, %45
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %147

81:                                               ; preds = %51
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  br label %147

83:                                               ; preds = %53
  %84 = getelementptr inbounds i8, ptr %56, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef nonnull align 8 dereferenceable(44) %84)
          to label %85 unwind label %79

85:                                               ; preds = %83
  %86 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %20)
          to label %87 unwind label %129

87:                                               ; preds = %85
  %88 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %89 = getelementptr inbounds i8, ptr %88, i64 328
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %89) #5
  %90 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %21)
          to label %91 unwind label %131

91:                                               ; preds = %87
  %92 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %86, i32 noundef %90)
  %93 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %94 = getelementptr inbounds i8, ptr %93, i64 344
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %22, ptr noundef nonnull align 8 dereferenceable(44) %94)
          to label %95 unwind label %131

95:                                               ; preds = %91
  %96 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %22)
          to label %97 unwind label %133

97:                                               ; preds = %95
  %98 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %92, i32 noundef %96)
  %99 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %100 = getelementptr inbounds i8, ptr %99, i64 392
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_14HeritageClauseEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %23, ptr noundef nonnull align 8 dereferenceable(44) %100)
          to label %101 unwind label %133

101:                                              ; preds = %97
  %102 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data14HeritageClauseEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %23)
          to label %103 unwind label %135

103:                                              ; preds = %101
  %104 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %98, i32 noundef %102)
  %105 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %106 = getelementptr inbounds i8, ptr %105, i64 440
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_12ClassElementEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %24, ptr noundef nonnull align 8 dereferenceable(44) %106)
          to label %107 unwind label %135

107:                                              ; preds = %103
  %108 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data12ClassElementEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %24)
          to label %109 unwind label %137

109:                                              ; preds = %107
  %110 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %104, i32 noundef %108)
  %111 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %112 = getelementptr inbounds i8, ptr %111, i64 344
  %113 = call noundef zeroext i1 @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(44) %112)
  %114 = zext i1 %113 to i32
  %115 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %110, i32 noundef %114)
  %116 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %115, i32 noundef 1024)
  %117 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %118 = getelementptr inbounds i8, ptr %117, i64 32
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN2tsoRERNS_14TransformFlagsES0_(ptr noundef nonnull align 4 dereferenceable(4) %118, i32 noundef %116)
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  %120 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %121 = getelementptr inbounds i8, ptr %120, i64 32
  %122 = load i32, ptr %121, align 8, !tbaa !5
  %123 = call noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %122, i32 noundef 8192)
  %124 = icmp sgt i32 %123, 0
  br i1 %124, label %125, label %143

125:                                              ; preds = %109
  %126 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %127 = getelementptr inbounds i8, ptr %126, i64 32
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN2tsoRERNS_14TransformFlagsES0_(ptr noundef nonnull align 4 dereferenceable(4) %127, i32 noundef 1)
  br label %143

129:                                              ; preds = %85
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %142

131:                                              ; preds = %91, %87
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %141

133:                                              ; preds = %97, %95
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %140

135:                                              ; preds = %103, %101
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %139

137:                                              ; preds = %107
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data12ClassElementEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  br label %139

139:                                              ; preds = %137, %135
  %.pn19 = phi { ptr, i32 } [ %138, %137 ], [ %136, %135 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data14HeritageClauseEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  br label %140

140:                                              ; preds = %139, %133
  %.pn19.pn = phi { ptr, i32 } [ %.pn19, %139 ], [ %134, %133 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  br label %141

141:                                              ; preds = %140, %131
  %.pn19.pn.pn = phi { ptr, i32 } [ %.pn19.pn, %140 ], [ %132, %131 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %142

142:                                              ; preds = %141, %129
  %.pn19.pn.pn.pn = phi { ptr, i32 } [ %.pn19.pn.pn, %141 ], [ %130, %129 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  br label %147

143:                                              ; preds = %109, %125, %57
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %25)
  %144 = call noundef ptr @_ZN3ptrIN2ts4data16ClassDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %145 = getelementptr inbounds i8, ptr %144, i64 136
  %146 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %145, ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #5
  ret void

147:                                              ; preds = %142, %81, %79, %78, %73, %68, %63
  %.pn19.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn19.pn.pn.pn, %142 ], [ %80, %79 ], [ %82, %81 ], [ %.pn17, %78 ], [ %.pn15, %73 ], [ %.pn13, %68 ], [ %.pn, %63 ]
  call void @_ZN3ptrIN2ts4data16ClassDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  resume { ptr, i32 } %.pn19.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data16ClassDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind noalias writable sret(%struct.ptr.680) align 8, ptr noundef nonnull align 8 dereferenceable(232), i32 noundef) local_unnamed_addr #3 align 2

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !15, i64 32}
!6 = !{!"_ZTSN2ts4data4NodeE", !7, i64 8, !12, i64 20, !13, i64 24, !14, i64 28, !15, i64 32, !16, i64 40, !9, i64 88, !24, i64 96, !24, i64 112, !28, i64 128, !23, i64 132}
!7 = !{!"_ZTSN2ts4data9TextRangeE", !8, i64 0, !9, i64 8}
!8 = !{!"_ZTSN2ts8pos_typeE", !9, i64 0, !9, i64 4}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTS10SyntaxKind", !10, i64 0}
!13 = !{!"_ZTSN2ts9NodeFlagsE", !10, i64 0}
!14 = !{!"_ZTSN2ts13ModifierFlagsE", !10, i64 0}
!15 = !{!"_ZTSN2ts14TransformFlagsE", !10, i64 0}
!16 = !{!"_ZTSN2ts4data9NodeArrayI3ptrINS0_4NodeEEEE", !17, i64 0, !7, i64 24, !23, i64 36, !23, i64 37, !23, i64 38, !15, i64 40}
!17 = !{!"_ZTSN2ts4data13ReadonlyArrayI3ptrINS0_4NodeEEEE", !18, i64 0}
!18 = !{!"_ZTSSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE17_Vector_impl_dataE", !22, i64 0, !22, i64 8, !22, i64 16}
!22 = !{!"any pointer", !10, i64 0}
!23 = !{!"bool", !10, i64 0}
!24 = !{!"_ZTS3ptrIN2ts4data4NodeEE", !25, i64 0}
!25 = !{!"_ZTSSt10shared_ptrIN2ts4data4NodeEE", !26, i64 0}
!26 = !{!"_ZTSSt12__shared_ptrIN2ts4data4NodeELN9__gnu_cxx12_Lock_policyE2EE", !22, i64 0, !27, i64 8}
!27 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !22, i64 0}
!28 = !{!"_ZTSN2ts13InternalFlagsE", !10, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass