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

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

%struct.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.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.427 = type { %"class.std::shared_ptr.428" }
%"class.std::shared_ptr.428" = type { %"class.std::__shared_ptr.429" }
%"class.std::__shared_ptr.429" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.203 = type { %"class.std::shared_ptr.204" }
%"class.std::shared_ptr.204" = type { %"class.std::__shared_ptr.205" }
%"class.std::__shared_ptr.205" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.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.138 = type { %"class.std::shared_ptr.139" }
%"class.std::shared_ptr.139" = type { %"class.std::__shared_ptr.140" }
%"class.std::__shared_ptr.140" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.46" = type <{ %"struct.ts::data::ReadonlyArray.47", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.47" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.undefined_t = type { i8 }
%"struct.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::Node" = type <{ ptr, %"struct.ts::data::TextRange", i32, i32, i32, i32, [4 x i8], %"struct.ts::data::NodeArray", i32, [4 x i8], %struct.ptr.17, %struct.ptr.17, i32, i8, [3 x i8] }>
%"struct.ts::data::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.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.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.166 = type { %"class.std::shared_ptr.167" }
%"class.std::shared_ptr.167" = type { %"class.std::__shared_ptr.168" }
%"class.std::__shared_ptr.168" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::LocalsContainer" = type { %"class.std::map.190", %struct.ptr.17 }
%"class.std::map.190" = type { %"class.std::_Rb_tree.191" }
%"class.std::_Rb_tree.191" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<wchar_t>, std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>, std::_Select1st<std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>>, std::less<std::__cxx11::basic_string<wchar_t>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<wchar_t>, std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>, std::_Select1st<std::pair<const std::__cxx11::basic_string<wchar_t>, ts::data::Symbol>>, std::less<std::__cxx11::basic_string<wchar_t>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

52:                                               ; preds = %9
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray") align 8 %20, ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %21)
          to label %53 unwind label %237

53:                                               ; preds = %52
  %54 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %55 unwind label %241

55:                                               ; preds = %53
  %56 = getelementptr inbounds %"struct.ts::data::Node", ptr %54, i32 0, i32 7
  %57 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %56, ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %21) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #5
  %58 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %59 unwind label %247

59:                                               ; preds = %55
  %60 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %58, i32 0, i32 1
  %61 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  invoke void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind writable sret(%struct.ptr) align 8 %25, ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %26)
          to label %62 unwind label %251

62:                                               ; preds = %59
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef %25)
          to label %63 unwind label %255

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

65:                                               ; preds = %63
  %66 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %64, i32 0, i32 1
  %67 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %28, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %68 unwind label %265

68:                                               ; preds = %65
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.174") align 8 %27, ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %28)
          to label %69 unwind label %269

69:                                               ; preds = %68
  %70 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %71 unwind label %273

71:                                               ; preds = %69
  %72 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %70, i32 0, i32 1
  %73 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %72, ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %30, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %74 unwind label %279

74:                                               ; preds = %71
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.182") align 8 %29, ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %30, i1 noundef zeroext false)
          to label %75 unwind label %283

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

77:                                               ; preds = %75
  %78 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %76, i32 0, i32 2
  %79 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %78, ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #5
  %80 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %81 unwind label %247

81:                                               ; preds = %77
  %82 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %80, i32 0, i32 3
  %83 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef %32)
          to label %84 unwind label %293

84:                                               ; preds = %81
  %85 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %86 unwind label %297

86:                                               ; preds = %84
  %87 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %85, i32 0, i32 3
  %88 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #5
  %89 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %90 unwind label %302

90:                                               ; preds = %86
  %91 = getelementptr inbounds %"struct.ts::data::Node", ptr %89, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %34, ptr noundef nonnull align 8 dereferenceable(44) %91)
          to label %92 unwind label %302

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

94:                                               ; preds = %92
  %95 = invoke noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %93, i32 noundef 256)
          to label %96 unwind label %306

96:                                               ; preds = %94
  %97 = invoke noundef zeroext i1 @_ZN2tsntENS_13ModifierFlagsE(i32 noundef %95)
          to label %98 unwind label %306

98:                                               ; preds = %96
  %99 = xor i1 %97, true
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  %100 = zext i1 %99 to i8
  store i8 %100, ptr %33, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #5
  %101 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %102 unwind label %310

102:                                              ; preds = %98
  %103 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %101, i32 0, i32 1
  %104 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %105 unwind label %310

105:                                              ; preds = %102
  %106 = xor i1 %104, true
  %107 = zext i1 %106 to i8
  store i8 %107, ptr %35, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #5
  %108 = load i8, ptr %33, align 1, !tbaa !9, !range !11, !noundef !12
  %109 = trunc i8 %108 to i1
  br i1 %109, label %110, label %113

110:                                              ; preds = %105
  %111 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %112 = trunc i8 %111 to i1
  br label %113

113:                                              ; preds = %110, %105
  %114 = phi i1 [ false, %105 ], [ %112, %110 ]
  %115 = zext i1 %114 to i8
  store i8 %115, ptr %36, align 1, !tbaa !9
  %116 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %117 unwind label %314

117:                                              ; preds = %113
  %118 = getelementptr inbounds %"struct.ts::data::Node", ptr %116, i32 0, i32 7
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %37, ptr noundef nonnull align 8 dereferenceable(44) %118)
          to label %119 unwind label %314

119:                                              ; preds = %117
  %120 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %37)
          to label %121 unwind label %318

121:                                              ; preds = %119
  %122 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %123 unwind label %318

123:                                              ; preds = %121
  %124 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %122, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %124) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind42EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef %39)
          to label %125 unwind label %322

125:                                              ; preds = %123
  %126 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %38)
          to label %127 unwind label %326

127:                                              ; preds = %125
  %128 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %120, i32 noundef %126)
          to label %129 unwind label %326

129:                                              ; preds = %127
  %130 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %131 unwind label %326

131:                                              ; preds = %129
  %132 = getelementptr inbounds %"struct.ts::data::NamedDeclaration", ptr %130, i32 0, i32 1
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %132) #5
  %133 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %40)
          to label %134 unwind label %330

134:                                              ; preds = %131
  %135 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %128, i32 noundef %133)
          to label %136 unwind label %330

136:                                              ; preds = %134
  %137 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %138 unwind label %330

138:                                              ; preds = %136
  %139 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %137, i32 0, i32 1
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %41, ptr noundef nonnull align 8 dereferenceable(44) %139)
          to label %140 unwind label %330

140:                                              ; preds = %138
  %141 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %41)
          to label %142 unwind label %334

142:                                              ; preds = %140
  %143 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %135, i32 noundef %141)
          to label %144 unwind label %334

144:                                              ; preds = %142
  %145 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %146 unwind label %334

146:                                              ; preds = %144
  %147 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %145, i32 0, i32 2
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %42, ptr noundef nonnull align 8 dereferenceable(44) %147)
          to label %148 unwind label %334

148:                                              ; preds = %146
  %149 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %42)
          to label %150 unwind label %338

150:                                              ; preds = %148
  %151 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %143, i32 noundef %149)
          to label %152 unwind label %338

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

154:                                              ; preds = %152
  %155 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %153, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %155) #5
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef %44)
          to label %156 unwind label %342

156:                                              ; preds = %154
  %157 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %43)
          to label %158 unwind label %346

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

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

162:                                              ; preds = %160
  %163 = getelementptr inbounds %"struct.ts::data::FunctionLikeDeclarationBase", ptr %161, i32 0, i32 3
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %163) #5
  %164 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %51, ptr noundef %45)
          to label %165 unwind label %350

165:                                              ; preds = %162
  %166 = invoke noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
          to label %167 unwind label %350

167:                                              ; preds = %165
  %168 = invoke noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %164, i32 noundef %166)
          to label %169 unwind label %350

169:                                              ; preds = %167
  %170 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %159, i32 noundef %168)
          to label %171 unwind label %350

171:                                              ; preds = %169
  %172 = load i8, ptr %36, align 1, !tbaa !9, !range !11, !noundef !12
  %173 = trunc i8 %172 to i1
  br i1 %173, label %174, label %175

174:                                              ; preds = %171
  br label %186

175:                                              ; preds = %171
  %176 = load i8, ptr %33, align 1, !tbaa !9, !range !11, !noundef !12
  %177 = trunc i8 %176 to i1
  br i1 %177, label %178, label %179

178:                                              ; preds = %175
  br label %184

179:                                              ; preds = %175
  %180 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %181 = trunc i8 %180 to i1
  %182 = zext i1 %181 to i64
  %183 = select i1 %181, i32 2048, i32 0
  br label %184

184:                                              ; preds = %179, %178
  %185 = phi i32 [ 256, %178 ], [ %183, %179 ]
  br label %186

186:                                              ; preds = %184, %174
  %187 = phi i32 [ 128, %174 ], [ %185, %184 ]
  %188 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %170, i32 noundef %187)
          to label %189 unwind label %350

189:                                              ; preds = %186
  %190 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %191 unwind label %350

191:                                              ; preds = %189
  %192 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %190, i32 0, i32 1
  %193 = invoke noundef zeroext i1 @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(44) %192)
          to label %194 unwind label %350

194:                                              ; preds = %191
  br i1 %193, label %201, label %195

195:                                              ; preds = %194
  %196 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %197 unwind label %350

197:                                              ; preds = %195
  %198 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %196, i32 0, i32 3
  %199 = invoke noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %198)
          to label %200 unwind label %350

200:                                              ; preds = %197
  br label %201

201:                                              ; preds = %200, %194
  %202 = phi i1 [ true, %194 ], [ %199, %200 ]
  %203 = zext i1 %202 to i64
  %204 = select i1 %202, i32 1, i32 0
  %205 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %188, i32 noundef %204)
          to label %206 unwind label %350

206:                                              ; preds = %201
  %207 = invoke noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %205, i32 noundef 4194304)
          to label %208 unwind label %350

208:                                              ; preds = %206
  %209 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %210 unwind label %350

210:                                              ; preds = %208
  %211 = getelementptr inbounds %"struct.ts::data::Node", ptr %209, i32 0, i32 5
  store i32 %207, ptr %211, align 8, !tbaa !13
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %42) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %41) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %46)
          to label %212 unwind label %362

212:                                              ; preds = %210
  %213 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %214 unwind label %366

214:                                              ; preds = %212
  %215 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %213, i32 0, i32 4
  %216 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %215, ptr noundef nonnull align 8 dereferenceable(44) %46) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %46) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %48) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %48)
          to label %217 unwind label %371

217:                                              ; preds = %214
  %218 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %219 unwind label %375

219:                                              ; preds = %217
  %220 = getelementptr inbounds %"struct.ts::data::JSDocContainer", ptr %218, i32 0, i32 2
  %221 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %220, ptr noundef nonnull align 8 dereferenceable(44) %48) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %48) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %48) #5
  %222 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %223 unwind label %314

223:                                              ; preds = %219
  %224 = getelementptr inbounds i8, ptr %222, i64 568
  %225 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %224, i32 0, i32 0
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %225) #5
  %226 = invoke noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %227 unwind label %314

227:                                              ; preds = %223
  %228 = getelementptr inbounds i8, ptr %226, i64 568
  %229 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %228, i32 0, i32 1
  %230 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %229)
          to label %231 unwind label %314

231:                                              ; preds = %227
  store i1 true, ptr %19, align 1
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  %232 = load i1, ptr %19, align 1
  br i1 %232, label %384, label %383

233:                                              ; preds = %9
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %22, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %23, align 4
  br label %246

237:                                              ; preds = %52
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %22, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %23, align 4
  br label %245

241:                                              ; preds = %53
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %22, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  br label %245

245:                                              ; preds = %241, %237
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %21) #5
  br label %246

246:                                              ; preds = %245, %233
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #5
  br label %385

247:                                              ; preds = %77, %55
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %22, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %23, align 4
  br label %385

251:                                              ; preds = %59
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %22, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %23, align 4
  br label %264

255:                                              ; preds = %62
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %22, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %23, align 4
  br label %263

259:                                              ; preds = %63
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %22, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %23, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %263

263:                                              ; preds = %259, %255
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  br label %264

264:                                              ; preds = %263, %251
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  br label %385

265:                                              ; preds = %65
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %22, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %23, align 4
  br label %278

269:                                              ; preds = %68
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %22, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %23, align 4
  br label %277

273:                                              ; preds = %69
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %22, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  br label %277

277:                                              ; preds = %273, %269
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  br label %278

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

279:                                              ; preds = %71
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %22, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %23, align 4
  br label %292

283:                                              ; preds = %74
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %22, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %23, align 4
  br label %291

287:                                              ; preds = %75
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %22, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  br label %291

291:                                              ; preds = %287, %283
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  br label %292

292:                                              ; preds = %291, %279
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #5
  br label %385

293:                                              ; preds = %81
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %22, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %23, align 4
  br label %301

297:                                              ; preds = %84
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %22, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %23, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  br label %301

301:                                              ; preds = %297, %293
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  br label %385

302:                                              ; preds = %90, %86
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %22, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %23, align 4
  br label %382

306:                                              ; preds = %96, %94, %92
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %22, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %34) #5
  br label %382

310:                                              ; preds = %102, %98
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %22, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %23, align 4
  br label %381

314:                                              ; preds = %227, %223, %219, %117, %113
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %22, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %23, align 4
  br label %380

318:                                              ; preds = %121, %119
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %22, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %23, align 4
  br label %361

322:                                              ; preds = %123
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %22, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %23, align 4
  br label %360

326:                                              ; preds = %129, %127, %125
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %22, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %23, align 4
  br label %359

330:                                              ; preds = %138, %136, %134, %131
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %22, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %23, align 4
  br label %358

334:                                              ; preds = %146, %144, %142, %140
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %22, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %23, align 4
  br label %357

338:                                              ; preds = %152, %150, %148
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %22, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %23, align 4
  br label %356

342:                                              ; preds = %154
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %22, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %23, align 4
  br label %355

346:                                              ; preds = %160, %158, %156
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %22, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %23, align 4
  br label %354

350:                                              ; preds = %208, %206, %201, %197, %195, %191, %189, %186, %169, %167, %165, %162
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %22, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %23, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  br label %354

354:                                              ; preds = %350, %346
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  br label %355

355:                                              ; preds = %354, %342
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  br label %356

356:                                              ; preds = %355, %338
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %42) #5
  br label %357

357:                                              ; preds = %356, %334
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %41) #5
  br label %358

358:                                              ; preds = %357, %330
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  br label %359

359:                                              ; preds = %358, %326
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  br label %360

360:                                              ; preds = %359, %322
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  br label %361

361:                                              ; preds = %360, %318
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #5
  br label %380

362:                                              ; preds = %210
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %22, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %23, align 4
  br label %370

366:                                              ; preds = %212
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %22, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %46) #5
  br label %370

370:                                              ; preds = %366, %362
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #5
  br label %380

371:                                              ; preds = %214
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %22, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %23, align 4
  br label %379

375:                                              ; preds = %217
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %22, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %23, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %48) #5
  br label %379

379:                                              ; preds = %375, %371
  call void @llvm.lifetime.end.p0(i64 48, ptr %48) #5
  br label %380

380:                                              ; preds = %379, %370, %361, %314
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #5
  br label %381

381:                                              ; preds = %380, %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  br label %382

382:                                              ; preds = %381, %306, %302
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  br label %385

383:                                              ; preds = %231
  call void @_ZN3ptrIN2ts4data18FunctionExpressionEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %384

384:                                              ; preds = %383, %231
  ret void

385:                                              ; preds = %382, %301, %292, %278, %264, %247, %246
  call void @_ZN3ptrIN2ts4data18FunctionExpressionEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %386

386:                                              ; preds = %385
  %387 = load ptr, ptr %22, align 8
  %388 = load i32, ptr %23, align 4
  %389 = insertvalue { ptr, i32 } poison, ptr %387, 0
  %390 = insertvalue { ptr, i32 } %389, i32 %388, 1
  resume { ptr, i32 } %390
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data18FunctionExpressionEED2Ev(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, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !21, i64 32}
!14 = !{!"_ZTSN2ts4data4NodeE", !15, i64 8, !18, i64 20, !19, i64 24, !20, i64 28, !21, i64 32, !22, i64 40, !17, i64 88, !28, i64 96, !28, i64 112, !32, i64 128, !10, i64 132}
!15 = !{!"_ZTSN2ts4data9TextRangeE", !16, i64 0, !17, i64 8}
!16 = !{!"_ZTSN2ts8pos_typeE", !17, i64 0, !17, i64 4}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTS10SyntaxKind", !7, i64 0}
!19 = !{!"_ZTSN2ts9NodeFlagsE", !7, i64 0}
!20 = !{!"_ZTSN2ts13ModifierFlagsE", !7, i64 0}
!21 = !{!"_ZTSN2ts14TransformFlagsE", !7, i64 0}
!22 = !{!"_ZTSN2ts4data9NodeArrayI3ptrINS0_4NodeEEEE", !23, i64 0, !15, i64 24, !10, i64 36, !10, i64 37, !10, i64 38, !21, i64 40}
!23 = !{!"_ZTSN2ts4data13ReadonlyArrayI3ptrINS0_4NodeEEEE", !24, i64 0}
!24 = !{!"_ZTSSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTS3ptrIN2ts4data4NodeEE", !29, i64 0}
!29 = !{!"_ZTSSt10shared_ptrIN2ts4data4NodeEE", !30, i64 0}
!30 = !{!"_ZTSSt12__shared_ptrIN2ts4data4NodeELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !31, i64 8}
!31 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!32 = !{!"_ZTSN2ts13InternalFlagsE", !7, i64 0}


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

%struct.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%"struct.ts::data::NodeArray.174" = type <{ %"struct.ts::data::ReadonlyArray.175", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.175" = type { %"class.std::vector.176" }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeParameterDeclaration>, std::allocator<ptr<ts::data::TypeParameterDeclaration>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.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.427 = type { %"class.std::shared_ptr.428" }
%"class.std::shared_ptr.428" = type { %"class.std::__shared_ptr.429" }
%"class.std::__shared_ptr.429" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.203 = type { %"class.std::shared_ptr.204" }
%"class.std::shared_ptr.204" = type { %"class.std::__shared_ptr.205" }
%"class.std::__shared_ptr.205" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.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.138 = type { %"class.std::shared_ptr.139" }
%"class.std::shared_ptr.139" = type { %"class.std::__shared_ptr.140" }
%"class.std::__shared_ptr.140" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.46" = type <{ %"struct.ts::data::ReadonlyArray.47", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.47" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34:                                               ; preds = %33
  %35 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %36 = getelementptr inbounds i8, ptr %35, i64 40
  %37 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %36, ptr noundef nonnull align 8 dereferenceable(44) %10) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %11) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #5
  %38 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %39 = getelementptr inbounds i8, ptr %38, i64 520
  %40 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind nonnull writable sret(%struct.ptr) align 8 %13, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %14)
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %13)
  %41 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %42 = getelementptr inbounds i8, ptr %41, i64 328
  %43 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %16, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %44 unwind label %142

44:                                               ; preds = %34
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.174") align 8 %15, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %16)
          to label %45 unwind label %144

45:                                               ; preds = %44
  %46 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %47 = getelementptr inbounds i8, ptr %46, i64 360
  %48 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %47, ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %15) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %18, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %49 unwind label %147

49:                                               ; preds = %45
  invoke void @_ZN2ts11NodeFactory15createNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_b(ptr dead_on_unwind nonnull writable sret(%"struct.ts::data::NodeArray.182") align 8 %17, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %18, i1 noundef zeroext false)
          to label %50 unwind label %149

50:                                               ; preds = %49
  %51 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %52 = getelementptr inbounds i8, ptr %51, i64 408
  %53 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %52, ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %17) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  %54 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %55 = getelementptr inbounds i8, ptr %54, i64 456
  %56 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #5
  call void @_ZN3ptrIN2ts4data5BlockEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_5BlockEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %20)
  %57 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %58 = getelementptr inbounds i8, ptr %57, i64 552
  %59 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @_ZN3ptrIN2ts4data5BlockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  %60 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %61 = getelementptr inbounds i8, ptr %60, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %21, ptr noundef nonnull align 8 dereferenceable(44) %61)
          to label %62 unwind label %152

62:                                               ; preds = %50
  %63 = invoke noundef i32 @_ZN2tsL16modifiersToFlagsENS_4data9NodeArrayI3ptrINS0_4NodeEEEE(ptr noundef nonnull %21)
          to label %64 unwind label %154

64:                                               ; preds = %62
  %65 = call noundef i32 @_ZN2tsanENS_13ModifierFlagsES0_(i32 noundef %63, i32 noundef 256)
  %66 = call noundef zeroext i1 @_ZN2tsntENS_13ModifierFlagsE(i32 noundef %65)
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %21) #5
  %67 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %68 = getelementptr inbounds i8, ptr %67, i64 520
  %69 = call noundef zeroext i1 @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEntEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
  %70 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %71 = getelementptr inbounds i8, ptr %70, i64 40
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %22, ptr noundef nonnull align 8 dereferenceable(44) %71)
          to label %72 unwind label %156

72:                                               ; preds = %64
  %73 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data4NodeEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %22)
          to label %74 unwind label %158

74:                                               ; preds = %72
  %75 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %76 = getelementptr inbounds i8, ptr %75, i64 520
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %76) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_16PunctuationTokenIL10SyntaxKind42EEEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull %24)
  %77 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %23)
          to label %78 unwind label %160

78:                                               ; preds = %74
  %79 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %73, i32 noundef %77)
  %80 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %81 = getelementptr inbounds i8, ptr %80, i64 328
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %81) #5
  %82 = invoke noundef i32 @_ZN2ts11NodeFactory18propagateNameFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %25)
          to label %83 unwind label %162

83:                                               ; preds = %78
  %84 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %79, i32 noundef %82)
  %85 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %86 = getelementptr inbounds i8, ptr %85, i64 360
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %26, ptr noundef nonnull align 8 dereferenceable(44) %86)
          to label %87 unwind label %162

87:                                               ; preds = %83
  %88 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data24TypeParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %26)
          to label %89 unwind label %164

89:                                               ; preds = %87
  %90 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %84, i32 noundef %88)
  %91 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %92 = getelementptr inbounds i8, ptr %91, i64 408
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %27, ptr noundef nonnull align 8 dereferenceable(44) %92)
          to label %93 unwind label %164

93:                                               ; preds = %89
  %94 = invoke noundef i32 @_ZN2ts11NodeFactory22propagateChildrenFlagsI3ptrINS_4data20ParameterDeclarationEEEENS_14TransformFlagsENS3_9NodeArrayIT_EE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %27)
          to label %95 unwind label %166

95:                                               ; preds = %93
  %96 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %90, i32 noundef %94)
  %97 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %98 = getelementptr inbounds i8, ptr %97, i64 456
  call void @_ZN3ptrIN2ts4data8TypeNodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %98) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_8TypeNodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull %29)
  %99 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %28)
          to label %100 unwind label %168

100:                                              ; preds = %95
  %101 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %96, i32 noundef %99)
  %102 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %103 = getelementptr inbounds i8, ptr %102, i64 552
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %103) #5
  %104 = invoke noundef i32 @_ZN2ts11NodeFactory19propagateChildFlagsE3ptrINS_4data4NodeEE(ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %30)
          to label %105 unwind label %170

105:                                              ; preds = %100
  %106 = call noundef i32 @_ZN2tscoENS_14TransformFlagsE(i32 noundef 67108864)
  %107 = call noundef i32 @_ZN2tsanENS_14TransformFlagsES0_(i32 noundef %104, i32 noundef %106)
  %108 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %101, i32 noundef %107)
  %109 = select i1 %69, i32 0, i32 2048
  %spec.select = select i1 %69, i32 256, i32 128
  %110 = select i1 %66, i32 %109, i32 %spec.select
  %111 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %108, i32 noundef %110)
  %112 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %113 = getelementptr inbounds i8, ptr %112, i64 360
  %114 = call noundef zeroext i1 @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEcvbEv(ptr noundef nonnull align 8 dereferenceable(44) %113)
  br i1 %114, label %120, label %115

115:                                              ; preds = %105
  %116 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %117 = getelementptr inbounds i8, ptr %116, i64 456
  %118 = call noundef zeroext i1 @_ZN3ptrIN2ts4data8TypeNodeEEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
  %119 = zext i1 %118 to i32
  br label %120

120:                                              ; preds = %115, %105
  %121 = phi i32 [ 1, %105 ], [ %119, %115 ]
  %122 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %111, i32 noundef %121)
  %123 = call noundef i32 @_ZN2tsorENS_14TransformFlagsES0_(i32 noundef %122, i32 noundef 4194304)
  %124 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %125 = getelementptr inbounds i8, ptr %124, i64 32
  store i32 %123, ptr %125, align 8, !tbaa !5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %31)
  %126 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %127 = getelementptr inbounds i8, ptr %126, i64 472
  %128 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %127, ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %31) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %32)
  %129 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %130 = getelementptr inbounds i8, ptr %129, i64 136
  %131 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %130, ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #5
  %132 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %133 = getelementptr inbounds i8, ptr %132, i64 568
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %133) #5
  %134 = call noundef ptr @_ZN3ptrIN2ts4data18FunctionExpressionEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %135 = getelementptr inbounds i8, ptr %134, i64 616
  %136 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSE11undefined_t(ptr noundef nonnull align 8 dereferenceable(16) %135)
  ret void

137:                                              ; preds = %9
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %33
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %11) #5
  br label %141

141:                                              ; preds = %139, %137
  %.pn = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #5
  br label %178

142:                                              ; preds = %34
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %146

144:                                              ; preds = %44
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %16) #5
  br label %146

146:                                              ; preds = %144, %142
  %.pn21 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #5
  br label %178

147:                                              ; preds = %45
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %49
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %151

151:                                              ; preds = %149, %147
  %.pn23 = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #5
  br label %178

152:                                              ; preds = %50
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %178

154:                                              ; preds = %62
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %21) #5
  br label %178

156:                                              ; preds = %64
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %178

158:                                              ; preds = %72
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %177

160:                                              ; preds = %74
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %176

162:                                              ; preds = %83, %78
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %175

164:                                              ; preds = %89, %87
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %174

166:                                              ; preds = %93
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %173

168:                                              ; preds = %95
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %100
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  br label %172

172:                                              ; preds = %170, %168
  %.pn26 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @_ZN3ptrIN2ts4data8TypeNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  br label %173

173:                                              ; preds = %172, %166
  %.pn26.pn = phi { ptr, i32 } [ %.pn26, %172 ], [ %167, %166 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  br label %174

174:                                              ; preds = %173, %164
  %.pn26.pn.pn = phi { ptr, i32 } [ %.pn26.pn, %173 ], [ %165, %164 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  br label %175

175:                                              ; preds = %174, %162
  %.pn26.pn.pn.pn = phi { ptr, i32 } [ %.pn26.pn.pn, %174 ], [ %163, %162 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  br label %176

176:                                              ; preds = %175, %160
  %.pn26.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn26.pn.pn.pn, %175 ], [ %161, %160 ]
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind42EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %177

177:                                              ; preds = %176, %158
  %.pn26.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn26.pn.pn.pn.pn, %176 ], [ %159, %158 ]
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %22) #5
  br label %178

178:                                              ; preds = %152, %154, %177, %156, %151, %146, %141
  %.pn26.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn23, %151 ], [ %.pn21, %146 ], [ %.pn, %141 ], [ %155, %154 ], [ %153, %152 ], [ %.pn26.pn.pn.pn.pn.pn, %177 ], [ %157, %156 ]
  call void @_ZN3ptrIN2ts4data18FunctionExpressionEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  resume { ptr, i32 } %.pn26.pn.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data18FunctionExpressionEED2Ev(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