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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.195 = type { %"class.std::shared_ptr.196" }
%"class.std::shared_ptr.196" = type { %"class.std::__shared_ptr.197" }
%"class.std::__shared_ptr.197" = 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.undefined_t = type { i8 }
%"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.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.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.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.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::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::FunctionLikeDeclarationBase" = type { %"struct.ts::data::SignatureDeclarationBase", %struct.ptr.199, %struct.ptr.166, %struct.ptr.17 }
%"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.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.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::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.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::MethodDeclaration" = type { %"struct.ts::data::FunctionLikeDeclarationBase", %"struct.ts::data::LocalsContainer", %struct.ptr.166 }
%"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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1 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 void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEC2ERKS5_(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_16PunctuationTokenIL10SyntaxKind58EEEEES_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 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #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
define dso_local void @_ZN2ts11NodeFactory23createMethodDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES3_INS1_16PunctuationTokenIL10SyntaxKind42EEEES5_S3_INS7_ILS8_58EEEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEES3_INS1_5BlockEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.195) 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, ptr noundef %7, ptr noundef %8, ptr noundef %9) #2 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i1, align 1
  %22 = alloca %"struct.ts::data::NodeArray", align 8
  %23 = alloca %"struct.ts::data::NodeArray", align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca %struct.ptr.17, align 8
  %27 = alloca %struct.ptr, align 8
  %28 = alloca %struct.ptr, align 8
  %29 = alloca %struct.ptr.17, align 8
  %30 = alloca %struct.undefined_t, align 1
  %31 = alloca %"struct.ts::data::NodeArray.174", align 8
  %32 = alloca %"struct.ts::data::NodeArray.174", align 8
  %33 = alloca %"struct.ts::data::NodeArray.182", align 8
  %34 = alloca %"struct.ts::data::NodeArray.182", align 8
  %35 = alloca %struct.ptr.17, align 8
  %36 = alloca %struct.ptr.203, align 8
  %37 = alloca i8, align 1
  %38 = alloca %"struct.ts::data::NodeArray", align 8
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca %"struct.ts::data::NodeArray", align 8
  %42 = alloca %struct.ptr.17, align 8
  %43 = alloca %struct.ptr.199, align 8
  %44 = alloca %struct.ptr.17, align 8
  %45 = alloca %struct.ptr.17, align 8
  %46 = alloca %struct.ptr.150, align 8
  %47 = alloca %"struct.ts::data::NodeArray.174", align 8
  %48 = alloca %"struct.ts::data::NodeArray.182", align 8
  %49 = alloca %struct.ptr.17, align 8
  %50 = alloca %struct.ptr.138, align 8
  %51 = alloca %struct.ptr.17, align 8
  %52 = alloca %"struct.ts::data::NodeArray.46", align 8
  %53 = alloca %struct.undefined_t, align 1
  %54 = alloca %struct.undefined_t, align 1
  store ptr %0, ptr %11, align 8
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store ptr %9, ptr %20, align 8, !tbaa !5
  %55 = load ptr, ptr %12, align 8
  store i1 false, ptr %21, align 1
  call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data17MethodDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.195) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %55, i32 noundef 174)
  call void @llvm.lifetime.start.p0(i64 48, ptr %22) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %23, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %56 unwind label %112

56:                                               ; preds = %10
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray") align 8 %22, ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %23)
          to label %57 unwind label %116

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

59:                                               ; preds = %57
  %60 = getelementptr inbounds %"struct.ts::data::Node", ptr %58, i32 0, i32 7
  %61 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %60, ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #5
  %62 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %63 unwind label %126

63:                                               ; preds = %59
  %64 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %62, i32 0, i32 1
  %65 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  invoke void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %29)
          to label %66 unwind label %130

66:                                               ; preds = %63
  invoke void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind writable sret(%struct.ptr) align 8 %27, ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %28)
          to label %67 unwind label %134

67:                                               ; preds = %66
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef %27)
          to label %68 unwind label %138

68:                                               ; preds = %67
  %69 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %70 unwind label %142

70:                                               ; preds = %68
  %71 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %69, i32 0, i32 1
  %72 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  %73 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %74 unwind label %126

74:                                               ; preds = %70
  %75 = getelementptr inbounds %"struct.ts::data::TypeElement", ptr %73, i32 0, i32 1
  %76 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  %77 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %78 unwind label %126

78:                                               ; preds = %74
  %79 = getelementptr inbounds %"struct.ts::data::MethodDeclaration", ptr %77, i32 0, i32 2
  %80 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind54EEEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %79)
          to label %81 unwind label %126

81:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 48, ptr %31) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %32, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %82 unwind label %149

82:                                               ; preds = %81
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.174") align 8 %31, ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %32)
          to label %83 unwind label %153

83:                                               ; preds = %82
  %84 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %85 unwind label %157

85:                                               ; preds = %83
  %86 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %84, i32 0, i32 1
  %87 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %86, ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %33) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %34, ptr noundef nonnull align 8 dereferenceable(44) %7)
          to label %88 unwind label %163

88:                                               ; preds = %85
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.182") align 8 %33, ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %34, i1 noundef zeroext false)
          to label %89 unwind label %167

89:                                               ; preds = %88
  %90 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %91 unwind label %171

91:                                               ; preds = %89
  %92 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %90, i32 0, i32 2
  %93 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %92, ptr noundef nonnull align 8 dereferenceable(44) %33) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %33) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #5
  %94 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %95 unwind label %126

95:                                               ; preds = %91
  %96 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %94, i32 0, i32 3
  %97 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef %36)
          to label %98 unwind label %177

98:                                               ; preds = %95
  %99 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %100 unwind label %181

100:                                              ; preds = %98
  %101 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %99, i32 0, i32 3
  %102 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  %103 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %104 unwind label %126

104:                                              ; preds = %100
  %105 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %103, i32 0, i32 3
  %106 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %105)
          to label %107 unwind label %126

107:                                              ; preds = %104
  br i1 %106, label %108, label %186

108:                                              ; preds = %107
  %109 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %110 unwind label %126

110:                                              ; preds = %108
  %111 = getelementptr inbounds %"struct.ts::data::Node", ptr %109, i32 0, i32 5
  store i32 1, ptr %111, align 8, !tbaa !9
  br label %398

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

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

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

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

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

126:                                              ; preds = %409, %405, %401, %108, %104, %100, %91, %78, %74, %70, %59
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %24, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %25, align 4
  br label %426

130:                                              ; preds = %63
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %24, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %25, align 4
  br label %148

134:                                              ; preds = %66
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %24, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %25, align 4
  br label %147

138:                                              ; preds = %67
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %24, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %25, align 4
  br label %146

142:                                              ; preds = %68
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %24, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %25, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  br label %146

146:                                              ; preds = %142, %138
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  br label %147

147:                                              ; preds = %146, %134
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  br label %148

148:                                              ; preds = %147, %130
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  br label %426

149:                                              ; preds = %81
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %24, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %25, align 4
  br label %162

153:                                              ; preds = %82
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %24, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %25, align 4
  br label %161

157:                                              ; preds = %83
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %24, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %25, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  br label %161

161:                                              ; preds = %157, %153
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  br label %162

162:                                              ; preds = %161, %149
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #5
  br label %426

163:                                              ; preds = %85
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %24, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %25, align 4
  br label %176

167:                                              ; preds = %88
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %24, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %25, align 4
  br label %175

171:                                              ; preds = %89
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %24, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %25, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %33) #5
  br label %175

175:                                              ; preds = %171, %167
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  br label %176

176:                                              ; preds = %175, %163
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #5
  br label %426

177:                                              ; preds = %95
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %24, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %25, align 4
  br label %185

181:                                              ; preds = %98
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %24, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %25, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %185

185:                                              ; preds = %181, %177
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  br label %426

186:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #5
  %187 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %188 unwind label %325

188:                                              ; preds = %186
  %189 = getelementptr inbounds %"struct.ts::data::Node", ptr %187, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %38, ptr noundef nonnull align 8 dereferenceable(44) %189)
          to label %190 unwind label %325

190:                                              ; preds = %188
  %191 = invoke noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef %38)
          to label %192 unwind label %329

192:                                              ; preds = %190
  %193 = invoke noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %191, i32 noundef 256)
          to label %194 unwind label %329

194:                                              ; preds = %192
  %195 = invoke noundef zeroext i1 @_ZN2tsntENS_13ModifierFlagsE(i32 noundef %193)
          to label %196 unwind label %329

196:                                              ; preds = %194
  %197 = xor i1 %195, true
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %38) #5
  %198 = zext i1 %197 to i8
  store i8 %198, ptr %37, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #5
  %199 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %200 unwind label %333

200:                                              ; preds = %196
  %201 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %199, i32 0, i32 1
  %202 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %201)
          to label %203 unwind label %333

203:                                              ; preds = %200
  %204 = xor i1 %202, true
  %205 = zext i1 %204 to i8
  store i8 %205, ptr %39, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #5
  %206 = load i8, ptr %37, align 1, !tbaa !30, !range !31, !noundef !32
  %207 = trunc i8 %206 to i1
  br i1 %207, label %208, label %211

208:                                              ; preds = %203
  %209 = load i8, ptr %39, align 1, !tbaa !30, !range !31, !noundef !32
  %210 = trunc i8 %209 to i1
  br label %211

211:                                              ; preds = %208, %203
  %212 = phi i1 [ false, %203 ], [ %210, %208 ]
  %213 = zext i1 %212 to i8
  store i8 %213, ptr %40, align 1, !tbaa !30
  %214 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %215 unwind label %337

215:                                              ; preds = %211
  %216 = getelementptr inbounds %"struct.ts::data::Node", ptr %214, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %41, ptr noundef nonnull align 8 dereferenceable(44) %216)
          to label %217 unwind label %337

217:                                              ; preds = %215
  %218 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %41)
          to label %219 unwind label %341

219:                                              ; preds = %217
  %220 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %221 unwind label %341

221:                                              ; preds = %219
  %222 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %220, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %222) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind42EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef %43)
          to label %223 unwind label %345

223:                                              ; preds = %221
  %224 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %42)
          to label %225 unwind label %349

225:                                              ; preds = %223
  %226 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %218, i32 noundef %224)
          to label %227 unwind label %349

227:                                              ; preds = %225
  %228 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %229 unwind label %349

229:                                              ; preds = %227
  %230 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %228, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %230) #5
  %231 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %44)
          to label %232 unwind label %353

232:                                              ; preds = %229
  %233 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %226, i32 noundef %231)
          to label %234 unwind label %353

234:                                              ; preds = %232
  %235 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %236 unwind label %353

236:                                              ; preds = %234
  %237 = getelementptr inbounds %"struct.ts::data::TypeElement", ptr %235, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %237) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind58EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef %46)
          to label %238 unwind label %357

238:                                              ; preds = %236
  %239 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %45)
          to label %240 unwind label %361

240:                                              ; preds = %238
  %241 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %233, i32 noundef %239)
          to label %242 unwind label %361

242:                                              ; preds = %240
  %243 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %244 unwind label %361

244:                                              ; preds = %242
  %245 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %243, i32 0, i32 1
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %47, ptr noundef nonnull align 8 dereferenceable(44) %245)
          to label %246 unwind label %361

246:                                              ; preds = %244
  %247 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %47)
          to label %248 unwind label %365

248:                                              ; preds = %246
  %249 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %241, i32 noundef %247)
          to label %250 unwind label %365

250:                                              ; preds = %248
  %251 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %252 unwind label %365

252:                                              ; preds = %250
  %253 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %251, i32 0, i32 2
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %48, ptr noundef nonnull align 8 dereferenceable(44) %253)
          to label %254 unwind label %365

254:                                              ; preds = %252
  %255 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %48)
          to label %256 unwind label %369

256:                                              ; preds = %254
  %257 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %249, i32 noundef %255)
          to label %258 unwind label %369

258:                                              ; preds = %256
  %259 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %260 unwind label %369

260:                                              ; preds = %258
  %261 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %259, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %261) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef %50)
          to label %262 unwind label %373

262:                                              ; preds = %260
  %263 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %49)
          to label %264 unwind label %377

264:                                              ; preds = %262
  %265 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %257, i32 noundef %263)
          to label %266 unwind label %377

266:                                              ; preds = %264
  %267 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %268 unwind label %377

268:                                              ; preds = %266
  %269 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %267, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %269) #5
  %270 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %55, ptr noundef %51)
          to label %271 unwind label %381

271:                                              ; preds = %268
  %272 = invoke noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
          to label %273 unwind label %381

273:                                              ; preds = %271
  %274 = invoke noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %270, i32 noundef %272)
          to label %275 unwind label %381

275:                                              ; preds = %273
  %276 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %265, i32 noundef %274)
          to label %277 unwind label %381

277:                                              ; preds = %275
  %278 = load i8, ptr %40, align 1, !tbaa !30, !range !31, !noundef !32
  %279 = trunc i8 %278 to i1
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  br label %292

281:                                              ; preds = %277
  %282 = load i8, ptr %37, align 1, !tbaa !30, !range !31, !noundef !32
  %283 = trunc i8 %282 to i1
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  br label %290

285:                                              ; preds = %281
  %286 = load i8, ptr %39, align 1, !tbaa !30, !range !31, !noundef !32
  %287 = trunc i8 %286 to i1
  %288 = zext i1 %287 to i64
  %289 = select i1 %287, i32 2048, i32 0
  br label %290

290:                                              ; preds = %285, %284
  %291 = phi i32 [ 256, %284 ], [ %289, %285 ]
  br label %292

292:                                              ; preds = %290, %280
  %293 = phi i32 [ 128, %280 ], [ %291, %290 ]
  %294 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %276, i32 noundef %293)
          to label %295 unwind label %381

295:                                              ; preds = %292
  %296 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %297 unwind label %381

297:                                              ; preds = %295
  %298 = getelementptr inbounds %"struct.ts::data::TypeElement", ptr %296, i32 0, i32 1
  %299 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %298)
          to label %300 unwind label %381

300:                                              ; preds = %297
  br i1 %299, label %301, label %314

301:                                              ; preds = %300
  %302 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %303 unwind label %381

303:                                              ; preds = %301
  %304 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %302, i32 0, i32 1
  %305 = invoke noundef zeroext i1 @_ZN2tsntI3ptrINS_4data24TypeParameterDeclarationEEEEbRNS2_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(44) %304)
          to label %306 unwind label %381

306:                                              ; preds = %303
  br i1 %305, label %307, label %314

307:                                              ; preds = %306
  %308 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %309 unwind label %381

309:                                              ; preds = %307
  %310 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %308, i32 0, i32 3
  %311 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
          to label %312 unwind label %381

312:                                              ; preds = %309
  %313 = xor i1 %311, true
  br label %314

314:                                              ; preds = %312, %306, %300
  %315 = phi i1 [ true, %306 ], [ true, %300 ], [ %313, %312 ]
  %316 = zext i1 %315 to i64
  %317 = select i1 %315, i32 1, i32 0
  %318 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %294, i32 noundef %317)
          to label %319 unwind label %381

319:                                              ; preds = %314
  %320 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %318, i32 noundef 1024)
          to label %321 unwind label %381

321:                                              ; preds = %319
  %322 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %323 unwind label %381

323:                                              ; preds = %321
  %324 = getelementptr inbounds %"struct.ts::data::Node", ptr %322, i32 0, i32 5
  store i32 %320, ptr %324, align 8, !tbaa !9
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %48) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %47) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %41) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #5
  br label %398

325:                                              ; preds = %188, %186
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %24, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %25, align 4
  br label %397

329:                                              ; preds = %194, %192, %190
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %24, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %25, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %38) #5
  br label %397

333:                                              ; preds = %200, %196
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %24, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %25, align 4
  br label %396

337:                                              ; preds = %215, %211
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %24, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %25, align 4
  br label %395

341:                                              ; preds = %219, %217
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %24, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %25, align 4
  br label %394

345:                                              ; preds = %221
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %24, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %25, align 4
  br label %393

349:                                              ; preds = %227, %225, %223
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %24, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %25, align 4
  br label %392

353:                                              ; preds = %234, %232, %229
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %24, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %25, align 4
  br label %391

357:                                              ; preds = %236
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %24, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %25, align 4
  br label %390

361:                                              ; preds = %244, %242, %240, %238
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %24, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %25, align 4
  br label %389

365:                                              ; preds = %252, %250, %248, %246
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %24, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %25, align 4
  br label %388

369:                                              ; preds = %258, %256, %254
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %24, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %25, align 4
  br label %387

373:                                              ; preds = %260
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %24, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %25, align 4
  br label %386

377:                                              ; preds = %266, %264, %262
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %24, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %25, align 4
  br label %385

381:                                              ; preds = %321, %319, %314, %309, %307, %303, %301, %297, %295, %292, %275, %273, %271, %268
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %24, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %25, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #5
  br label %385

385:                                              ; preds = %381, %377
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  br label %386

386:                                              ; preds = %385, %373
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #5
  br label %387

387:                                              ; preds = %386, %369
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %48) #5
  br label %388

388:                                              ; preds = %387, %365
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %47) #5
  br label %389

389:                                              ; preds = %388, %361
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  br label %390

390:                                              ; preds = %389, %357
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #5
  br label %391

391:                                              ; preds = %390, %353
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  br label %392

392:                                              ; preds = %391, %349
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #5
  br label %393

393:                                              ; preds = %392, %345
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  br label %394

394:                                              ; preds = %393, %341
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %41) #5
  br label %395

395:                                              ; preds = %394, %337
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #5
  br label %396

396:                                              ; preds = %395, %333
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  br label %397

397:                                              ; preds = %396, %329, %325
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #5
  br label %426

398:                                              ; preds = %323, %110
  call void @llvm.lifetime.start.p0(i64 48, ptr %52) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %52)
          to label %399 unwind label %415

399:                                              ; preds = %398
  %400 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %401 unwind label %419

401:                                              ; preds = %399
  %402 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %400, i32 0, i32 4
  %403 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %402, ptr noundef nonnull align 8 dereferenceable(44) %52) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %52) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #5
  %404 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %405 unwind label %126

405:                                              ; preds = %401
  %406 = getelementptr inbounds i8, ptr %404, i64 568
  %407 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %406, i32 0, i32 0
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %407) #5
  %408 = invoke noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %409 unwind label %126

409:                                              ; preds = %405
  %410 = getelementptr inbounds i8, ptr %408, i64 568
  %411 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %410, i32 0, i32 1
  %412 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %411)
          to label %413 unwind label %126

413:                                              ; preds = %409
  store i1 true, ptr %21, align 1
  %414 = load i1, ptr %21, align 1
  br i1 %414, label %425, label %424

415:                                              ; preds = %398
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %24, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %25, align 4
  br label %423

419:                                              ; preds = %399
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %24, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %25, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %52) #5
  br label %423

423:                                              ; preds = %419, %415
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #5
  br label %426

424:                                              ; preds = %413
  call void @_ZN3ptrIN2ts4data17MethodDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %425

425:                                              ; preds = %424, %413
  ret void

426:                                              ; preds = %423, %397, %185, %176, %162, %148, %126, %125
  call void @_ZN3ptrIN2ts4data17MethodDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %427

427:                                              ; preds = %426
  %428 = load ptr, ptr %24, align 8
  %429 = load i32, ptr %25, align 4
  %430 = insertvalue { ptr, i32 } poison, ptr %428, 0
  %431 = insertvalue { ptr, i32 } %430, i32 %429, 1
  resume { ptr, i32 } %431
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data17MethodDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind noalias writable sret(%struct.ptr.195) 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 @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(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 noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind54EEEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16)) #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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #2 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 uwtable
declare dso_local noundef zeroext i1 @_ZN2tsntI3ptrINS_4data24TypeParameterDeclarationEEEEbRNS2_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(44)) #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 void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(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 @_ZN3ptrIN2ts4data17MethodDeclarationEED2Ev(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}
!30 = !{!24, !24, i64 0}
!31 = !{i8 0, i8 2}
!32 = !{}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.195 = type { %"class.std::shared_ptr.196" }
%"class.std::shared_ptr.196" = type { %"class.std::__shared_ptr.197" }
%"class.std::__shared_ptr.197" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.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.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.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.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.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 }

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 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 void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEC2ERKS5_(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_16PunctuationTokenIL10SyntaxKind58EEEEES_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 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEntEv(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 @_ZN3ptrIN2ts4data8TypeNodeEEntEv(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 @_ZN2tsntENS_13ModifierFlagsE(i32 noundef) local_unnamed_addr #1

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #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
define dso_local void @_ZN2ts11NodeFactory23createMethodDeclarationENS_4data9NodeArrayI3ptrINS1_4NodeEEEES3_INS1_16PunctuationTokenIL10SyntaxKind42EEEES5_S3_INS7_ILS8_58EEEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEES3_INS1_5BlockEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.195) 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, ptr noundef %7, ptr noundef %8, ptr noundef %9) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca %"struct.ts::data::NodeArray", align 8
  %12 = alloca %"struct.ts::data::NodeArray", align 8
  %13 = alloca %struct.ptr.17, align 8
  %14 = alloca %struct.ptr, align 8
  %15 = alloca %struct.ptr, align 8
  %16 = alloca %struct.ptr.17, align 8
  %17 = alloca %"struct.ts::data::NodeArray.174", align 8
  %18 = alloca %"struct.ts::data::NodeArray.174", align 8
  %19 = alloca %"struct.ts::data::NodeArray.182", align 8
  %20 = alloca %"struct.ts::data::NodeArray.182", align 8
  %21 = alloca %struct.ptr.17, align 8
  %22 = alloca %struct.ptr.203, align 8
  %23 = alloca %"struct.ts::data::NodeArray", align 8
  %24 = alloca %"struct.ts::data::NodeArray", align 8
  %25 = alloca %struct.ptr.17, align 8
  %26 = alloca %struct.ptr.199, align 8
  %27 = alloca %struct.ptr.17, align 8
  %28 = alloca %struct.ptr.17, align 8
  %29 = alloca %struct.ptr.150, align 8
  %30 = alloca %"struct.ts::data::NodeArray.174", align 8
  %31 = alloca %"struct.ts::data::NodeArray.182", align 8
  %32 = alloca %struct.ptr.17, align 8
  %33 = alloca %struct.ptr.138, align 8
  %34 = alloca %struct.ptr.17, align 8
  %35 = alloca %"struct.ts::data::NodeArray.46", align 8
  tail call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data17MethodDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.195) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, i32 noundef 174)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %12, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %36 unwind label %75

36:                                               ; preds = %10
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray") align 8 %11, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %12)
          to label %37 unwind label %77

37:                                               ; preds = %36
  %38 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %39 = getelementptr inbounds i8, ptr %38, i64 40
  %40 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %39, ptr noundef nonnull align 8 dereferenceable(44) %11) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %11) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %12) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #5
  %41 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %42 = getelementptr inbounds i8, ptr %41, i64 520
  %43 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull %16)
  call void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind nonnull writable sret(%struct.ptr) align 8 %14, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %15)
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %14)
  %44 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %45 = getelementptr inbounds i8, ptr %44, i64 328
  %46 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  %47 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %48 = getelementptr inbounds i8, ptr %47, i64 344
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  %50 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %51 = getelementptr inbounds i8, ptr %50, i64 632
  %52 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind54EEEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %51)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %18, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %53 unwind label %80

53:                                               ; preds = %37
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.174") align 8 %17, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %18)
          to label %54 unwind label %82

54:                                               ; preds = %53
  %55 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %56 = getelementptr inbounds i8, ptr %55, i64 360
  %57 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %56, ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef nonnull align 8 dereferenceable(44) %7)
          to label %58 unwind label %85

58:                                               ; preds = %54
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.182") align 8 %19, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %20, i1 noundef zeroext false)
          to label %59 unwind label %87

59:                                               ; preds = %58
  %60 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %61 = getelementptr inbounds i8, ptr %60, i64 408
  %62 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %61, ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #5
  %63 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %64 = getelementptr inbounds i8, ptr %63, i64 456
  %65 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull %22)
  %66 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %67 = getelementptr inbounds i8, ptr %66, i64 552
  %68 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  %69 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %70 = getelementptr inbounds i8, ptr %69, i64 552
  %71 = call noundef zeroext i1 @_ZN3ptrIN2ts4data4NodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %70)
  %72 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  br i1 %71, label %73, label %90

73:                                               ; preds = %59
  %74 = getelementptr inbounds i8, ptr %72, i64 32
  store i32 1, ptr %74, align 8, !tbaa !5
  br label %196

75:                                               ; preds = %10
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %79

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

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

80:                                               ; preds = %37
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %84

82:                                               ; preds = %53
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %84

84:                                               ; preds = %82, %80
  %.pn22 = phi { ptr, i32 } [ %83, %82 ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  br label %205

85:                                               ; preds = %54
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

87:                                               ; preds = %58
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  br label %89

89:                                               ; preds = %87, %85
  %.pn24 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #5
  br label %205

90:                                               ; preds = %59
  %91 = getelementptr inbounds i8, ptr %72, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %23, ptr noundef nonnull align 8 dereferenceable(44) %91)
          to label %92 unwind label %167

92:                                               ; preds = %90
  %93 = invoke noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef nonnull %23)
          to label %94 unwind label %169

94:                                               ; preds = %92
  %95 = call noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %93, i32 noundef 256)
  %96 = call noundef zeroext i1 @_ZN2tsntENS_13ModifierFlagsE(i32 noundef %95)
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  %97 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %98 = getelementptr inbounds i8, ptr %97, i64 520
  %99 = call noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
  %100 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %101 = getelementptr inbounds i8, ptr %100, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %24, ptr noundef nonnull align 8 dereferenceable(44) %101)
          to label %102 unwind label %171

102:                                              ; preds = %94
  %103 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %24)
          to label %104 unwind label %173

104:                                              ; preds = %102
  %105 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %106 = getelementptr inbounds i8, ptr %105, i64 520
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %106) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind42EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull %26)
  %107 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %25)
          to label %108 unwind label %175

108:                                              ; preds = %104
  %109 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %103, i32 noundef %107)
  %110 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %111 = getelementptr inbounds i8, ptr %110, i64 328
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %111) #5
  %112 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %27)
          to label %113 unwind label %177

113:                                              ; preds = %108
  %114 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %109, i32 noundef %112)
  %115 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %116 = getelementptr inbounds i8, ptr %115, i64 344
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %116) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind58EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull %29)
  %117 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %28)
          to label %118 unwind label %179

118:                                              ; preds = %113
  %119 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %114, i32 noundef %117)
  %120 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %121 = getelementptr inbounds i8, ptr %120, i64 360
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %30, ptr noundef nonnull align 8 dereferenceable(44) %121)
          to label %122 unwind label %179

122:                                              ; preds = %118
  %123 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %30)
          to label %124 unwind label %181

124:                                              ; preds = %122
  %125 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %119, i32 noundef %123)
  %126 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %127 = getelementptr inbounds i8, ptr %126, i64 408
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %31, ptr noundef nonnull align 8 dereferenceable(44) %127)
          to label %128 unwind label %181

128:                                              ; preds = %124
  %129 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %31)
          to label %130 unwind label %183

130:                                              ; preds = %128
  %131 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %125, i32 noundef %129)
  %132 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %133 = getelementptr inbounds i8, ptr %132, i64 456
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %133) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull %33)
  %134 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %32)
          to label %135 unwind label %185

135:                                              ; preds = %130
  %136 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %131, i32 noundef %134)
  %137 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %138 = getelementptr inbounds i8, ptr %137, i64 552
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %138) #5
  %139 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %34)
          to label %140 unwind label %187

140:                                              ; preds = %135
  %141 = call noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
  %142 = call noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %139, i32 noundef %141)
  %143 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %136, i32 noundef %142)
  %144 = select i1 %99, i32 0, i32 2048
  %spec.select = select i1 %99, i32 256, i32 128
  %145 = select i1 %96, i32 %144, i32 %spec.select
  %146 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %143, i32 noundef %145)
  %147 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %148 = getelementptr inbounds i8, ptr %147, i64 344
  %149 = call noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %148)
  br i1 %149, label %150, label %161

150:                                              ; preds = %140
  %151 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %152 = getelementptr inbounds i8, ptr %151, i64 360
  %153 = invoke noundef zeroext i1 @_ZN2tsntI3ptrINS_4data24TypeParameterDeclarationEEEEbRNS2_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(44) %152)
          to label %154 unwind label %187

154:                                              ; preds = %150
  br i1 %153, label %155, label %161

155:                                              ; preds = %154
  %156 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %157 = getelementptr inbounds i8, ptr %156, i64 456
  %158 = call noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %157)
  %159 = xor i1 %158, true
  %160 = zext i1 %159 to i32
  br label %161

161:                                              ; preds = %155, %154, %140
  %162 = phi i32 [ 1, %154 ], [ 1, %140 ], [ %160, %155 ]
  %163 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %146, i32 noundef %162)
  %164 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %163, i32 noundef 1024)
  %165 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %166 = getelementptr inbounds i8, ptr %165, i64 32
  store i32 %164, ptr %166, align 8, !tbaa !5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  br label %196

167:                                              ; preds = %90
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %205

169:                                              ; preds = %92
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %23) #5
  br label %205

171:                                              ; preds = %94
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %205

173:                                              ; preds = %102
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %195

175:                                              ; preds = %104
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %194

177:                                              ; preds = %108
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %193

179:                                              ; preds = %118, %113
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %192

181:                                              ; preds = %124, %122
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %191

183:                                              ; preds = %128
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %190

185:                                              ; preds = %130
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %150, %135
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  br label %189

189:                                              ; preds = %187, %185
  %.pn27 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  br label %190

190:                                              ; preds = %189, %183
  %.pn27.pn = phi { ptr, i32 } [ %.pn27, %189 ], [ %184, %183 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  br label %191

191:                                              ; preds = %190, %181
  %.pn27.pn.pn = phi { ptr, i32 } [ %.pn27.pn, %190 ], [ %182, %181 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  br label %192

192:                                              ; preds = %191, %179
  %.pn27.pn.pn.pn = phi { ptr, i32 } [ %.pn27.pn.pn, %191 ], [ %180, %179 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  br label %193

193:                                              ; preds = %192, %177
  %.pn27.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn27.pn.pn.pn, %192 ], [ %178, %177 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  br label %194

194:                                              ; preds = %193, %175
  %.pn27.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn27.pn.pn.pn.pn, %193 ], [ %176, %175 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  br label %195

195:                                              ; preds = %194, %173
  %.pn27.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn27.pn.pn.pn.pn.pn, %194 ], [ %174, %173 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %24) #5
  br label %205

196:                                              ; preds = %161, %73
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %35) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %35)
  %197 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %198 = getelementptr inbounds i8, ptr %197, i64 472
  %199 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %198, ptr noundef nonnull align 8 dereferenceable(44) %35) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %35) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %35) #5
  %200 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %201 = getelementptr inbounds i8, ptr %200, i64 568
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %201) #5
  %202 = call noundef ptr @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %203 = getelementptr inbounds i8, ptr %202, i64 616
  %204 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %203)
  ret void

205:                                              ; preds = %167, %169, %195, %171, %89, %84, %79
  %.pn27.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn24, %89 ], [ %.pn22, %84 ], [ %.pn, %79 ], [ %170, %169 ], [ %168, %167 ], [ %.pn27.pn.pn.pn.pn.pn.pn, %195 ], [ %172, %171 ]
  call void @_ZN3ptrIN2ts4data17MethodDeclarationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  resume { ptr, i32 } %.pn27.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data17MethodDeclarationEEEEDa10SyntaxKind(ptr dead_on_unwind noalias writable sret(%struct.ptr.195) 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 @_ZN3ptrIN2ts4data17MethodDeclarationEEptEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(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 noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind54EEEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16)) local_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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_unnamed_addr #2 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 uwtable
declare dso_local noundef zeroext i1 @_ZN2tsntI3ptrINS_4data24TypeParameterDeclarationEEEEbRNS2_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #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 void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(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 @_ZN3ptrIN2ts4data17MethodDeclarationEED2Ev(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