; 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.ptr.170 = type { %"class.std::shared_ptr.171" }
%"class.std::shared_ptr.171" = type { %"class.std::__shared_ptr.172" }
%"class.std::__shared_ptr.172" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.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.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.undefined_t = type { i8 }
%"struct.ts::data::NodeArray.46" = type <{ %"struct.ts::data::ReadonlyArray.47", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.47" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::Node" = type <{ ptr, %"struct.ts::data::TextRange", i32, i32, i32, i32, [4 x i8], %"struct.ts::data::NodeArray", i32, [4 x i8], %struct.ptr.17, %struct.ptr.17, i32, i8, [3 x i8] }>
%"struct.ts::data::NamedDeclaration" = type { %"struct.ts::data::Declaration", %struct.ptr.17 }
%"struct.ts::data::Declaration" = type { %"struct.ts::data::DeclarationStatement", %struct.ptr.58, %struct.ptr.58 }
%"struct.ts::data::DeclarationStatement" = type { %"struct.ts::data::Statement" }
%"struct.ts::data::Statement" = type { %"struct.ts::data::PrimaryExpression" }
%"struct.ts::data::PrimaryExpression" = type { %"struct.ts::data::MemberExpression" }
%"struct.ts::data::MemberExpression" = type { %"struct.ts::data::LeftHandSideExpression" }
%"struct.ts::data::LeftHandSideExpression" = type { %"struct.ts::data::UpdateExpression" }
%"struct.ts::data::UpdateExpression" = type { %"struct.ts::data::UnaryExpression" }
%"struct.ts::data::UnaryExpression" = type { %"struct.ts::data::ExpressionWithTypeArguments" }
%"struct.ts::data::ExpressionWithTypeArguments" = type { %"struct.ts::data::NodeWithTypeArguments", %struct.ptr.54 }
%"struct.ts::data::NodeWithTypeArguments" = type { %"struct.ts::data::Expression", %"struct.ts::data::NodeArray.46" }
%"struct.ts::data::Expression" = type { %"struct.ts::data::TypeNode" }
%"struct.ts::data::TypeNode" = type { %"struct.ts::data::JSDocContainer" }
%"struct.ts::data::JSDocContainer" = type { %"struct.ts::data::Node.base", [3 x i8], %"struct.ts::data::NodeArray.30", %"struct.ts::data::NodeArray.38" }
%"struct.ts::data::Node.base" = type <{ ptr, %"struct.ts::data::TextRange", i32, i32, i32, i32, [4 x i8], %"struct.ts::data::NodeArray", i32, [4 x i8], %struct.ptr.17, %struct.ptr.17, i32, i8 }>
%"struct.ts::data::NodeArray.38" = type <{ %"struct.ts::data::ReadonlyArray.39", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.39" = type { %"class.std::vector.40" }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDocTag>, std::allocator<ptr<ts::data::JSDocTag>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ptr.54 = type { %"class.std::shared_ptr.55" }
%"class.std::shared_ptr.55" = type { %"class.std::__shared_ptr.56" }
%"class.std::__shared_ptr.56" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.58 = type { %"class.std::shared_ptr.59" }
%"class.std::shared_ptr.59" = type { %"class.std::__shared_ptr.60" }
%"class.std::__shared_ptr.60" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::TypeElement" = type { %"struct.ts::data::ClassElement", %struct.ptr.150 }
%"struct.ts::data::ClassElement" = type { %"struct.ts::data::NamedDeclaration" }
%struct.ptr.150 = type { %"class.std::shared_ptr.151" }
%"class.std::shared_ptr.151" = type { %"class.std::__shared_ptr.152" }
%"class.std::__shared_ptr.152" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::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.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::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: mustprogress nounwind uwtable
declare dso_local void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #1 align 2

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

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

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

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

; 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)) #2 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) #2 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) #3 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 #3 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)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory21createMethodSignatureENS_4data9NodeArrayI3ptrINS1_4NodeEEEES5_S3_INS1_16PunctuationTokenIL10SyntaxKind58EEEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.170) 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) #4 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i1, align 1
  %18 = alloca %"struct.ts::data::NodeArray", align 8
  %19 = alloca %"struct.ts::data::NodeArray", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %struct.ptr.17, align 8
  %23 = alloca %struct.ptr, align 8
  %24 = alloca %struct.ptr, align 8
  %25 = alloca %struct.ptr.17, align 8
  %26 = alloca %"struct.ts::data::NodeArray.174", align 8
  %27 = alloca %"struct.ts::data::NodeArray.174", align 8
  %28 = alloca %"struct.ts::data::NodeArray.182", align 8
  %29 = alloca %"struct.ts::data::NodeArray.182", align 8
  %30 = alloca %"struct.ts::data::NodeArray.30", align 8
  %31 = alloca %struct.undefined_t, align 1
  %32 = alloca %"struct.ts::data::NodeArray.46", align 8
  %33 = alloca %struct.undefined_t, align 1
  store ptr %0, ptr %9, align 8
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  %34 = load ptr, ptr %10, align 8
  store i1 false, ptr %17, align 1
  call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data15MethodSignatureEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.170) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %34, i32 noundef 173)
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %19, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %35 unwind label %86

35:                                               ; preds = %8
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data4NodeEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray") align 8 %18, ptr noundef nonnull align 8 dereferenceable(232) %34, ptr noundef %19)
          to label %36 unwind label %90

36:                                               ; preds = %35
  %37 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %38 unwind label %94

38:                                               ; preds = %36
  %39 = getelementptr inbounds %"struct.ts::data::Node", ptr %37, i32 0, i32 7
  %40 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %39, ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  invoke void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef %25)
          to label %41 unwind label %100

41:                                               ; preds = %38
  invoke void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind writable sret(%struct.ptr) align 8 %23, ptr noundef nonnull align 8 dereferenceable(232) %34, ptr noundef %24)
          to label %42 unwind label %104

42:                                               ; preds = %41
  invoke void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef %23)
          to label %43 unwind label %108

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

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

49:                                               ; preds = %45
  %50 = getelementptr inbounds %"struct.ts::data::TypeElement", ptr %48, i32 0, i32 1
  %51 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %26) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %27, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %52 unwind label %123

52:                                               ; preds = %49
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data24TypeParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.174") align 8 %26, ptr noundef nonnull align 8 dereferenceable(232) %34, ptr noundef %27)
          to label %53 unwind label %127

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

55:                                               ; preds = %53
  %56 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %54, i32 0, i32 1
  %57 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %56, ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %27) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %28) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %29, ptr noundef nonnull align 8 dereferenceable(44) %6)
          to label %58 unwind label %137

58:                                               ; preds = %55
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind writable sret(%"struct.ts::data::NodeArray.182") align 8 %28, ptr noundef nonnull align 8 dereferenceable(232) %34, ptr noundef %29)
          to label %59 unwind label %141

59:                                               ; preds = %58
  %60 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %61 unwind label %145

61:                                               ; preds = %59
  %62 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %60, i32 0, i32 2
  %63 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %62, ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %29) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #5
  %64 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %65 unwind label %119

65:                                               ; preds = %61
  %66 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %64, i32 0, i32 3
  %67 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %68 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %69 unwind label %119

69:                                               ; preds = %65
  %70 = getelementptr inbounds %"struct.ts::data::Node", ptr %68, i32 0, i32 5
  store i32 1, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %30) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %30)
          to label %71 unwind label %151

71:                                               ; preds = %69
  %72 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %73 unwind label %155

73:                                               ; preds = %71
  %74 = getelementptr inbounds %"struct.ts::data::JSDocContainer", ptr %72, i32 0, i32 2
  %75 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %74, ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #5
  %76 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %77 unwind label %119

77:                                               ; preds = %73
  %78 = getelementptr inbounds i8, ptr %76, i64 520
  %79 = getelementptr inbounds %"struct.ts::data::LocalsContainer", ptr %78, i32 0, i32 0
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %79) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr %32) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %32)
          to label %80 unwind label %160

80:                                               ; preds = %77
  %81 = invoke noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
          to label %82 unwind label %164

82:                                               ; preds = %80
  %83 = getelementptr inbounds %"struct.ts::data::SignatureDeclarationBase", ptr %81, i32 0, i32 4
  %84 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %83, ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #5
  store i1 true, ptr %17, align 1
  %85 = load i1, ptr %17, align 1
  br i1 %85, label %170, label %169

86:                                               ; preds = %8
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %20, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %21, align 4
  br label %99

90:                                               ; preds = %35
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %20, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %21, align 4
  br label %98

94:                                               ; preds = %36
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %20, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %21, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %98

98:                                               ; preds = %94, %90
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  br label %99

99:                                               ; preds = %98, %86
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #5
  br label %171

100:                                              ; preds = %38
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %20, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %21, align 4
  br label %118

104:                                              ; preds = %41
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %20, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %21, align 4
  br label %117

108:                                              ; preds = %42
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %20, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %21, align 4
  br label %116

112:                                              ; preds = %43
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %20, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %21, align 4
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %116

116:                                              ; preds = %112, %108
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  br label %117

117:                                              ; preds = %116, %104
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %118

118:                                              ; preds = %117, %100
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #5
  br label %171

119:                                              ; preds = %73, %65, %61, %45
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %20, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %21, align 4
  br label %171

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

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

131:                                              ; preds = %53
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %20, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %21, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data24TypeParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %26) #5
  br label %135

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

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

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

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

145:                                              ; preds = %59
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %20, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %21, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %28) #5
  br label %149

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

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

151:                                              ; preds = %69
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %20, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %21, align 4
  br label %159

155:                                              ; preds = %71
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %20, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %21, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %30) #5
  br label %159

159:                                              ; preds = %155, %151
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #5
  br label %171

160:                                              ; preds = %77
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %20, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %21, align 4
  br label %168

164:                                              ; preds = %80
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %20, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %21, align 4
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %32) #5
  br label %168

168:                                              ; preds = %164, %160
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #5
  br label %171

169:                                              ; preds = %82
  call void @_ZN3ptrIN2ts4data15MethodSignatureEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %170

170:                                              ; preds = %169, %82
  ret void

171:                                              ; preds = %168, %159, %150, %136, %119, %118, %99
  call void @_ZN3ptrIN2ts4data15MethodSignatureEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  br label %172

172:                                              ; preds = %171
  %173 = load ptr, ptr %20, align 8
  %174 = load i32, ptr %21, align 4
  %175 = insertvalue { ptr, i32 } poison, ptr %173, 0
  %176 = insertvalue { ptr, i32 } %175, i32 %174, 1
  resume { ptr, i32 } %176
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.182") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) #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 #3 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)) #2 align 2

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

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

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

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !17, i64 32}
!10 = !{!"_ZTSN2ts4data4NodeE", !11, i64 8, !14, i64 20, !15, i64 24, !16, i64 28, !17, i64 32, !18, i64 40, !13, i64 88, !25, i64 96, !25, i64 112, !29, i64 128, !24, i64 132}
!11 = !{!"_ZTSN2ts4data9TextRangeE", !12, i64 0, !13, i64 8}
!12 = !{!"_ZTSN2ts8pos_typeE", !13, i64 0, !13, i64 4}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS10SyntaxKind", !7, i64 0}
!15 = !{!"_ZTSN2ts9NodeFlagsE", !7, i64 0}
!16 = !{!"_ZTSN2ts13ModifierFlagsE", !7, i64 0}
!17 = !{!"_ZTSN2ts14TransformFlagsE", !7, i64 0}
!18 = !{!"_ZTSN2ts4data9NodeArrayI3ptrINS0_4NodeEEEE", !19, i64 0, !11, i64 24, !24, i64 36, !24, i64 37, !24, i64 38, !17, i64 40}
!19 = !{!"_ZTSN2ts4data13ReadonlyArrayI3ptrINS0_4NodeEEEE", !20, i64 0}
!20 = !{!"_ZTSSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI3ptrIN2ts4data4NodeEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTS3ptrIN2ts4data4NodeEE", !26, i64 0}
!26 = !{!"_ZTSSt10shared_ptrIN2ts4data4NodeEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN2ts4data4NodeELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !28, i64 8}
!28 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!29 = !{!"_ZTSN2ts13InternalFlagsE", !7, i64 0}


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

%struct.ptr = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.ts::data::NodeArray" = type <{ %"struct.ts::data::ReadonlyArray", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray" = type { %"class.std::vector.21" }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::Node>, std::allocator<ptr<ts::data::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::TextRange" = type { %"struct.ts::pos_type", i32 }
%"struct.ts::pos_type" = type { i32, i32 }
%struct.ptr.170 = type { %"class.std::shared_ptr.171" }
%"class.std::shared_ptr.171" = type { %"class.std::__shared_ptr.172" }
%"class.std::__shared_ptr.172" = type { ptr, %"class.std::__shared_count" }
%struct.ptr.17 = type { %"class.std::shared_ptr.18" }
%"class.std::shared_ptr.18" = type { %"class.std::__shared_ptr.19" }
%"class.std::__shared_ptr.19" = type { ptr, %"class.std::__shared_count" }
%"struct.ts::data::NodeArray.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.ts::data::NodeArray.30" = type <{ %"struct.ts::data::ReadonlyArray.31", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.31" = type { %"class.std::vector.32" }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::JSDoc>, std::allocator<ptr<ts::data::JSDoc>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ts::data::NodeArray.46" = type <{ %"struct.ts::data::ReadonlyArray.47", %"struct.ts::data::TextRange", i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ts::data::ReadonlyArray.47" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ptr<ts::data::TypeNode>, std::allocator<ptr<ts::data::TypeNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

; 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 #2 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 #2 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 #3 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 #3 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 #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN2ts11NodeFactory21createMethodSignatureENS_4data9NodeArrayI3ptrINS1_4NodeEEEES5_S3_INS1_16PunctuationTokenIL10SyntaxKind58EEEENS2_IS3_INS1_24TypeParameterDeclarationEEEENS2_IS3_INS1_20ParameterDeclarationEEEES3_INS1_8TypeNodeEE(ptr dead_on_unwind noalias writable sret(%struct.ptr.170) 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) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"struct.ts::data::NodeArray", align 8
  %10 = alloca %"struct.ts::data::NodeArray", align 8
  %11 = alloca %struct.ptr.17, align 8
  %12 = alloca %struct.ptr, align 8
  %13 = alloca %struct.ptr, align 8
  %14 = alloca %struct.ptr.17, 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.ts::data::NodeArray.30", align 8
  %20 = alloca %"struct.ts::data::NodeArray.46", align 8
  tail call void @_ZN2ts11NodeFactory21createBaseDeclarationI3ptrINS_4data15MethodSignatureEEEEDa10SyntaxKind(ptr dead_on_unwind writable sret(%struct.ptr.170) align 8 %0, ptr noundef nonnull align 8 dereferenceable(232) %1, i32 noundef 173)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #5
  invoke void @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(44) %10, ptr noundef nonnull align 8 dereferenceable(44) %2)
          to label %21 unwind label %55

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

22:                                               ; preds = %21
  %23 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %24 = getelementptr inbounds i8, ptr %23, i64 40
  %25 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_4NodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %24, ptr noundef nonnull align 8 dereferenceable(44) %9) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  call void @_ZN3ptrIN2ts4data4NodeEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEEC2INS1_4NodeEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull %14)
  call void @_ZN2ts11NodeFactory6asNameE3ptrINS_4data10IdentifierEE(ptr dead_on_unwind nonnull writable sret(%struct.ptr) align 8 %12, ptr noundef nonnull align 8 dereferenceable(232) %1, ptr noundef nonnull %13)
  call void @_ZN3ptrIN2ts4data4NodeEEC2INS1_10IdentifierEEES_IT_E(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull %12)
  %26 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %27 = getelementptr inbounds i8, ptr %26, i64 328
  %28 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data4NodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @_ZN3ptrIN2ts4data10IdentifierEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @_ZN3ptrIN2ts4data4NodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  %29 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %30 = getelementptr inbounds i8, ptr %29, i64 344
  %31 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data16PunctuationTokenIL10SyntaxKind58EEEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %4) #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 %32 unwind label %60

32:                                               ; preds = %22
  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 %33 unwind label %62

33:                                               ; preds = %32
  %34 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %35 = getelementptr inbounds i8, ptr %34, i64 360
  %36 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_24TypeParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %35, 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 %37 unwind label %65

37:                                               ; preds = %33
  invoke void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(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)
          to label %38 unwind label %67

38:                                               ; preds = %37
  %39 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %40 = getelementptr inbounds i8, ptr %39, i64 408
  %41 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_20ParameterDeclarationEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %40, 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
  %42 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %43 = getelementptr inbounds i8, ptr %42, i64 456
  %44 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3ptrIN2ts4data8TypeNodeEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %45 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %46 = getelementptr inbounds i8, ptr %45, i64 32
  store i32 1, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %19) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %19)
  %47 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %48 = getelementptr inbounds i8, ptr %47, i64 136
  %49 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_5JSDocEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %48, ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data5JSDocEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %19) #5
  %50 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %51 = getelementptr inbounds i8, ptr %50, i64 520
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEN2ts4data6SymbolESt4lessIS5_ESaISt4pairIKS5_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %51) #5
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #5
  call void @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEC2E11undefined_t(ptr noundef nonnull align 8 dereferenceable(44) %20)
  %52 = call noundef ptr @_ZN3ptrIN2ts4data15MethodSignatureEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %53 = getelementptr inbounds i8, ptr %52, i64 472
  %54 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN2ts4data9NodeArrayI3ptrINS0_8TypeNodeEEEaSEOS5_(ptr noundef nonnull align 8 dereferenceable(44) %53, ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @_ZNSt6vectorI3ptrIN2ts4data8TypeNodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #5
  ret void

55:                                               ; preds = %8
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %59

57:                                               ; preds = %21
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data4NodeEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #5
  br label %59

59:                                               ; preds = %57, %55
  %.pn = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #5
  br label %70

60:                                               ; preds = %22
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %64

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

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

65:                                               ; preds = %33
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %69

67:                                               ; preds = %37
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI3ptrIN2ts4data20ParameterDeclarationEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #5
  br label %69

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

70:                                               ; preds = %69, %64, %59
  %.pn10.pn = phi { ptr, i32 } [ %.pn10, %69 ], [ %.pn8, %64 ], [ %.pn, %59 ]
  call void @_ZN3ptrIN2ts4data15MethodSignatureEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5
  resume { ptr, i32 } %.pn10.pn
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN2ts11NodeFactory11asNodeArrayI3ptrINS_4data20ParameterDeclarationEEEENS3_9NodeArrayIT_EES8_(ptr dead_on_unwind noalias writable sret(%"struct.ts::data::NodeArray.182") align 8, ptr noundef nonnull align 8 dereferenceable(232), ptr noundef) local_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 #3 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 #2 align 2

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

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

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

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

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