; 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.182" = type <{ %"struct.ts::data::ReadonlyArray.183", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.183" = type { %"class.std::vector.184" }
%"class.std::vector.184" = type { %"struct.std::_Vector_base.185" }
%"struct.std::_Vector_base.185" = type { %"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.215 = type { %"class.std::shared_ptr.216" }
%"class.std::shared_ptr.216" = type { %"class.std::__shared_ptr.217" }
%"class.std::__shared_ptr.217" = 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.ptr.203 = type { %"class.std::shared_ptr.204" }
%"class.std::shared_ptr.204" = type { %"class.std::__shared_ptr.205" }
%"class.std::__shared_ptr.205" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.138 = type { %"class.std::shared_ptr.139" }
%"class.std::shared_ptr.139" = type { %"class.std::__shared_ptr.140" }
%"class.std::__shared_ptr.140" = type { ptr, %"class.std::__shared_count" }
%"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.undefined_t = type { i8 }
%"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.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.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.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::SignatureDeclarationBase" = type { %"struct.ts::data::TypeElement", %"struct.ts::data::NodeArray.174", %"struct.ts::data::NodeArray.182", %struct.ptr.138, %"struct.ts::data::NodeArray.46" }
%"struct.ts::data::TypeElement" = type { %"struct.ts::data::ClassElement", %struct.ptr.150 }
%"struct.ts::data::ClassElement" = type { %"struct.ts::data::NamedDeclaration" }
%struct.ptr.150 = type { %"class.std::shared_ptr.151" }
%"class.std::shared_ptr.151" = type { %"class.std::__shared_ptr.152" }
%"class.std::__shared_ptr.152" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::FunctionLikeDeclarationBase" = type { %"struct.ts::data::SignatureDeclarationBase", %struct.ptr.199, %struct.ptr.166, %struct.ptr.17 }
%struct.ptr.199 = type { %"class.std::shared_ptr.200" }
%"class.std::shared_ptr.200" = type { %"class.std::__shared_ptr.201" }
%"class.std::__shared_ptr.201" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.166 = type { %"class.std::shared_ptr.167" }
%"class.std::shared_ptr.167" = type { %"class.std::__shared_ptr.168" }
%"class.std::__shared_ptr.168" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::LocalsContainer" = type { %"class.std::map.190", %struct.ptr.17 }
%"class.std::map.190" = type { %"class.std::_Rb_tree.191" }
%"class.std::_Rb_tree.191" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<wchar_t>, std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>, std::_Select1st<std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>>, std::less<std::__cxx11::basic_string<wchar_t>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<wchar_t>, std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>, std::_Select1st<std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>>, std::less<std::__cxx11::basic_string<wchar_t>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

; 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: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #2 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 #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 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: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 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 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 #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(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_20ParameterDeclarationEEEaSEOS5_(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 @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(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 @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(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_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(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_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory28createGetAccessorDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES5_NS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEES3_INS1_5BlockEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.215) 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) #2 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.ptr.17, align 8
  %24 = alloca %"struct.ts::data::NodeArray.182", align 8
  %25 = alloca %"struct.ts::data::NodeArray.182", align 8
  %26 = alloca %struct.ptr.17, align 8
  %27 = alloca %struct.ptr.203, align 8
  %28 = alloca %"struct.ts::data::NodeArray", align 8
  %29 = alloca %struct.ptr.17, align 8
  %30 = alloca %"struct.ts::data::NodeArray.182", align 8
  %31 = alloca %struct.ptr.17, align 8
  %32 = alloca %struct.ptr.138, align 8
  %33 = alloca %struct.ptr.17, align 8
  %34 = alloca %"struct.ts::data::NodeArray.46", align 8
  %35 = alloca %struct.undefined_t, align 1
  %36 = alloca %"struct.ts::data::NodeArray.174", align 8
  %37 = alloca %struct.undefined_t, align 1
  %38 = alloca %"struct.ts::data::NodeArray.30", align 8
  %39 = alloca %struct.undefined_t, align 1
  %40 = 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
  %41 = load ptr, ptr %9, align 8
  store i1 false, ptr %15, align 1
  call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data22GetAccessorDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.215) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %41, i32 noundef 177)
  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 %42 unwind label %79

42:                                               ; 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) %41, ptr noundef %17)
          to label %43 unwind label %83

43:                                               ; preds = %42
  %44 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %45 unwind label %87

45:                                               ; preds = %43
  %46 = getelementptr inbounds %"struct.ts::data::Node", ptr %44, i32 0, i32 7
  %47 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %46, 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 @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  invoke void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef %23)
          to label %48 unwind label %93

48:                                               ; preds = %45
  invoke void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind writable sret(%struct.ptr) align 8 %21, ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %22)
          to label %49 unwind label %97

49:                                               ; preds = %48
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef %21)
          to label %50 unwind label %101

50:                                               ; preds = %49
  %51 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %52 unwind label %105

52:                                               ; preds = %50
  %53 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %51, i32 0, i32 1
  %54 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %53, 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 @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %24) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %25, ptr noundef nonnull align 8 dereferenceable(44) %4)
          to label %55 unwind label %112

55:                                               ; preds = %52
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.182") align 8 %24, ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %25, i1 noundef zeroext false)
          to label %56 unwind label %116

56:                                               ; preds = %55
  %57 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %58 unwind label %120

58:                                               ; preds = %56
  %59 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %57, i32 0, i32 2
  %60 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %59, ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #5
  %61 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %62 unwind label %126

62:                                               ; preds = %58
  %63 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %61, i32 0, i32 3
  %64 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef %27)
          to label %65 unwind label %130

65:                                               ; preds = %62
  %66 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %67 unwind label %134

67:                                               ; preds = %65
  %68 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %66, i32 0, i32 3
  %69 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  %70 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %71 unwind label %126

71:                                               ; preds = %67
  %72 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %70, i32 0, i32 3
  %73 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %74 unwind label %126

74:                                               ; preds = %71
  br i1 %73, label %75, label %139

75:                                               ; preds = %74
  %76 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %77 unwind label %126

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

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

83:                                               ; preds = %42
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %18, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %19, align 4
  br label %91

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

91:                                               ; preds = %87, %83
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  br label %92

92:                                               ; preds = %91, %79
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #5
  br label %277

93:                                               ; preds = %45
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %18, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %19, align 4
  br label %111

97:                                               ; preds = %48
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %18, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %19, align 4
  br label %110

101:                                              ; preds = %49
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %18, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %19, align 4
  br label %109

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

109:                                              ; preds = %105, %101
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %110

110:                                              ; preds = %109, %97
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %111

111:                                              ; preds = %110, %93
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %277

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

116:                                              ; preds = %55
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %18, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %19, align 4
  br label %124

120:                                              ; preds = %56
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %18, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  br label %124

124:                                              ; preds = %120, %116
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  br label %125

125:                                              ; preds = %124, %112
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #5
  br label %277

126:                                              ; preds = %242, %238, %234, %141, %139, %75, %71, %67, %58
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %18, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %19, align 4
  br label %277

130:                                              ; preds = %62
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %18, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %19, align 4
  br label %138

134:                                              ; preds = %65
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %18, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %19, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  br label %138

138:                                              ; preds = %134, %130
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  br label %277

139:                                              ; preds = %74
  %140 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %141 unwind label %126

141:                                              ; preds = %139
  %142 = getelementptr inbounds %"struct.ts::data::Node", ptr %140, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %28, ptr noundef nonnull align 8 dereferenceable(44) %142)
          to label %143 unwind label %126

143:                                              ; preds = %141
  %144 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %28)
          to label %145 unwind label %192

145:                                              ; preds = %143
  %146 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %147 unwind label %192

147:                                              ; preds = %145
  %148 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %146, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %148) #5
  %149 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %29)
          to label %150 unwind label %196

150:                                              ; preds = %147
  %151 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %144, i32 noundef %149)
          to label %152 unwind label %196

152:                                              ; preds = %150
  %153 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %154 unwind label %196

154:                                              ; preds = %152
  %155 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %153, i32 0, i32 2
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %30, ptr noundef nonnull align 8 dereferenceable(44) %155)
          to label %156 unwind label %196

156:                                              ; preds = %154
  %157 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %30)
          to label %158 unwind label %200

158:                                              ; preds = %156
  %159 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %151, i32 noundef %157)
          to label %160 unwind label %200

160:                                              ; preds = %158
  %161 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %162 unwind label %200

162:                                              ; preds = %160
  %163 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %161, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %163) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef %32)
          to label %164 unwind label %204

164:                                              ; preds = %162
  %165 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %31)
          to label %166 unwind label %208

166:                                              ; preds = %164
  %167 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %159, i32 noundef %165)
          to label %168 unwind label %208

168:                                              ; preds = %166
  %169 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %170 unwind label %208

170:                                              ; preds = %168
  %171 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %169, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %171) #5
  %172 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %41, ptr noundef %33)
          to label %173 unwind label %212

173:                                              ; preds = %170
  %174 = invoke noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
          to label %175 unwind label %212

175:                                              ; preds = %173
  %176 = invoke noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %172, i32 noundef %174)
          to label %177 unwind label %212

177:                                              ; preds = %175
  %178 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %167, i32 noundef %176)
          to label %179 unwind label %212

179:                                              ; preds = %177
  %180 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %181 unwind label %212

181:                                              ; preds = %179
  %182 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %180, i32 0, i32 3
  %183 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %182)
          to label %184 unwind label %212

184:                                              ; preds = %181
  %185 = zext i1 %183 to i64
  %186 = select i1 %183, i32 1, i32 0
  %187 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %178, i32 noundef %186)
          to label %188 unwind label %212

188:                                              ; preds = %184
  %189 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %190 unwind label %212

190:                                              ; preds = %188
  %191 = getelementptr inbounds %"struct.ts::data::Node", ptr %189, i32 0, i32 5
  store i32 %187, ptr %191, align 8, !tbaa !9
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  br label %221

192:                                              ; preds = %145, %143
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %18, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %19, align 4
  br label %220

196:                                              ; preds = %154, %152, %150, %147
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %18, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %19, align 4
  br label %219

200:                                              ; preds = %160, %158, %156
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %18, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %19, align 4
  br label %218

204:                                              ; preds = %162
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %18, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %19, align 4
  br label %217

208:                                              ; preds = %168, %166, %164
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %18, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %19, align 4
  br label %216

212:                                              ; preds = %188, %184, %181, %179, %177, %175, %173, %170
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %18, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %19, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  br label %216

216:                                              ; preds = %212, %208
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  br label %217

217:                                              ; preds = %216, %204
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  br label %218

218:                                              ; preds = %217, %200
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  br label %219

219:                                              ; preds = %218, %196
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  br label %220

220:                                              ; preds = %219, %192
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  br label %277

221:                                              ; preds = %190, %77
  call void @llvm.lifetime.start.p0(i64 48, ptr %34) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %34)
          to label %222 unwind label %248

222:                                              ; preds = %221
  %223 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %224 unwind label %252

224:                                              ; preds = %222
  %225 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %223, i32 0, i32 4
  %226 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %225, ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %36) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %36)
          to label %227 unwind label %257

227:                                              ; preds = %224
  %228 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %229 unwind label %261

229:                                              ; preds = %227
  %230 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %228, i32 0, i32 1
  %231 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %230, ptr noundef nonnull align 8 dereferenceable(44) %36) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %36) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %38) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %38)
          to label %232 unwind label %266

232:                                              ; preds = %229
  %233 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %234 unwind label %270

234:                                              ; preds = %232
  %235 = getelementptr inbounds %"struct.ts::data::JSDocContainer", ptr %233, i32 0, i32 2
  %236 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %235, ptr noundef nonnull align 8 dereferenceable(44) %38) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %38) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #5
  %237 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %238 unwind label %126

238:                                              ; preds = %234
  %239 = getelementptr inbounds i8, ptr %237, i64 568
  %240 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %239, i32 0, i32 0
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %240) #5
  %241 = invoke noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %242 unwind label %126

242:                                              ; preds = %238
  %243 = getelementptr inbounds i8, ptr %241, i64 568
  %244 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %243, i32 0, i32 1
  %245 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %244)
          to label %246 unwind label %126

246:                                              ; preds = %242
  store i1 true, ptr %15, align 1
  %247 = load i1, ptr %15, align 1
  br i1 %247, label %276, label %275

248:                                              ; preds = %221
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %18, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %19, align 4
  br label %256

252:                                              ; preds = %222
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %18, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  br label %256

256:                                              ; preds = %252, %248
  call void @llvm.lifetime.end.p0(i64 48, ptr %34) #5
  br label %277

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

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

265:                                              ; preds = %261, %257
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #5
  br label %277

266:                                              ; preds = %229
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %18, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %19, align 4
  br label %274

270:                                              ; preds = %232
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %18, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %19, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %38) #5
  br label %274

274:                                              ; preds = %270, %266
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #5
  br label %277

275:                                              ; preds = %246
  call void @_ZN3ptrIN2ts4data22GetAccessorDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %276

276:                                              ; preds = %275, %246
  ret void

277:                                              ; preds = %274, %265, %256, %220, %138, %126, %125, %111, %92
  call void @_ZN3ptrIN2ts4data22GetAccessorDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %278

278:                                              ; preds = %277
  %279 = load ptr, ptr %18, align 8
  %280 = load i32, ptr %19, align 4
  %281 = insertvalue { ptr, i32 } poison, ptr %279, 0
  %282 = insertvalue { ptr, i32 } %281, i32 %280, 1
  resume { ptr, i32 } %282
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data22GetAccessorDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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.182" = type <{ %"struct.ts::data::ReadonlyArray.183", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.183" = type { %"class.std::vector.184" }
%"class.std::vector.184" = type { %"struct.std::_Vector_base.185" }
%"struct.std::_Vector_base.185" = type { %"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::ParameterDeclaration>, std::allocator<ptr<ts::data::ParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.215 = type { %"class.std::shared_ptr.216" }
%"class.std::shared_ptr.216" = type { %"class.std::__shared_ptr.217" }
%"class.std::__shared_ptr.217" = 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.ptr.203 = type { %"class.std::shared_ptr.204" }
%"class.std::shared_ptr.204" = type { %"class.std::__shared_ptr.205" }
%"class.std::__shared_ptr.205" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.138 = type { %"class.std::shared_ptr.139" }
%"class.std::shared_ptr.139" = type { %"class.std::__shared_ptr.140" }
%"class.std::__shared_ptr.140" = type { ptr, %"class.std::__shared_count" }
%"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.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.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: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #2 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 #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 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: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 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 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 #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(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_20ParameterDeclarationEEEaSEOS5_(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 @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(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 @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(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_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(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_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory28createGetAccessorDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES5_NS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEES3_INS1_5BlockEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.215) 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 #2 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.ptr.17, align 8
  %14 = alloca %"struct.ts::data::NodeArray.182", align 8
  %15 = alloca %"struct.ts::data::NodeArray.182", align 8
  %16 = alloca %struct.ptr.17, align 8
  %17 = alloca %struct.ptr.203, align 8
  %18 = alloca %"struct.ts::data::NodeArray", align 8
  %19 = alloca %struct.ptr.17, align 8
  %20 = alloca %"struct.ts::data::NodeArray.182", align 8
  %21 = alloca %struct.ptr.17, align 8
  %22 = alloca %struct.ptr.138, align 8
  %23 = alloca %struct.ptr.17, align 8
  %24 = alloca %"struct.ts::data::NodeArray.46", align 8
  %25 = alloca %"struct.ts::data::NodeArray.174", align 8
  %26 = alloca %"struct.ts::data::NodeArray.30", align 8
  tail call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data22GetAccessorDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.215) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, i32 noundef 177)
  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 %27 unwind label %52

27:                                               ; 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 %28 unwind label %54

28:                                               ; preds = %27
  %29 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %30 = getelementptr inbounds i8, ptr %29, i64 40
  %31 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %30, 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 @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %13)
  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)
  %32 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %33 = getelementptr inbounds i8, ptr %32, i64 328
  %34 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, 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 @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %15, ptr noundef nonnull align 8 dereferenceable(44) %4)
          to label %35 unwind label %57

35:                                               ; preds = %28
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.182") align 8 %14, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %15, i1 noundef zeroext false)
          to label %36 unwind label %59

36:                                               ; preds = %35
  %37 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %38 = getelementptr inbounds i8, ptr %37, i64 408
  %39 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %38, ptr noundef nonnull align 8 dereferenceable(44) %14) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %14) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #5
  %40 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %41 = getelementptr inbounds i8, ptr %40, i64 456
  %42 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull %17)
  %43 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %44 = getelementptr inbounds i8, ptr %43, i64 552
  %45 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  %46 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %47 = getelementptr inbounds i8, ptr %46, i64 552
  %48 = call noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
  %49 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  br i1 %48, label %50, label %64

50:                                               ; preds = %36
  %51 = getelementptr inbounds i8, ptr %49, i64 32
  store i32 1, ptr %51, align 8, !tbaa !5
  br label %113

52:                                               ; preds = %7
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %56

54:                                               ; preds = %27
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #5
  br label %56

56:                                               ; preds = %54, %52
  %.pn = phi { ptr, i32 } [ %55, %54 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #5
  br label %128

57:                                               ; preds = %28
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %61

59:                                               ; preds = %35
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  br label %61

61:                                               ; preds = %59, %57
  %.pn11 = phi { ptr, i32 } [ %60, %59 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #5
  br label %128

62:                                               ; preds = %64
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %128

64:                                               ; preds = %36
  %65 = getelementptr inbounds i8, ptr %49, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %18, ptr noundef nonnull align 8 dereferenceable(44) %65)
          to label %66 unwind label %62

66:                                               ; preds = %64
  %67 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %18)
          to label %68 unwind label %99

68:                                               ; preds = %66
  %69 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %70 = getelementptr inbounds i8, ptr %69, i64 328
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %70) #5
  %71 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %19)
          to label %72 unwind label %101

72:                                               ; preds = %68
  %73 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %67, i32 noundef %71)
  %74 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %75 = getelementptr inbounds i8, ptr %74, i64 408
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef nonnull align 8 dereferenceable(44) %75)
          to label %76 unwind label %101

76:                                               ; preds = %72
  %77 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %20)
          to label %78 unwind label %103

78:                                               ; preds = %76
  %79 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %73, i32 noundef %77)
  %80 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %81 = getelementptr inbounds i8, ptr %80, i64 456
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %81) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull %22)
  %82 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %21)
          to label %83 unwind label %105

83:                                               ; preds = %78
  %84 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %79, i32 noundef %82)
  %85 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %86 = getelementptr inbounds i8, ptr %85, i64 552
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %86) #5
  %87 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %23)
          to label %88 unwind label %107

88:                                               ; preds = %83
  %89 = call noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
  %90 = call noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %87, i32 noundef %89)
  %91 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %84, i32 noundef %90)
  %92 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %93 = getelementptr inbounds i8, ptr %92, i64 456
  %94 = call noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %93)
  %95 = zext i1 %94 to i32
  %96 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %91, i32 noundef %95)
  %97 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %98 = getelementptr inbounds i8, ptr %97, i64 32
  store i32 %96, ptr %98, align 8, !tbaa !5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %113

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

101:                                              ; preds = %72, %68
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %111

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

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

107:                                              ; preds = %83
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  br label %109

109:                                              ; preds = %107, %105
  %.pn13 = phi { ptr, i32 } [ %108, %107 ], [ %106, %105 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %110

110:                                              ; preds = %109, %103
  %.pn13.pn = phi { ptr, i32 } [ %.pn13, %109 ], [ %104, %103 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  br label %111

111:                                              ; preds = %110, %101
  %.pn13.pn.pn = phi { ptr, i32 } [ %.pn13.pn, %110 ], [ %102, %101 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  br label %112

112:                                              ; preds = %111, %99
  %.pn13.pn.pn.pn = phi { ptr, i32 } [ %.pn13.pn.pn, %111 ], [ %100, %99 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %128

113:                                              ; preds = %88, %50
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %24)
  %114 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %115 = getelementptr inbounds i8, ptr %114, i64 472
  %116 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %115, ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %25)
  %117 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %118 = getelementptr inbounds i8, ptr %117, i64 360
  %119 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %118, ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %25) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %26)
  %120 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %121 = getelementptr inbounds i8, ptr %120, i64 136
  %122 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %121, ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #5
  %123 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %124 = getelementptr inbounds i8, ptr %123, i64 568
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %124) #5
  %125 = call noundef ptr @_ZN3ptrIN2ts4data22GetAccessorDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %126 = getelementptr inbounds i8, ptr %125, i64 616
  %127 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %126)
  ret void

128:                                              ; preds = %112, %62, %61, %56
  %.pn13.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn13.pn.pn.pn, %112 ], [ %63, %62 ], [ %.pn11, %61 ], [ %.pn, %56 ]
  call void @_ZN3ptrIN2ts4data22GetAccessorDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  resume { ptr, i32 } %.pn13.pn.pn.pn.pn
}

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

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

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

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