; LLVM IR from thepowersgang/mrustc :: src/parse (root)

; 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"

%"class.AST::Visibility" = type <{ %"class.std::shared_ptr", %"class.std::shared_ptr.0", i32, [4 x i8] }>
%"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 }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.AST::AttributeList" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ProtoSpan = type { %struct.Span, %class.RcString, i32, i32 }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.102", %"class.std::vector.102", %"class.std::vector.107" }
%"class.std::vector.102" = type { %"struct.std::_Vector_base.103" }
%"struct.std::_Vector_base.103" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.107" = type { %"struct.std::_Vector_base.108" }
%"struct.std::_Vector_base.108" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Function" = type { %struct.Span, %"class.AST::GenericParams", %"class.AST::Expr", %class.TypeRef, %"class.std::vector.150", i8, %"class.std::__cxx11::basic_string", %"struct.AST::Function::Flags", [5 x i8], %"struct.AST::Function::Markings" }
%"class.AST::GenericParams" = type { %"class.std::vector.112", %"class.std::vector.117" }
%"class.std::vector.112" = type { %"struct.std::_Vector_base.113" }
%"struct.std::_Vector_base.113" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.117" = type { %"struct.std::_Vector_base.118" }
%"struct.std::_Vector_base.118" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Expr" = type { %"class.std::shared_ptr.99" }
%"class.std::shared_ptr.99" = type { %"class.std::__shared_ptr.100" }
%"class.std::__shared_ptr.100" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.150" = type { %"struct.std::_Vector_base.151" }
%"struct.std::_Vector_base.151" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Function::Flags" = type { i8, i8, i8 }
%"struct.AST::Function::Markings" = type <{ i32, i8, [3 x i8], %"class.std::vector.155", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::vector.155" = type { %"struct.std::_Vector_base.156" }
%"struct.std::_Vector_base.156" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%"class.AST::ExternBlock" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.182", %"class.std::vector.187" }
%"class.std::vector.182" = type { %"struct.std::_Vector_base.183" }
%"struct.std::_Vector_base.183" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.187" = type { %"struct.std::_Vector_base.188" }
%"struct.std::_Vector_base.188" = type { %"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.SavedParseState = type { ptr, %struct.ParseState }
%"class.AST::Item" = type { i32, %"union.AST::Item::DataUnion" }
%"union.AST::Item::DataUnion" = type { %"class.AST::Module" }
%"class.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23", %"struct.AST::Module::FileInfo", i8, i8, %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::vector.33", %"class.std::vector.38", %"class.std::vector.43" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::FileInfo" = type { i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.AST::Static" = type { i32, %class.TypeRef, %"class.AST::Expr", %"struct.AST::Static::Markings" }
%"struct.AST::Static::Markings" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.AST::TypeAlias" = type { %"class.AST::GenericParams", %"class.AST::GenericParams", %class.TypeRef }
%"class.std::vector.122" = type { %"struct.std::_Vector_base.123" }
%"struct.std::_Vector_base.123" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator.124" = type { i8 }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }

@g_debug_indent_level = external global i32, align 4
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Parse_PublicityR11TokenStreamb(ptr dead_on_unwind noalias writable sret(%"class.AST::Visibility") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) #0

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

declare void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) #0 align 2

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

; Function Attrs: nounwind
declare void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #4

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

declare noundef zeroext i1 @_Z13debug_enabledv() #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) unnamed_addr #2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN10ParseError10UnexpectedD1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

declare void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88)) #0 align 2

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

declare void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Parse_ItemAttrsR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::AttributeList") align 8, ptr noundef nonnull align 8 dereferenceable(176)) #0

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4

declare void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

; Function Attrs: nounwind
declare void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #4

declare void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #0 align 2

declare void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind writable sret(%class.TypeRef) align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) #2

declare void @_ZN3AST4ExprC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17Parse_FunctionDefR11TokenStreambbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST8Function5FlagsE(ptr dead_on_unwind noalias writable sret(%"class.AST::Function") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext, i1 noundef zeroext, ptr noundef, i24) #0

declare void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST9TypeAliasC2ENS_13GenericParamsE7TypeRef(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef, ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef byval(%struct.ParseState) align 8) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36)) unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST6StaticC2ENS0_5ClassE7TypeRefNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(216), i32 noundef, ptr noundef, ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_6StaticE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2E4Span(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_9TypeAliasE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17Parse_ParentAttrsR11TokenStreamRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(24)) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE(ptr dead_on_unwind noalias writable sret(%"class.AST::ExternBlock") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %3) #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %class.TraceLog, align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i1, align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca %class.Token, align 8
  %17 = alloca %"class.AST::AttributeList", align 8
  %18 = alloca %class.SavedParseState, align 8
  %19 = alloca %struct.ParseState, align 8
  %20 = alloca %struct.ProtoSpan, align 8
  %21 = alloca %"class.AST::Visibility", align 8
  %22 = alloca %class.Token, align 8
  %23 = alloca %class.Token, align 8
  %24 = alloca %class.Token, align 8
  %25 = alloca i1, align 1
  %26 = alloca %class.RcString, align 8
  %27 = alloca %"class.AST::Item", align 8
  %28 = alloca %"class.AST::Function", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"struct.AST::Function::Flags", align 1
  %31 = alloca i24, align 4
  %32 = alloca %class.Token, align 8
  %33 = alloca %class.Token, align 8
  %34 = alloca i1, align 1
  %35 = alloca %"struct.AST::Named", align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %struct.ProtoSpan, align 8
  %38 = alloca %"class.AST::AttributeList", align 8
  %39 = alloca %"class.AST::Visibility", align 8
  %40 = alloca %class.RcString, align 8
  %41 = alloca %"class.AST::Item", align 8
  %42 = alloca i8, align 1
  %43 = alloca %class.Token, align 8
  %44 = alloca %class.Token, align 8
  %45 = alloca %class.Token, align 8
  %46 = alloca %class.Token, align 8
  %47 = alloca i1, align 1
  %48 = alloca %class.RcString, align 8
  %49 = alloca %class.Token, align 8
  %50 = alloca %class.Token, align 8
  %51 = alloca i1, align 1
  %52 = alloca %class.TypeRef, align 8
  %53 = alloca %class.Token, align 8
  %54 = alloca %class.Token, align 8
  %55 = alloca i1, align 1
  %56 = alloca %"class.AST::Item", align 8
  %57 = alloca %"class.AST::Static", align 8
  %58 = alloca %class.TypeRef, align 8
  %59 = alloca %"class.AST::Expr", align 8
  %60 = alloca %"struct.AST::Named", align 8
  %61 = alloca %struct.Span, align 8
  %62 = alloca %struct.ProtoSpan, align 8
  %63 = alloca %"class.AST::AttributeList", align 8
  %64 = alloca %"class.AST::Visibility", align 8
  %65 = alloca %class.RcString, align 8
  %66 = alloca %"class.AST::Item", align 8
  %67 = alloca %class.Token, align 8
  %68 = alloca %class.Token, align 8
  %69 = alloca i1, align 1
  %70 = alloca %class.RcString, align 8
  %71 = alloca %class.Token, align 8
  %72 = alloca %class.Token, align 8
  %73 = alloca i1, align 1
  %74 = alloca %struct.Span, align 8
  %75 = alloca %struct.ProtoSpan, align 8
  %76 = alloca %"class.AST::Item", align 8
  %77 = alloca %"class.AST::TypeAlias", align 8
  %78 = alloca %"class.AST::GenericParams", align 8
  %79 = alloca %class.TypeRef, align 8
  %80 = alloca %struct.Span, align 8
  %81 = alloca %"struct.AST::Named", align 8
  %82 = alloca %struct.Span, align 8
  %83 = alloca %"class.AST::AttributeList", align 8
  %84 = alloca %"class.AST::Visibility", align 8
  %85 = alloca %class.RcString, align 8
  %86 = alloca %"class.AST::Item", align 8
  %87 = alloca %"class.std::vector.122", align 8
  %88 = alloca %"class.std::initializer_list", align 8
  %89 = alloca [3 x i32], align 4
  %90 = alloca %"class.std::allocator.124", align 1
  %91 = alloca i1, align 1
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %9) #8
  %92 = call noundef zeroext i1 @_Z13debug_enabledv()
  %93 = zext i1 %92 to i64
  %94 = select i1 %92, ptr @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %94)
  call void @llvm.lifetime.start.p0(i64 88, ptr %10) #8
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %95 unwind label %134

95:                                               ; preds = %4
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z17Parse_ParentAttrsR11TokenStreamRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(176) %96, ptr noundef nonnull align 8 dereferenceable(24) %97)
          to label %98 unwind label %138

98:                                               ; preds = %95
  store i1 false, ptr %13, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %99 unwind label %138

99:                                               ; preds = %98
  invoke void @_ZN3AST11ExternBlockC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %14)
          to label %100 unwind label %142

100:                                              ; preds = %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %101

101:                                              ; preds = %889, %100
  call void @llvm.lifetime.start.p0(i64 88, ptr %15) #8
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %102)
          to label %103 unwind label %146

103:                                              ; preds = %101
  %104 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %15)
          to label %105 unwind label %150

105:                                              ; preds = %103
  %106 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %104)
          to label %107 unwind label %150

107:                                              ; preds = %105
  %108 = icmp ne i32 %106, 26
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %15) #8
  br i1 %108, label %109, label %896

109:                                              ; preds = %107
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %16, ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %111 unwind label %155

111:                                              ; preds = %109
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %110, ptr noundef %16)
          to label %112 unwind label %159

112:                                              ; preds = %111
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  %113 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z15Parse_ItemAttrsR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::AttributeList") align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %113)
          to label %114 unwind label %163

114:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 40, ptr %18) #8
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %116)
          to label %118 unwind label %167

118:                                              ; preds = %114
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %117, i64 32, i1 false), !tbaa.struct !9
  invoke void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef nonnull align 8 dereferenceable(176) %115, ptr noundef byval(%struct.ParseState) align 8 %19)
          to label %119 unwind label %167

119:                                              ; preds = %118
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %120)
          to label %122 unwind label %171

122:                                              ; preds = %119
  %123 = getelementptr inbounds %struct.ParseState, ptr %121, i32 0, i32 5
  store ptr %17, ptr %123, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #8
  %124 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8 %20, ptr noundef nonnull align 8 dereferenceable(176) %124)
          to label %125 unwind label %175

125:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #8
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z15Parse_PublicityR11TokenStreamb(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %126, i1 noundef zeroext true)
          to label %127 unwind label %179

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 88, ptr %22) #8
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %22, ptr noundef nonnull align 8 dereferenceable(176) %128)
          to label %129 unwind label %183

129:                                              ; preds = %127
  %130 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %22)
          to label %131 unwind label %187

131:                                              ; preds = %129
  %132 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %130)
          to label %133 unwind label %187

133:                                              ; preds = %131
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %22) #8
  switch i32 %132, label %864 [
    i32 88, label %192
    i32 80, label %375
    i32 91, label %667
  ]

134:                                              ; preds = %4
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %11, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %12, align 4
  br label %902

138:                                              ; preds = %98, %95
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %11, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %12, align 4
  br label %901

142:                                              ; preds = %99
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %11, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %901

146:                                              ; preds = %101
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %11, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %12, align 4
  br label %154

150:                                              ; preds = %105, %103
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %11, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #8
  br label %154

154:                                              ; preds = %150, %146
  call void @llvm.lifetime.end.p0(i64 88, ptr %15) #8
  br label %900

155:                                              ; preds = %109
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %11, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %12, align 4
  br label %900

159:                                              ; preds = %111
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %11, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #8
  br label %900

163:                                              ; preds = %112
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %11, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %12, align 4
  br label %895

167:                                              ; preds = %118, %114
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %11, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %12, align 4
  br label %894

171:                                              ; preds = %119
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %11, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %12, align 4
  br label %893

175:                                              ; preds = %122
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %11, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %12, align 4
  br label %892

179:                                              ; preds = %125
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %11, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %12, align 4
  br label %891

183:                                              ; preds = %127
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %11, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %12, align 4
  br label %191

187:                                              ; preds = %131, %129
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %11, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #8
  br label %191

191:                                              ; preds = %187, %183
  call void @llvm.lifetime.end.p0(i64 88, ptr %22) #8
  br label %890

192:                                              ; preds = %133
  br label %193

193:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #8
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %23, ptr noundef nonnull align 8 dereferenceable(176) %194)
          to label %195 unwind label %221

195:                                              ; preds = %193
  %196 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %23)
          to label %197 unwind label %225

197:                                              ; preds = %195
  %198 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %196)
          to label %199 unwind label %225

199:                                              ; preds = %197
  %200 = icmp ne i32 %198, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #8
  br i1 %200, label %201, label %253

201:                                              ; preds = %199
  br label %202

202:                                              ; preds = %201
  %203 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %204 unwind label %230

204:                                              ; preds = %202
  br i1 %203, label %205, label %234

205:                                              ; preds = %204
  %206 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %206, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %208 unwind label %230

208:                                              ; preds = %205
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef @.str.1)
          to label %210 unwind label %230

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef @.str.2)
          to label %212 unwind label %230

212:                                              ; preds = %210
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef @.str.3)
          to label %214 unwind label %230

214:                                              ; preds = %212
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %213, i32 noundef 1392)
          to label %216 unwind label %230

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef @_ZSt3decRSt8ios_base)
          to label %218 unwind label %230

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %220 unwind label %230

220:                                              ; preds = %218
  br label %234

221:                                              ; preds = %193
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %11, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %12, align 4
  br label %229

225:                                              ; preds = %197, %195
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %11, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #8
  br label %229

229:                                              ; preds = %225, %221
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #8
  br label %890

230:                                              ; preds = %693, %691, %689, %687, %685, %683, %680, %677, %218, %216, %214, %212, %210, %208, %205, %202
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %11, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %12, align 4
  br label %890

234:                                              ; preds = %220, %204
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  store i1 true, ptr %25, align 1
  %237 = call ptr @__cxa_allocate_exception(i64 96) #8
  %238 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %24, i32 noundef 14)
          to label %239 unwind label %241

239:                                              ; preds = %236
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %237, ptr noundef nonnull align 8 dereferenceable(176) %238, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %24)
          to label %240 unwind label %245

240:                                              ; preds = %239
  store i1 false, ptr %25, align 1
  invoke void @__cxa_throw(ptr %237, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %245

241:                                              ; preds = %236
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %11, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %12, align 4
  br label %249

245:                                              ; preds = %240, %239
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %11, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #8
  br label %249

249:                                              ; preds = %245, %241
  %250 = load i1, ptr %25, align 1
  br i1 %250, label %251, label %252

251:                                              ; preds = %249
  call void @__cxa_free_exception(ptr %237) #8
  br label %252

252:                                              ; preds = %251, %249
  br label %890

253:                                              ; preds = %199
  br label %254

254:                                              ; preds = %253
  br label %255

255:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %256 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %257 unwind label %295

257:                                              ; preds = %255
  %258 = getelementptr inbounds %struct.Ident, ptr %256, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %258)
          to label %259 unwind label %295

259:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 488, ptr %27) #8
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %261 unwind label %299

261:                                              ; preds = %259
  %262 = invoke i24 @_ZN3AST8Function5Flags11make_unsafeEv()
          to label %263 unwind label %303

263:                                              ; preds = %261
  store i24 %262, ptr %30, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 1 %30, i64 3, i1 false)
  %264 = load i24, ptr %31, align 4
  invoke void @_Z17Parse_FunctionDefR11TokenStreambbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST8Function5FlagsE(ptr dead_on_unwind writable sret(%"class.AST::Function") align 8 %28, ptr noundef nonnull align 8 dereferenceable(176) %260, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef %29, i24 %264)
          to label %265 unwind label %303

265:                                              ; preds = %263
  invoke void @_ZN3AST4ItemC2ENS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(488) %27, ptr noundef %28)
          to label %266 unwind label %307

266:                                              ; preds = %265
  call void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %267

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 88, ptr %32) #8
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %268)
          to label %269 unwind label %312

269:                                              ; preds = %267
  %270 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %32)
          to label %271 unwind label %316

271:                                              ; preds = %269
  %272 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %270)
          to label %273 unwind label %316

273:                                              ; preds = %271
  %274 = icmp ne i32 %272, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %32) #8
  br i1 %274, label %275, label %344

275:                                              ; preds = %273
  br label %276

276:                                              ; preds = %275
  %277 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %278 unwind label %321

278:                                              ; preds = %276
  br i1 %277, label %279, label %325

279:                                              ; preds = %278
  %280 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %280, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %282 unwind label %321

282:                                              ; preds = %279
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef @.str.1)
          to label %284 unwind label %321

284:                                              ; preds = %282
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef @.str.2)
          to label %286 unwind label %321

286:                                              ; preds = %284
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef @.str.3)
          to label %288 unwind label %321

288:                                              ; preds = %286
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %287, i32 noundef 1397)
          to label %290 unwind label %321

290:                                              ; preds = %288
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef @_ZSt3decRSt8ios_base)
          to label %292 unwind label %321

292:                                              ; preds = %290
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %294 unwind label %321

294:                                              ; preds = %292
  br label %325

295:                                              ; preds = %257, %255
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %11, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %12, align 4
  br label %374

299:                                              ; preds = %259
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %11, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %12, align 4
  br label %373

303:                                              ; preds = %263, %261
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %11, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %12, align 4
  br label %311

307:                                              ; preds = %265
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %11, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %12, align 4
  call void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %28) #8
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %373

312:                                              ; preds = %267
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %11, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %12, align 4
  br label %320

316:                                              ; preds = %271, %269
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %11, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #8
  br label %320

320:                                              ; preds = %316, %312
  call void @llvm.lifetime.end.p0(i64 88, ptr %32) #8
  br label %372

321:                                              ; preds = %346, %292, %290, %288, %286, %284, %282, %279, %276
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %11, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %12, align 4
  br label %372

325:                                              ; preds = %294, %278
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  store i1 true, ptr %34, align 1
  %328 = call ptr @__cxa_allocate_exception(i64 96) #8
  %329 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %33, i32 noundef 32)
          to label %330 unwind label %332

330:                                              ; preds = %327
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %328, ptr noundef nonnull align 8 dereferenceable(176) %329, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %33)
          to label %331 unwind label %336

331:                                              ; preds = %330
  store i1 false, ptr %34, align 1
  invoke void @__cxa_throw(ptr %328, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %336

332:                                              ; preds = %327
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %11, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %12, align 4
  br label %340

336:                                              ; preds = %331, %330
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %11, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #8
  br label %340

340:                                              ; preds = %336, %332
  %341 = load i1, ptr %34, align 1
  br i1 %341, label %342, label %343

342:                                              ; preds = %340
  call void @__cxa_free_exception(ptr %328) #8
  br label %343

343:                                              ; preds = %342, %340
  br label %372

344:                                              ; preds = %273
  br label %345

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %348 unwind label %321

348:                                              ; preds = %346
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %347, ptr noundef %37)
          to label %349 unwind label %353

349:                                              ; preds = %348
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %39, ptr noundef nonnull align 8 dereferenceable(36) %21) #8
  invoke void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %350 unwind label %357

350:                                              ; preds = %349
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %41, ptr noundef nonnull align 8 dereferenceable(488) %27) #8
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %35, ptr noundef %36, ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41)
          to label %351 unwind label %361

351:                                              ; preds = %350
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %35)
          to label %352 unwind label %365

352:                                              ; preds = %351
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %35) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %41) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %39) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %27) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr %27) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %889

353:                                              ; preds = %348
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %11, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %12, align 4
  br label %371

357:                                              ; preds = %349
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %11, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %12, align 4
  br label %370

361:                                              ; preds = %350
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %11, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %12, align 4
  br label %369

365:                                              ; preds = %351
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %11, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %12, align 4
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %35) #8
  br label %369

369:                                              ; preds = %365, %361
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %41) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %370

370:                                              ; preds = %369, %357
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %39) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %371

371:                                              ; preds = %370, %353
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  br label %372

372:                                              ; preds = %371, %343, %321, %320
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %27) #8
  br label %373

373:                                              ; preds = %372, %311, %299
  call void @llvm.lifetime.end.p0(i64 488, ptr %27) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %374

374:                                              ; preds = %373, %295
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %890

375:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  store i8 0, ptr %42, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 88, ptr %43) #8
  %376 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %43, ptr noundef nonnull align 8 dereferenceable(176) %376)
          to label %377 unwind label %384

377:                                              ; preds = %375
  %378 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %43)
          to label %379 unwind label %388

379:                                              ; preds = %377
  %380 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %378)
          to label %381 unwind label %388

381:                                              ; preds = %379
  %382 = icmp eq i32 %380, 78
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %43) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %43) #8
  br i1 %382, label %383, label %393

383:                                              ; preds = %381
  store i8 1, ptr %42, align 1, !tbaa !10
  br label %405

384:                                              ; preds = %375
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %11, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %12, align 4
  br label %392

388:                                              ; preds = %379, %377
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %11, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %43) #8
  br label %392

392:                                              ; preds = %388, %384
  call void @llvm.lifetime.end.p0(i64 88, ptr %43) #8
  br label %666

393:                                              ; preds = %381
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %44, ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %395 unwind label %397

395:                                              ; preds = %393
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %394, ptr noundef %44)
          to label %396 unwind label %401

396:                                              ; preds = %395
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %44) #8
  br label %405

397:                                              ; preds = %431, %429, %427, %425, %423, %421, %418, %415, %393
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %11, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %12, align 4
  br label %666

401:                                              ; preds = %395
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %11, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %44) #8
  br label %666

405:                                              ; preds = %396, %383
  br label %406

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 88, ptr %45) #8
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %45, ptr noundef nonnull align 8 dereferenceable(176) %407)
          to label %408 unwind label %434

408:                                              ; preds = %406
  %409 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %45)
          to label %410 unwind label %438

410:                                              ; preds = %408
  %411 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %409)
          to label %412 unwind label %438

412:                                              ; preds = %410
  %413 = icmp ne i32 %411, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %45) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %45) #8
  br i1 %413, label %414, label %462

414:                                              ; preds = %412
  br label %415

415:                                              ; preds = %414
  %416 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %417 unwind label %397

417:                                              ; preds = %415
  br i1 %416, label %418, label %443

418:                                              ; preds = %417
  %419 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %419, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %421 unwind label %397

421:                                              ; preds = %418
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef @.str.1)
          to label %423 unwind label %397

423:                                              ; preds = %421
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %422, ptr noundef @.str.2)
          to label %425 unwind label %397

425:                                              ; preds = %423
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef @.str.3)
          to label %427 unwind label %397

427:                                              ; preds = %425
  %428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %426, i32 noundef 1407)
          to label %429 unwind label %397

429:                                              ; preds = %427
  %430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %428, ptr noundef @_ZSt3decRSt8ios_base)
          to label %431 unwind label %397

431:                                              ; preds = %429
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %433 unwind label %397

433:                                              ; preds = %431
  br label %443

434:                                              ; preds = %406
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %11, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %12, align 4
  br label %442

438:                                              ; preds = %410, %408
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %11, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %45) #8
  br label %442

442:                                              ; preds = %438, %434
  call void @llvm.lifetime.end.p0(i64 88, ptr %45) #8
  br label %666

443:                                              ; preds = %433, %417
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  store i1 true, ptr %47, align 1
  %446 = call ptr @__cxa_allocate_exception(i64 96) #8
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %46, i32 noundef 14)
          to label %448 unwind label %450

448:                                              ; preds = %445
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %446, ptr noundef nonnull align 8 dereferenceable(176) %447, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %46)
          to label %449 unwind label %454

449:                                              ; preds = %448
  store i1 false, ptr %47, align 1
  invoke void @__cxa_throw(ptr %446, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %454

450:                                              ; preds = %445
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %458

454:                                              ; preds = %449, %448
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #8
  br label %458

458:                                              ; preds = %454, %450
  %459 = load i1, ptr %47, align 1
  br i1 %459, label %460, label %461

460:                                              ; preds = %458
  call void @__cxa_free_exception(ptr %446) #8
  br label %461

461:                                              ; preds = %460, %458
  br label %666

462:                                              ; preds = %412
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %465 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %466 unwind label %497

466:                                              ; preds = %464
  %467 = getelementptr inbounds %struct.Ident, ptr %465, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %467)
          to label %468 unwind label %497

468:                                              ; preds = %466
  br label %469

469:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 88, ptr %49) #8
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %49, ptr noundef nonnull align 8 dereferenceable(176) %470)
          to label %471 unwind label %501

471:                                              ; preds = %469
  %472 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %49)
          to label %473 unwind label %505

473:                                              ; preds = %471
  %474 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %472)
          to label %475 unwind label %505

475:                                              ; preds = %473
  %476 = icmp ne i32 %474, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %49) #8
  br i1 %476, label %477, label %533

477:                                              ; preds = %475
  br label %478

478:                                              ; preds = %477
  %479 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %480 unwind label %510

480:                                              ; preds = %478
  br i1 %479, label %481, label %514

481:                                              ; preds = %480
  %482 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %482, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %484 unwind label %510

484:                                              ; preds = %481
  %485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef @.str.1)
          to label %486 unwind label %510

486:                                              ; preds = %484
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %485, ptr noundef @.str.2)
          to label %488 unwind label %510

488:                                              ; preds = %486
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef @.str.3)
          to label %490 unwind label %510

490:                                              ; preds = %488
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %489, i32 noundef 1409)
          to label %492 unwind label %510

492:                                              ; preds = %490
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef @_ZSt3decRSt8ios_base)
          to label %494 unwind label %510

494:                                              ; preds = %492
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %493, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %496 unwind label %510

496:                                              ; preds = %494
  br label %514

497:                                              ; preds = %466, %464
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %11, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %12, align 4
  br label %665

501:                                              ; preds = %469
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %11, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %12, align 4
  br label %509

505:                                              ; preds = %473, %471
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %11, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #8
  br label %509

509:                                              ; preds = %505, %501
  call void @llvm.lifetime.end.p0(i64 88, ptr %49) #8
  br label %664

510:                                              ; preds = %494, %492, %490, %488, %486, %484, %481, %478
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %11, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %12, align 4
  br label %664

514:                                              ; preds = %496, %480
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  store i1 true, ptr %51, align 1
  %517 = call ptr @__cxa_allocate_exception(i64 96) #8
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %50, i32 noundef 33)
          to label %519 unwind label %521

519:                                              ; preds = %516
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %517, ptr noundef nonnull align 8 dereferenceable(176) %518, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %50)
          to label %520 unwind label %525

520:                                              ; preds = %519
  store i1 false, ptr %51, align 1
  invoke void @__cxa_throw(ptr %517, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %525

521:                                              ; preds = %516
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %11, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %12, align 4
  br label %529

525:                                              ; preds = %520, %519
  %526 = landingpad { ptr, i32 }
          cleanup
  %527 = extractvalue { ptr, i32 } %526, 0
  store ptr %527, ptr %11, align 8
  %528 = extractvalue { ptr, i32 } %526, 1
  store i32 %528, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #8
  br label %529

529:                                              ; preds = %525, %521
  %530 = load i1, ptr %51, align 1
  br i1 %530, label %531, label %532

531:                                              ; preds = %529
  call void @__cxa_free_exception(ptr %517) #8
  br label %532

532:                                              ; preds = %531, %529
  br label %664

533:                                              ; preds = %475
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 120, ptr %52) #8
  %536 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind writable sret(%class.TypeRef) align 8 %52, ptr noundef nonnull align 8 dereferenceable(176) %536, i1 noundef zeroext true)
          to label %537 unwind label %566

537:                                              ; preds = %535
  br label %538

538:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 88, ptr %53) #8
  %539 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %53, ptr noundef nonnull align 8 dereferenceable(176) %539)
          to label %540 unwind label %570

540:                                              ; preds = %538
  %541 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %53)
          to label %542 unwind label %574

542:                                              ; preds = %540
  %543 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %541)
          to label %544 unwind label %574

544:                                              ; preds = %542
  %545 = icmp ne i32 %543, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %53) #8
  br i1 %545, label %546, label %602

546:                                              ; preds = %544
  br label %547

547:                                              ; preds = %546
  %548 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %549 unwind label %579

549:                                              ; preds = %547
  br i1 %548, label %550, label %583

550:                                              ; preds = %549
  %551 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %551, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %553 unwind label %579

553:                                              ; preds = %550
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef @.str.1)
          to label %555 unwind label %579

555:                                              ; preds = %553
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef @.str.2)
          to label %557 unwind label %579

557:                                              ; preds = %555
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef @.str.3)
          to label %559 unwind label %579

559:                                              ; preds = %557
  %560 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %558, i32 noundef 1411)
          to label %561 unwind label %579

561:                                              ; preds = %559
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef @_ZSt3decRSt8ios_base)
          to label %563 unwind label %579

563:                                              ; preds = %561
  %564 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %565 unwind label %579

565:                                              ; preds = %563
  br label %583

566:                                              ; preds = %535
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %11, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %12, align 4
  br label %663

570:                                              ; preds = %538
  %571 = landingpad { ptr, i32 }
          cleanup
  %572 = extractvalue { ptr, i32 } %571, 0
  store ptr %572, ptr %11, align 8
  %573 = extractvalue { ptr, i32 } %571, 1
  store i32 %573, ptr %12, align 4
  br label %578

574:                                              ; preds = %542, %540
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %11, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #8
  br label %578

578:                                              ; preds = %574, %570
  call void @llvm.lifetime.end.p0(i64 88, ptr %53) #8
  br label %662

579:                                              ; preds = %563, %561, %559, %557, %555, %553, %550, %547
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %11, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %12, align 4
  br label %662

583:                                              ; preds = %565, %549
  br label %584

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584
  store i1 true, ptr %55, align 1
  %586 = call ptr @__cxa_allocate_exception(i64 96) #8
  %587 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %54, i32 noundef 32)
          to label %588 unwind label %590

588:                                              ; preds = %585
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %586, ptr noundef nonnull align 8 dereferenceable(176) %587, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %54)
          to label %589 unwind label %594

589:                                              ; preds = %588
  store i1 false, ptr %55, align 1
  invoke void @__cxa_throw(ptr %586, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %594

590:                                              ; preds = %585
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %11, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %12, align 4
  br label %598

594:                                              ; preds = %589, %588
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %11, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #8
  br label %598

598:                                              ; preds = %594, %590
  %599 = load i1, ptr %55, align 1
  br i1 %599, label %600, label %601

600:                                              ; preds = %598
  call void @__cxa_free_exception(ptr %586) #8
  br label %601

601:                                              ; preds = %600, %598
  br label %662

602:                                              ; preds = %544
  br label %603

603:                                              ; preds = %602
  br label %604

604:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 488, ptr %56) #8
  %605 = load i8, ptr %42, align 1, !tbaa !10, !range !16, !noundef !17
  %606 = trunc i8 %605 to i1
  %607 = zext i1 %606 to i64
  %608 = select i1 %606, i32 2, i32 1
  invoke void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120) %58, ptr noundef nonnull align 8 dereferenceable(120) %52)
          to label %609 unwind label %619

609:                                              ; preds = %604
  invoke void @_ZN3AST4ExprC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %610 unwind label %623

610:                                              ; preds = %609
  invoke void @_ZN3AST6StaticC2ENS0_5ClassE7TypeRefNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(216) %57, i32 noundef %608, ptr noundef %58, ptr noundef %59)
          to label %611 unwind label %627

611:                                              ; preds = %610
  invoke void @_ZN3AST4ItemC2ENS_6StaticE(ptr noundef nonnull align 8 dereferenceable(488) %56, ptr noundef %57)
          to label %612 unwind label %631

612:                                              ; preds = %611
  call void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %57) #8
  call void @_ZN3AST4ExprD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %58) #8
  %613 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %614 unwind label %637

614:                                              ; preds = %612
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %61, ptr noundef nonnull align 8 dereferenceable(176) %613, ptr noundef %62)
          to label %615 unwind label %641

615:                                              ; preds = %614
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %64, ptr noundef nonnull align 8 dereferenceable(36) %21) #8
  invoke void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %616 unwind label %645

616:                                              ; preds = %615
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %66, ptr noundef nonnull align 8 dereferenceable(488) %56) #8
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %60, ptr noundef %61, ptr noundef %63, ptr noundef %64, ptr noundef %65, ptr noundef %66)
          to label %617 unwind label %649

617:                                              ; preds = %616
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %60)
          to label %618 unwind label %653

618:                                              ; preds = %617
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %60) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %66) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %64) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %56) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr %56) #8
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %52) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr %52) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  br label %889

619:                                              ; preds = %604
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %11, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %12, align 4
  br label %661

623:                                              ; preds = %609
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %11, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %12, align 4
  br label %636

627:                                              ; preds = %610
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %11, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %12, align 4
  br label %635

631:                                              ; preds = %611
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %11, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %12, align 4
  call void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %57) #8
  br label %635

635:                                              ; preds = %631, %627
  call void @_ZN3AST4ExprD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  br label %636

636:                                              ; preds = %635, %623
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %58) #8
  br label %661

637:                                              ; preds = %612
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %11, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %12, align 4
  br label %660

641:                                              ; preds = %614
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %11, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %12, align 4
  br label %659

645:                                              ; preds = %615
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %11, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %12, align 4
  br label %658

649:                                              ; preds = %616
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %11, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %12, align 4
  br label %657

653:                                              ; preds = %617
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %11, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %12, align 4
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %60) #8
  br label %657

657:                                              ; preds = %653, %649
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %66) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %658

658:                                              ; preds = %657, %645
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %64) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br label %659

659:                                              ; preds = %658, %641
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  br label %660

660:                                              ; preds = %659, %637
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %56) #8
  br label %661

661:                                              ; preds = %660, %636, %619
  call void @llvm.lifetime.end.p0(i64 488, ptr %56) #8
  br label %662

662:                                              ; preds = %661, %601, %579, %578
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %52) #8
  br label %663

663:                                              ; preds = %662, %566
  call void @llvm.lifetime.end.p0(i64 120, ptr %52) #8
  br label %664

664:                                              ; preds = %663, %532, %510, %509
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %665

665:                                              ; preds = %664, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %666

666:                                              ; preds = %665, %461, %442, %401, %397, %392
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  br label %890

667:                                              ; preds = %133
  br label %668

668:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 88, ptr %67) #8
  %669 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %67, ptr noundef nonnull align 8 dereferenceable(176) %669)
          to label %670 unwind label %696

670:                                              ; preds = %668
  %671 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %67)
          to label %672 unwind label %700

672:                                              ; preds = %670
  %673 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %671)
          to label %674 unwind label %700

674:                                              ; preds = %672
  %675 = icmp ne i32 %673, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %67) #8
  br i1 %675, label %676, label %724

676:                                              ; preds = %674
  br label %677

677:                                              ; preds = %676
  %678 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %679 unwind label %230

679:                                              ; preds = %677
  br i1 %678, label %680, label %705

680:                                              ; preds = %679
  %681 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %682 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %681, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %683 unwind label %230

683:                                              ; preds = %680
  %684 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef @.str.1)
          to label %685 unwind label %230

685:                                              ; preds = %683
  %686 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %684, ptr noundef @.str.2)
          to label %687 unwind label %230

687:                                              ; preds = %685
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %686, ptr noundef @.str.3)
          to label %689 unwind label %230

689:                                              ; preds = %687
  %690 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %688, i32 noundef 1417)
          to label %691 unwind label %230

691:                                              ; preds = %689
  %692 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %690, ptr noundef @_ZSt3decRSt8ios_base)
          to label %693 unwind label %230

693:                                              ; preds = %691
  %694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %692, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %695 unwind label %230

695:                                              ; preds = %693
  br label %705

696:                                              ; preds = %668
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %11, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %12, align 4
  br label %704

700:                                              ; preds = %672, %670
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %11, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #8
  br label %704

704:                                              ; preds = %700, %696
  call void @llvm.lifetime.end.p0(i64 88, ptr %67) #8
  br label %890

705:                                              ; preds = %695, %679
  br label %706

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  store i1 true, ptr %69, align 1
  %708 = call ptr @__cxa_allocate_exception(i64 96) #8
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %68, i32 noundef 14)
          to label %710 unwind label %712

710:                                              ; preds = %707
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %708, ptr noundef nonnull align 8 dereferenceable(176) %709, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %68)
          to label %711 unwind label %716

711:                                              ; preds = %710
  store i1 false, ptr %69, align 1
  invoke void @__cxa_throw(ptr %708, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %716

712:                                              ; preds = %707
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %11, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %12, align 4
  br label %720

716:                                              ; preds = %711, %710
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %11, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %68) #8
  br label %720

720:                                              ; preds = %716, %712
  %721 = load i1, ptr %69, align 1
  br i1 %721, label %722, label %723

722:                                              ; preds = %720
  call void @__cxa_free_exception(ptr %708) #8
  br label %723

723:                                              ; preds = %722, %720
  br label %890

724:                                              ; preds = %674
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %727 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %728 unwind label %759

728:                                              ; preds = %726
  %729 = getelementptr inbounds %struct.Ident, ptr %727, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %729)
          to label %730 unwind label %759

730:                                              ; preds = %728
  br label %731

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 88, ptr %71) #8
  %732 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %71, ptr noundef nonnull align 8 dereferenceable(176) %732)
          to label %733 unwind label %763

733:                                              ; preds = %731
  %734 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %71)
          to label %735 unwind label %767

735:                                              ; preds = %733
  %736 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %734)
          to label %737 unwind label %767

737:                                              ; preds = %735
  %738 = icmp ne i32 %736, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %71) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %71) #8
  br i1 %738, label %739, label %795

739:                                              ; preds = %737
  br label %740

740:                                              ; preds = %739
  %741 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %742 unwind label %772

742:                                              ; preds = %740
  br i1 %741, label %743, label %776

743:                                              ; preds = %742
  %744 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %744, ptr noundef @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %746 unwind label %772

746:                                              ; preds = %743
  %747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef @.str.1)
          to label %748 unwind label %772

748:                                              ; preds = %746
  %749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %747, ptr noundef @.str.2)
          to label %750 unwind label %772

750:                                              ; preds = %748
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %749, ptr noundef @.str.3)
          to label %752 unwind label %772

752:                                              ; preds = %750
  %753 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %751, i32 noundef 1419)
          to label %754 unwind label %772

754:                                              ; preds = %752
  %755 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %753, ptr noundef @_ZSt3decRSt8ios_base)
          to label %756 unwind label %772

756:                                              ; preds = %754
  %757 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %755, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %758 unwind label %772

758:                                              ; preds = %756
  br label %776

759:                                              ; preds = %728, %726
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %11, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %12, align 4
  br label %863

763:                                              ; preds = %731
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %11, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %12, align 4
  br label %771

767:                                              ; preds = %735, %733
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %11, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %71) #8
  br label %771

771:                                              ; preds = %767, %763
  call void @llvm.lifetime.end.p0(i64 88, ptr %71) #8
  br label %862

772:                                              ; preds = %756, %754, %752, %750, %748, %746, %743, %740
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %11, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %12, align 4
  br label %862

776:                                              ; preds = %758, %742
  br label %777

777:                                              ; preds = %776
  br label %778

778:                                              ; preds = %777
  store i1 true, ptr %73, align 1
  %779 = call ptr @__cxa_allocate_exception(i64 96) #8
  %780 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %72, i32 noundef 32)
          to label %781 unwind label %783

781:                                              ; preds = %778
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %779, ptr noundef nonnull align 8 dereferenceable(176) %780, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %72)
          to label %782 unwind label %787

782:                                              ; preds = %781
  store i1 false, ptr %73, align 1
  invoke void @__cxa_throw(ptr %779, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %787

783:                                              ; preds = %778
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %11, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %12, align 4
  br label %791

787:                                              ; preds = %782, %781
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %11, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %12, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %72) #8
  br label %791

791:                                              ; preds = %787, %783
  %792 = load i1, ptr %73, align 1
  br i1 %792, label %793, label %794

793:                                              ; preds = %791
  call void @__cxa_free_exception(ptr %779) #8
  br label %794

794:                                              ; preds = %793, %791
  br label %862

795:                                              ; preds = %737
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %798 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %799 unwind label %810

799:                                              ; preds = %797
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8 %74, ptr noundef nonnull align 8 dereferenceable(176) %798, ptr noundef %75)
          to label %800 unwind label %814

800:                                              ; preds = %799
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #8
  call void @llvm.lifetime.start.p0(i64 488, ptr %76) #8
  invoke void @_ZN3AST13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78)
          to label %801 unwind label %818

801:                                              ; preds = %800
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %802 unwind label %822

802:                                              ; preds = %801
  invoke void @_ZN7TypeRefC2E4Span(ptr noundef nonnull align 8 dereferenceable(120) %79, ptr noundef %80)
          to label %803 unwind label %826

803:                                              ; preds = %802
  invoke void @_ZN3AST9TypeAliasC2ENS_13GenericParamsE7TypeRef(ptr noundef nonnull align 8 dereferenceable(216) %77, ptr noundef %78, ptr noundef %79)
          to label %804 unwind label %830

804:                                              ; preds = %803
  invoke void @_ZN3AST4ItemC2ENS_9TypeAliasE(ptr noundef nonnull align 8 dereferenceable(488) %76, ptr noundef %77)
          to label %805 unwind label %834

805:                                              ; preds = %804
  call void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %77) #8
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  call void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #8
  invoke void @_ZN4SpanC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %806 unwind label %841

806:                                              ; preds = %805
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %84, ptr noundef nonnull align 8 dereferenceable(36) %21) #8
  invoke void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %807 unwind label %845

807:                                              ; preds = %806
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %86, ptr noundef nonnull align 8 dereferenceable(488) %76) #8
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %81, ptr noundef %82, ptr noundef %83, ptr noundef %84, ptr noundef %85, ptr noundef %86)
          to label %808 unwind label %849

808:                                              ; preds = %807
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef %81)
          to label %809 unwind label %853

809:                                              ; preds = %808
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %81) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %86) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %84) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %76) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr %76) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %889

810:                                              ; preds = %797
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %11, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %12, align 4
  br label %861

814:                                              ; preds = %799
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %11, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %12, align 4
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #8
  br label %861

818:                                              ; preds = %800
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %11, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %12, align 4
  br label %860

822:                                              ; preds = %801
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %11, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %12, align 4
  br label %840

826:                                              ; preds = %802
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %11, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %12, align 4
  br label %839

830:                                              ; preds = %803
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %11, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %12, align 4
  br label %838

834:                                              ; preds = %804
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %11, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %12, align 4
  call void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %77) #8
  br label %838

838:                                              ; preds = %834, %830
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #8
  br label %839

839:                                              ; preds = %838, %826
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #8
  br label %840

840:                                              ; preds = %839, %822
  call void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #8
  br label %860

841:                                              ; preds = %805
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %11, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %12, align 4
  br label %859

845:                                              ; preds = %806
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %11, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %12, align 4
  br label %858

849:                                              ; preds = %807
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %11, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %12, align 4
  br label %857

853:                                              ; preds = %808
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %11, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %12, align 4
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %81) #8
  br label %857

857:                                              ; preds = %853, %849
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %86) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  br label %858

858:                                              ; preds = %857, %845
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %84) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %859

859:                                              ; preds = %858, %841
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %76) #8
  br label %860

860:                                              ; preds = %859, %840, %818
  call void @llvm.lifetime.end.p0(i64 488, ptr %76) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %861

861:                                              ; preds = %860, %814, %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %862

862:                                              ; preds = %861, %794, %772, %771
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %863

863:                                              ; preds = %862, %759
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %890

864:                                              ; preds = %133
  store i1 true, ptr %91, align 1
  %865 = call ptr @__cxa_allocate_exception(i64 96) #8
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %89) #8
  store i32 88, ptr %89, align 4, !tbaa !18
  %867 = getelementptr inbounds i32, ptr %89, i64 1
  store i32 80, ptr %867, align 4, !tbaa !18
  %868 = getelementptr inbounds i32, ptr %89, i64 2
  store i32 91, ptr %868, align 4, !tbaa !18
  %869 = getelementptr inbounds %"class.std::initializer_list", ptr %88, i32 0, i32 0
  store ptr %89, ptr %869, align 8, !tbaa !20
  %870 = getelementptr inbounds %"class.std::initializer_list", ptr %88, i32 0, i32 1
  store i64 3, ptr %870, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #8
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  %871 = getelementptr inbounds { ptr, i64 }, ptr %88, i32 0, i32 0
  %872 = load ptr, ptr %871, align 8
  %873 = getelementptr inbounds { ptr, i64 }, ptr %88, i32 0, i32 1
  %874 = load i64, ptr %873, align 8
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr %872, i64 %874, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %875 unwind label %877

875:                                              ; preds = %864
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %865, ptr noundef nonnull align 8 dereferenceable(176) %866, ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef %87)
          to label %876 unwind label %881

876:                                              ; preds = %875
  store i1 false, ptr %91, align 1
  invoke void @__cxa_throw(ptr %865, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #9
          to label %908 unwind label %881

877:                                              ; preds = %864
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %11, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %12, align 4
  br label %885

881:                                              ; preds = %876, %875
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %11, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %12, align 4
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #8
  br label %885

885:                                              ; preds = %881, %877
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %89) #8
  %886 = load i1, ptr %91, align 1
  br i1 %886, label %887, label %888

887:                                              ; preds = %885
  call void @__cxa_free_exception(ptr %865) #8
  br label %888

888:                                              ; preds = %887, %885
  br label %890

889:                                              ; preds = %809, %618, %352
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %21) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #8
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %101, !llvm.loop !24

890:                                              ; preds = %888, %863, %723, %704, %666, %374, %252, %230, %229, %191
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %21) #8
  br label %891

891:                                              ; preds = %890, %179
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  br label %892

892:                                              ; preds = %891, %175
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #8
  br label %893

893:                                              ; preds = %892, %171
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  br label %894

894:                                              ; preds = %893, %167
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  br label %895

895:                                              ; preds = %894, %163
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %900

896:                                              ; preds = %107
  store i1 true, ptr %13, align 1
  %897 = load i1, ptr %13, align 1
  br i1 %897, label %899, label %898

898:                                              ; preds = %896
  call void @_ZN3AST11ExternBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %0) #8
  br label %899

899:                                              ; preds = %898, %896
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #8
  call void @llvm.lifetime.end.p0(i64 88, ptr %10) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #8
  ret void

900:                                              ; preds = %895, %159, %155, %154
  call void @_ZN3AST11ExternBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %0) #8
  br label %901

901:                                              ; preds = %900, %142, %138
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #8
  br label %902

902:                                              ; preds = %901, %134
  call void @llvm.lifetime.end.p0(i64 88, ptr %10) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #8
  br label %903

903:                                              ; preds = %902
  %904 = load ptr, ptr %11, align 8
  %905 = load i32, ptr %12, align 4
  %906 = insertvalue { ptr, i32 } poison, ptr %904, 0
  %907 = insertvalue { ptr, i32 } %906, i32 %905, 1
  resume { ptr, i32 } %907

908:                                              ; preds = %876, %782, %711, %589, %520, %449, %331, %240
  unreachable
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i24 @_ZN3AST8Function5Flags11make_unsafeEv() #0 align 2

declare void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST11ExternBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6 align 2

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { nounwind "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 = { 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 #6 = { 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { noreturn }

!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 = !{i64 0, i64 1, !10, i64 1, i64 1, !10, i64 2, i64 1, !10, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !5}
!10 = !{!11, !11, i64 0}
!11 = !{!"bool", !7, i64 0}
!12 = !{!13, !6, i64 24}
!13 = !{!"_ZTS10ParseState", !11, i64 0, !11, i64 1, !11, i64 2, !6, i64 8, !6, i64 16, !6, i64 24}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = !{!19, !19, i64 0}
!19 = !{!"_ZTS10eTokenType", !7, i64 0}
!20 = !{!21, !6, i64 0}
!21 = !{!"_ZTSSt16initializer_listI10eTokenTypeE", !6, i64 0, !22, i64 8}
!22 = !{!"long", !7, i64 0}
!23 = !{!21, !22, i64 8}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}


; 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"

%"class.AST::Visibility" = type <{ %"class.std::shared_ptr", %"class.std::shared_ptr.0", i32, [4 x i8] }>
%"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 }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.AST::AttributeList" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Attribute, std::allocator<AST::Attribute>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ProtoSpan = type { %struct.Span, %class.RcString, i32, i32 }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.102", %"class.std::vector.102", %"class.std::vector.107" }
%"class.std::vector.102" = type { %"struct.std::_Vector_base.103" }
%"struct.std::_Vector_base.103" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.107" = type { %"struct.std::_Vector_base.108" }
%"struct.std::_Vector_base.108" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Function" = type { %struct.Span, %"class.AST::GenericParams", %"class.AST::Expr", %class.TypeRef, %"class.std::vector.150", i8, %"class.std::__cxx11::basic_string", %"struct.AST::Function::Flags", [5 x i8], %"struct.AST::Function::Markings" }
%"class.AST::GenericParams" = type { %"class.std::vector.112", %"class.std::vector.117" }
%"class.std::vector.112" = type { %"struct.std::_Vector_base.113" }
%"struct.std::_Vector_base.113" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.117" = type { %"struct.std::_Vector_base.118" }
%"struct.std::_Vector_base.118" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Expr" = type { %"class.std::shared_ptr.99" }
%"class.std::shared_ptr.99" = type { %"class.std::__shared_ptr.100" }
%"class.std::__shared_ptr.100" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.150" = type { %"struct.std::_Vector_base.151" }
%"struct.std::_Vector_base.151" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Function::Arg, std::allocator<AST::Function::Arg>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Function::Flags" = type { i8, i8, i8 }
%"struct.AST::Function::Markings" = type <{ i32, i8, [3 x i8], %"class.std::vector.155", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::vector.155" = type { %"struct.std::_Vector_base.156" }
%"struct.std::_Vector_base.156" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%"class.AST::ExternBlock" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.182", %"class.std::vector.187" }
%"class.std::vector.182" = type { %"struct.std::_Vector_base.183" }
%"struct.std::_Vector_base.183" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.187" = type { %"struct.std::_Vector_base.188" }
%"struct.std::_Vector_base.188" = type { %"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExternBlock::Link, std::allocator<AST::ExternBlock::Link>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.SavedParseState = type { ptr, %struct.ParseState }
%"class.AST::Item" = type { i32, %"union.AST::Item::DataUnion" }
%"union.AST::Item::DataUnion" = type { %"class.AST::Module" }
%"class.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23", %"struct.AST::Module::FileInfo", i8, i8, %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::vector.33", %"class.std::vector.38", %"class.std::vector.43" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<AST::Named<AST::Item>>, std::allocator<std::unique_ptr<AST::Named<AST::Item>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<AST::Module>, std::allocator<std::shared_ptr<AST::Module>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::FileInfo" = type { i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::AbsolutePath, std::allocator<AST::AbsolutePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::MacroImport, std::allocator<AST::Module::MacroImport>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.AST::Static" = type { i32, %class.TypeRef, %"class.AST::Expr", %"struct.AST::Static::Markings" }
%"struct.AST::Static::Markings" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.AST::TypeAlias" = type { %"class.AST::GenericParams", %"class.AST::GenericParams", %class.TypeRef }
%"class.std::vector.122" = type { %"struct.std::_Vector_base.123" }
%"struct.std::_Vector_base.123" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl" = type { %"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<eTokenType, std::allocator<eTokenType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.124" = type { i8 }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Parse_PublicityR11TokenStreamb(ptr dead_on_unwind noalias writable sret(%"class.AST::Visibility") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) local_unnamed_addr #0

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

declare void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #0 align 2

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

; Function Attrs: nounwind
declare void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #4

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef, ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) unnamed_addr #2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN10ParseError10UnexpectedD1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #0 align 2

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

declare void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Parse_ItemAttrsR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::AttributeList") align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #0

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

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

; Function Attrs: nounwind
declare void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4

declare void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind writable sret(%struct.ProtoSpan) align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #4

declare void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind writable sret(%struct.Span) align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #0 align 2

declare void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind writable sret(%class.TypeRef) align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext) local_unnamed_addr #2

declare void @_ZN3AST4ExprC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17Parse_FunctionDefR11TokenStreambbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST8Function5FlagsE(ptr dead_on_unwind noalias writable sret(%"class.AST::Function") align 8, ptr noundef nonnull align 8 dereferenceable(176), i1 noundef zeroext, i1 noundef zeroext, ptr noundef, i24) local_unnamed_addr #0

declare void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST9TypeAliasC2ENS_13GenericParamsE7TypeRef(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef, ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(176), ptr noundef byval(%struct.ParseState) align 8) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36)) unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST6StaticC2ENS0_5ClassE7TypeRefNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(216), i32 noundef, ptr noundef, ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_6StaticE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7TypeRefC2E4Span(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_9TypeAliasE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4ItemC2ENS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(488), ptr noundef) unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17Parse_ParentAttrsR11TokenStreamRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE(ptr dead_on_unwind noalias writable sret(%"class.AST::ExternBlock") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %3) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %class.Token, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %class.Token, align 8
  %9 = alloca %class.Token, align 8
  %10 = alloca %"class.AST::AttributeList", align 8
  %11 = alloca %class.SavedParseState, align 8
  %12 = alloca %struct.ProtoSpan, align 8
  %13 = alloca %"class.AST::Visibility", align 8
  %14 = alloca %class.Token, align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca %class.Token, align 8
  %17 = alloca %class.RcString, align 8
  %18 = alloca %"class.AST::Item", align 8
  %19 = alloca %"class.AST::Function", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %class.Token, align 8
  %22 = alloca %class.Token, align 8
  %23 = alloca %"struct.AST::Named", align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %struct.ProtoSpan, align 8
  %26 = alloca %"class.AST::AttributeList", align 8
  %27 = alloca %"class.AST::Visibility", align 8
  %28 = alloca %class.RcString, align 8
  %29 = alloca %"class.AST::Item", align 8
  %30 = alloca %class.Token, align 8
  %31 = alloca %class.Token, align 8
  %32 = alloca %class.Token, align 8
  %33 = alloca %class.Token, align 8
  %34 = alloca %class.RcString, align 8
  %35 = alloca %class.Token, align 8
  %36 = alloca %class.Token, align 8
  %37 = alloca %class.TypeRef, align 8
  %38 = alloca %class.Token, align 8
  %39 = alloca %class.Token, align 8
  %40 = alloca %"class.AST::Item", align 8
  %41 = alloca %"class.AST::Static", align 8
  %42 = alloca %class.TypeRef, align 8
  %43 = alloca %"class.AST::Expr", align 8
  %44 = alloca %"struct.AST::Named", align 8
  %45 = alloca %struct.Span, align 8
  %46 = alloca %struct.ProtoSpan, align 8
  %47 = alloca %"class.AST::AttributeList", align 8
  %48 = alloca %"class.AST::Visibility", align 8
  %49 = alloca %class.RcString, align 8
  %50 = alloca %"class.AST::Item", align 8
  %51 = alloca %class.Token, align 8
  %52 = alloca %class.Token, align 8
  %53 = alloca %class.RcString, align 8
  %54 = alloca %class.Token, align 8
  %55 = alloca %class.Token, align 8
  %56 = alloca %struct.Span, align 8
  %57 = alloca %struct.ProtoSpan, align 8
  %58 = alloca %"class.AST::Item", align 8
  %59 = alloca %"class.AST::TypeAlias", align 8
  %60 = alloca %"class.AST::GenericParams", align 8
  %61 = alloca %class.TypeRef, align 8
  %62 = alloca %struct.Span, align 8
  %63 = alloca %"struct.AST::Named", align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.AST::AttributeList", align 8
  %66 = alloca %"class.AST::Visibility", align 8
  %67 = alloca %class.RcString, align 8
  %68 = alloca %"class.AST::Item", align 8
  %69 = alloca %"class.std::vector.122", align 8
  %70 = alloca [3 x i32], align 4
  %71 = alloca %"class.std::allocator.124", align 1
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #7
  %72 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %73 = select i1 %72, ptr @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %73)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %6) #7
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %74 unwind label %95

74:                                               ; preds = %4
  invoke void @_Z17Parse_ParentAttrsR11TokenStreamRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %75 unwind label %97

75:                                               ; preds = %74
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %76 unwind label %97

76:                                               ; preds = %75
  call void @_ZN3AST11ExternBlockC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %7)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %77

77:                                               ; preds = %527, %76
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %8) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %8, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %78 unwind label %99

78:                                               ; preds = %77
  %79 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %8)
          to label %80 unwind label %101

80:                                               ; preds = %78
  %81 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %79)
  %.not = icmp eq i32 %81, 26
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %8) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %8) #7
  br i1 %.not, label %532, label %82

82:                                               ; preds = %80
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %83 unwind label %104

83:                                               ; preds = %82
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %9)
          to label %84 unwind label %106

84:                                               ; preds = %83
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  invoke void @_Z15Parse_ItemAttrsR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::AttributeList") align 8 %10, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %85 unwind label %108

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #7
  %86 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull byval(%struct.ParseState) align 8 %86)
  %87 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %88 = getelementptr inbounds i8, ptr %87, i64 24
  store ptr %10, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  invoke void @_ZNK11TokenStream10start_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.ProtoSpan) align 8 %12, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %89 unwind label %110

89:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #7
  invoke void @_Z15Parse_PublicityR11TokenStreamb(ptr dead_on_unwind nonnull writable sret(%"class.AST::Visibility") align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %1, i1 noundef zeroext true)
          to label %90 unwind label %112

90:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %14) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %14, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %91 unwind label %114

91:                                               ; preds = %90
  %92 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %14)
          to label %93 unwind label %116

93:                                               ; preds = %91
  %94 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %92)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #7
  switch i32 %94, label %517 [
    i32 88, label %119
    i32 80, label %228
    i32 91, label %403
  ]

95:                                               ; preds = %4
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %535

97:                                               ; preds = %75, %74
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %534

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

101:                                              ; preds = %78
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %8) #7
  br label %103

103:                                              ; preds = %101, %99
  %.pn = phi { ptr, i32 } [ %102, %101 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %8) #7
  br label %533

104:                                              ; preds = %82
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %533

106:                                              ; preds = %83
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #7
  br label %533

108:                                              ; preds = %84
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %531

110:                                              ; preds = %85
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %530

112:                                              ; preds = %89
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %529

114:                                              ; preds = %90
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %118

116:                                              ; preds = %91
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #7
  br label %118

118:                                              ; preds = %116, %114
  %.pn114 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #7
  br label %528

119:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %15) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %120 unwind label %142

120:                                              ; preds = %119
  %121 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %15)
          to label %122 unwind label %144

122:                                              ; preds = %120
  %123 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %121)
  %.not168 = icmp eq i32 %123, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %15) #7
  br i1 %.not168, label %158, label %124

124:                                              ; preds = %122
  %125 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %126 unwind label %147

126:                                              ; preds = %124
  br i1 %125, label %127, label %149

127:                                              ; preds = %126
  %128 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %128, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %130 unwind label %147

130:                                              ; preds = %127
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @.str.1)
          to label %132 unwind label %147

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull @.str.2)
          to label %134 unwind label %147

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @.str.3)
          to label %136 unwind label %147

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %135, i32 noundef 1392)
          to label %138 unwind label %147

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %140 unwind label %147

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %149 unwind label %147

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

144:                                              ; preds = %120
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #7
  br label %146

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

147:                                              ; preds = %424, %422, %420, %418, %416, %414, %411, %408, %140, %138, %136, %134, %132, %130, %127, %124
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %528

149:                                              ; preds = %140, %126
  %150 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %16, i32 noundef 14)
          to label %151 unwind label %.thread

151:                                              ; preds = %149
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %150, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %16)
          to label %153 unwind label %.thread196

.thread196:                                       ; preds = %151
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #7
  br label %157

153:                                              ; preds = %151
  invoke void @__cxa_throw(ptr nonnull %150, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %155

.thread:                                          ; preds = %149
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %153
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #7
  br label %528

157:                                              ; preds = %.thread196, %.thread
  %.pn182195 = phi { ptr, i32 } [ %154, %.thread ], [ %152, %.thread196 ]
  call void @__cxa_free_exception(ptr %150) #7
  br label %528

158:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %159 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %160 unwind label %189

160:                                              ; preds = %158
  %161 = getelementptr inbounds i8, ptr %159, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %161)
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %162 unwind label %191

162:                                              ; preds = %160
  %163 = invoke i24 @_ZN3AST8Function5Flags11make_unsafeEv()
          to label %164 unwind label %193

164:                                              ; preds = %162
  invoke void @_Z17Parse_FunctionDefR11TokenStreambbNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST8Function5FlagsE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Function") align 8 %19, ptr noundef nonnull align 8 dereferenceable(176) %1, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %20, i24 %163)
          to label %165 unwind label %193

165:                                              ; preds = %164
  invoke void @_ZN3AST4ItemC2ENS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(488) %18, ptr noundef nonnull %19)
          to label %166 unwind label %195

166:                                              ; preds = %165
  call void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %21) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %167 unwind label %198

167:                                              ; preds = %166
  %168 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %21)
          to label %169 unwind label %200

169:                                              ; preds = %167
  %170 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  %.not173 = icmp eq i32 %170, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %21) #7
  br i1 %.not173, label %212, label %171

171:                                              ; preds = %169
  %172 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %173 unwind label %.loopexit.split-lp239

173:                                              ; preds = %171
  br i1 %172, label %174, label %203

174:                                              ; preds = %173
  %175 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %175, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %177 unwind label %.loopexit.split-lp239

177:                                              ; preds = %174
  %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull @.str.1)
          to label %179 unwind label %.loopexit.split-lp239

179:                                              ; preds = %177
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull @.str.2)
          to label %181 unwind label %.loopexit.split-lp239

181:                                              ; preds = %179
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull @.str.3)
          to label %183 unwind label %.loopexit.split-lp239

183:                                              ; preds = %181
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %182, i32 noundef 1397)
          to label %185 unwind label %.loopexit.split-lp239

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %187 unwind label %.loopexit.split-lp239

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %203 unwind label %.loopexit.split-lp239

189:                                              ; preds = %158
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %227

191:                                              ; preds = %160
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %226

193:                                              ; preds = %164, %162
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %165
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %19) #7
  br label %197

197:                                              ; preds = %195, %193
  %.pn169 = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %226

198:                                              ; preds = %166
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %202

200:                                              ; preds = %167
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #7
  br label %202

202:                                              ; preds = %200, %198
  %.pn171 = phi { ptr, i32 } [ %201, %200 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %21) #7
  br label %225

.loopexit238:                                     ; preds = %212
  %lpad.loopexit240 = landingpad { ptr, i32 }
          cleanup
  br label %225

.loopexit.split-lp239:                            ; preds = %171, %174, %177, %179, %181, %183, %185, %187
  %lpad.loopexit.split-lp241 = landingpad { ptr, i32 }
          cleanup
  br label %225

203:                                              ; preds = %187, %173
  %204 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %22, i32 noundef 32)
          to label %205 unwind label %.thread198

205:                                              ; preds = %203
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %204, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %22)
          to label %207 unwind label %.thread202

.thread202:                                       ; preds = %205
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #7
  br label %211

207:                                              ; preds = %205
  invoke void @__cxa_throw(ptr nonnull %204, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %209

.thread198:                                       ; preds = %203
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %211

209:                                              ; preds = %207
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #7
  br label %225

211:                                              ; preds = %.thread202, %.thread198
  %.pn177201 = phi { ptr, i32 } [ %208, %.thread198 ], [ %206, %.thread202 ]
  call void @__cxa_free_exception(ptr %204) #7
  br label %225

212:                                              ; preds = %169
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %213 unwind label %.loopexit238

213:                                              ; preds = %212
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %24, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %25)
          to label %214 unwind label %217

214:                                              ; preds = %213
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %27, ptr noundef nonnull align 8 dereferenceable(36) %13) #7
  call void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %29, ptr noundef nonnull align 8 dereferenceable(488) %18) #7
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %23, ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29)
          to label %215 unwind label %219

215:                                              ; preds = %214
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %23)
          to label %216 unwind label %221

216:                                              ; preds = %215
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %23) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %29) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %27) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %18) #7
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %18) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %527

217:                                              ; preds = %213
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %224

219:                                              ; preds = %214
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %215
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %23) #7
  br label %223

223:                                              ; preds = %221, %219
  %.pn174 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %29) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %27) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br label %224

224:                                              ; preds = %223, %217
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %223 ], [ %218, %217 ]
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  br label %225

225:                                              ; preds = %.loopexit238, %.loopexit.split-lp239, %209, %211, %224, %202
  %.pn177.pn = phi { ptr, i32 } [ %.pn177201, %211 ], [ %210, %209 ], [ %.pn174.pn, %224 ], [ %.pn171, %202 ], [ %lpad.loopexit240, %.loopexit238 ], [ %lpad.loopexit.split-lp241, %.loopexit.split-lp239 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %18) #7
  br label %226

226:                                              ; preds = %225, %197, %191
  %.pn177.pn.pn = phi { ptr, i32 } [ %.pn177.pn, %225 ], [ %.pn169, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %18) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br label %227

227:                                              ; preds = %226, %189
  %.pn177.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn, %226 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %528

228:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %30) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %30, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %229 unwind label %234

229:                                              ; preds = %228
  %230 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %30)
          to label %231 unwind label %236

231:                                              ; preds = %229
  %232 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %230)
  %233 = icmp eq i32 %232, 78
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %30) #7
  br i1 %233, label %244, label %239

234:                                              ; preds = %228
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %229
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #7
  br label %238

238:                                              ; preds = %236, %234
  %.pn136 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %30) #7
  br label %528

239:                                              ; preds = %231
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %31, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %240 unwind label %.loopexit

240:                                              ; preds = %239
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %31)
          to label %241 unwind label %242

241:                                              ; preds = %240
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #7
  br label %244

.loopexit:                                        ; preds = %239
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %528

.loopexit.split-lp:                               ; preds = %249, %252, %255, %257, %259, %261, %263, %265
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %528

242:                                              ; preds = %240
  %243 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #7
  br label %528

244:                                              ; preds = %231, %241
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %32) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %245 unwind label %267

245:                                              ; preds = %244
  %246 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %32)
          to label %247 unwind label %269

247:                                              ; preds = %245
  %248 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %246)
  %.not140 = icmp eq i32 %248, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %32) #7
  br i1 %.not140, label %281, label %249

249:                                              ; preds = %247
  %250 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %251 unwind label %.loopexit.split-lp

251:                                              ; preds = %249
  br i1 %250, label %252, label %272

252:                                              ; preds = %251
  %253 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %253, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %255 unwind label %.loopexit.split-lp

255:                                              ; preds = %252
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef nonnull @.str.1)
          to label %257 unwind label %.loopexit.split-lp

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull @.str.2)
          to label %259 unwind label %.loopexit.split-lp

259:                                              ; preds = %257
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull @.str.3)
          to label %261 unwind label %.loopexit.split-lp

261:                                              ; preds = %259
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %260, i32 noundef 1407)
          to label %263 unwind label %.loopexit.split-lp

263:                                              ; preds = %261
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %265 unwind label %.loopexit.split-lp

265:                                              ; preds = %263
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %272 unwind label %.loopexit.split-lp

267:                                              ; preds = %244
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %271

269:                                              ; preds = %245
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #7
  br label %271

271:                                              ; preds = %269, %267
  %.pn138 = phi { ptr, i32 } [ %270, %269 ], [ %268, %267 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %32) #7
  br label %528

272:                                              ; preds = %265, %251
  %273 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %33, i32 noundef 14)
          to label %274 unwind label %.thread204

274:                                              ; preds = %272
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %273, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %33)
          to label %276 unwind label %.thread208

.thread208:                                       ; preds = %274
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #7
  br label %280

276:                                              ; preds = %274
  invoke void @__cxa_throw(ptr nonnull %273, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %278

.thread204:                                       ; preds = %272
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %280

278:                                              ; preds = %276
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #7
  br label %528

280:                                              ; preds = %.thread208, %.thread204
  %.pn163207 = phi { ptr, i32 } [ %277, %.thread204 ], [ %275, %.thread208 ]
  call void @__cxa_free_exception(ptr %273) #7
  br label %528

281:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  %282 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %283 unwind label %307

283:                                              ; preds = %281
  %284 = getelementptr inbounds i8, ptr %282, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %284)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %35) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %35, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %285 unwind label %309

285:                                              ; preds = %283
  %286 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %287 unwind label %311

287:                                              ; preds = %285
  %288 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %286)
  %.not143 = icmp eq i32 %288, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #7
  br i1 %.not143, label %325, label %289

289:                                              ; preds = %287
  %290 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %291 unwind label %314

291:                                              ; preds = %289
  br i1 %290, label %292, label %316

292:                                              ; preds = %291
  %293 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %293, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %295 unwind label %314

295:                                              ; preds = %292
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull @.str.1)
          to label %297 unwind label %314

297:                                              ; preds = %295
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull @.str.2)
          to label %299 unwind label %314

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull @.str.3)
          to label %301 unwind label %314

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %300, i32 noundef 1409)
          to label %303 unwind label %314

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %305 unwind label %314

305:                                              ; preds = %303
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %316 unwind label %314

307:                                              ; preds = %281
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %402

309:                                              ; preds = %283
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %313

311:                                              ; preds = %285
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #7
  br label %313

313:                                              ; preds = %311, %309
  %.pn141 = phi { ptr, i32 } [ %312, %311 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #7
  br label %401

314:                                              ; preds = %305, %303, %301, %299, %297, %295, %292, %289
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %401

316:                                              ; preds = %305, %291
  %317 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %36, i32 noundef 33)
          to label %318 unwind label %.thread210

318:                                              ; preds = %316
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %317, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %36)
          to label %320 unwind label %.thread214

.thread214:                                       ; preds = %318
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #7
  br label %324

320:                                              ; preds = %318
  invoke void @__cxa_throw(ptr nonnull %317, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %322

.thread210:                                       ; preds = %316
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %320
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #7
  br label %401

324:                                              ; preds = %.thread214, %.thread210
  %.pn159213 = phi { ptr, i32 } [ %321, %.thread210 ], [ %319, %.thread214 ]
  call void @__cxa_free_exception(ptr %317) #7
  br label %401

325:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %37) #7
  invoke void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind nonnull writable sret(%class.TypeRef) align 8 %37, ptr noundef nonnull align 8 dereferenceable(176) %1, i1 noundef zeroext true)
          to label %326 unwind label %349

326:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %38) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %38, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %327 unwind label %351

327:                                              ; preds = %326
  %328 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %38)
          to label %329 unwind label %353

329:                                              ; preds = %327
  %330 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %328)
  %.not146 = icmp eq i32 %330, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %38) #7
  br i1 %.not146, label %367, label %331

331:                                              ; preds = %329
  %332 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %333 unwind label %356

333:                                              ; preds = %331
  br i1 %332, label %334, label %358

334:                                              ; preds = %333
  %335 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %335, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %337 unwind label %356

337:                                              ; preds = %334
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull @.str.1)
          to label %339 unwind label %356

339:                                              ; preds = %337
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull @.str.2)
          to label %341 unwind label %356

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull @.str.3)
          to label %343 unwind label %356

343:                                              ; preds = %341
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %342, i32 noundef 1411)
          to label %345 unwind label %356

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %347 unwind label %356

347:                                              ; preds = %345
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %358 unwind label %356

349:                                              ; preds = %325
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %400

351:                                              ; preds = %326
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %355

353:                                              ; preds = %327
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #7
  br label %355

355:                                              ; preds = %353, %351
  %.pn144 = phi { ptr, i32 } [ %354, %353 ], [ %352, %351 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %38) #7
  br label %399

356:                                              ; preds = %347, %345, %343, %341, %339, %337, %334, %331
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %399

358:                                              ; preds = %347, %333
  %359 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %39, i32 noundef 32)
          to label %360 unwind label %.thread216

360:                                              ; preds = %358
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %359, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %39)
          to label %362 unwind label %.thread220

.thread220:                                       ; preds = %360
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #7
  br label %366

362:                                              ; preds = %360
  invoke void @__cxa_throw(ptr nonnull %359, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %364

.thread216:                                       ; preds = %358
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %366

364:                                              ; preds = %362
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #7
  br label %399

366:                                              ; preds = %.thread220, %.thread216
  %.pn155219 = phi { ptr, i32 } [ %363, %.thread216 ], [ %361, %.thread220 ]
  call void @__cxa_free_exception(ptr %359) #7
  br label %399

367:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %40) #7
  %368 = select i1 %233, i32 2, i32 1
  invoke void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120) %42, ptr noundef nonnull align 8 dereferenceable(120) %37)
          to label %369 unwind label %377

369:                                              ; preds = %367
  invoke void @_ZN3AST4ExprC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %370 unwind label %379

370:                                              ; preds = %369
  invoke void @_ZN3AST6StaticC2ENS0_5ClassE7TypeRefNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(216) %41, i32 noundef %368, ptr noundef nonnull %42, ptr noundef nonnull %43)
          to label %371 unwind label %381

371:                                              ; preds = %370
  invoke void @_ZN3AST4ItemC2ENS_6StaticE(ptr noundef nonnull align 8 dereferenceable(488) %40, ptr noundef nonnull %41)
          to label %372 unwind label %383

372:                                              ; preds = %371
  call void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %41) #7
  call void @_ZN3AST4ExprD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %42) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %373 unwind label %387

373:                                              ; preds = %372
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %45, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %46)
          to label %374 unwind label %389

374:                                              ; preds = %373
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %48, ptr noundef nonnull align 8 dereferenceable(36) %13) #7
  call void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %34)
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %50, ptr noundef nonnull align 8 dereferenceable(488) %40) #7
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %44, ptr noundef nonnull %45, ptr noundef nonnull %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %50)
          to label %375 unwind label %391

375:                                              ; preds = %374
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %44)
          to label %376 unwind label %393

376:                                              ; preds = %375
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %44) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %50) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %48) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %40) #7
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %40) #7
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %37) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %37) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %527

377:                                              ; preds = %367
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %398

379:                                              ; preds = %369
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %386

381:                                              ; preds = %370
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %385

383:                                              ; preds = %371
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %41) #7
  br label %385

385:                                              ; preds = %383, %381
  %.pn147 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @_ZN3AST4ExprD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  br label %386

386:                                              ; preds = %385, %379
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %385 ], [ %380, %379 ]
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %42) #7
  br label %398

387:                                              ; preds = %372
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %397

389:                                              ; preds = %373
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %396

391:                                              ; preds = %374
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %395

393:                                              ; preds = %375
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %44) #7
  br label %395

395:                                              ; preds = %393, %391
  %.pn150 = phi { ptr, i32 } [ %394, %393 ], [ %392, %391 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %50) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %48) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br label %396

396:                                              ; preds = %395, %389
  %.pn150.pn = phi { ptr, i32 } [ %.pn150, %395 ], [ %390, %389 ]
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %397

397:                                              ; preds = %396, %387
  %.pn150.pn.pn = phi { ptr, i32 } [ %.pn150.pn, %396 ], [ %388, %387 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %40) #7
  br label %398

398:                                              ; preds = %397, %386, %377
  %.pn150.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn, %397 ], [ %.pn147.pn, %386 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %40) #7
  br label %399

399:                                              ; preds = %364, %366, %398, %356, %355
  %.pn155.pn = phi { ptr, i32 } [ %.pn155219, %366 ], [ %365, %364 ], [ %357, %356 ], [ %.pn150.pn.pn.pn, %398 ], [ %.pn144, %355 ]
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %37) #7
  br label %400

400:                                              ; preds = %399, %349
  %.pn155.pn.pn = phi { ptr, i32 } [ %.pn155.pn, %399 ], [ %350, %349 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %37) #7
  br label %401

401:                                              ; preds = %322, %324, %400, %314, %313
  %.pn159.pn = phi { ptr, i32 } [ %.pn159213, %324 ], [ %323, %322 ], [ %315, %314 ], [ %.pn155.pn.pn, %400 ], [ %.pn141, %313 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  br label %402

402:                                              ; preds = %401, %307
  %.pn159.pn.pn = phi { ptr, i32 } [ %.pn159.pn, %401 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  br label %528

403:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %51) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %51, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %404 unwind label %426

404:                                              ; preds = %403
  %405 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %51)
          to label %406 unwind label %428

406:                                              ; preds = %404
  %407 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %405)
  %.not118 = icmp eq i32 %407, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %51) #7
  br i1 %.not118, label %440, label %408

408:                                              ; preds = %406
  %409 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %410 unwind label %147

410:                                              ; preds = %408
  br i1 %409, label %411, label %431

411:                                              ; preds = %410
  %412 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %412, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %414 unwind label %147

414:                                              ; preds = %411
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull @.str.1)
          to label %416 unwind label %147

416:                                              ; preds = %414
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull @.str.2)
          to label %418 unwind label %147

418:                                              ; preds = %416
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef nonnull @.str.3)
          to label %420 unwind label %147

420:                                              ; preds = %418
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %419, i32 noundef 1417)
          to label %422 unwind label %147

422:                                              ; preds = %420
  %423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %424 unwind label %147

424:                                              ; preds = %422
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %431 unwind label %147

426:                                              ; preds = %403
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %430

428:                                              ; preds = %404
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #7
  br label %430

430:                                              ; preds = %428, %426
  %.pn116 = phi { ptr, i32 } [ %429, %428 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %51) #7
  br label %528

431:                                              ; preds = %424, %410
  %432 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %52, i32 noundef 14)
          to label %433 unwind label %.thread222

433:                                              ; preds = %431
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %432, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %52)
          to label %435 unwind label %.thread226

.thread226:                                       ; preds = %433
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %52) #7
  br label %439

435:                                              ; preds = %433
  invoke void @__cxa_throw(ptr nonnull %432, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %437

.thread222:                                       ; preds = %431
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %435
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %52) #7
  br label %528

439:                                              ; preds = %.thread226, %.thread222
  %.pn134225 = phi { ptr, i32 } [ %436, %.thread222 ], [ %434, %.thread226 ]
  call void @__cxa_free_exception(ptr %432) #7
  br label %528

440:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  %441 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %442 unwind label %466

442:                                              ; preds = %440
  %443 = getelementptr inbounds i8, ptr %441, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %443)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %54) #7
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %54, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %444 unwind label %468

444:                                              ; preds = %442
  %445 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %54)
          to label %446 unwind label %470

446:                                              ; preds = %444
  %447 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %445)
  %.not121 = icmp eq i32 %447, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %54) #7
  br i1 %.not121, label %484, label %448

448:                                              ; preds = %446
  %449 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %450 unwind label %473

450:                                              ; preds = %448
  br i1 %449, label %451, label %475

451:                                              ; preds = %450
  %452 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %452, ptr noundef nonnull @__func__._Z17Parse_ExternBlockR11TokenStreamNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERN3AST13AttributeListE)
          to label %454 unwind label %473

454:                                              ; preds = %451
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull @.str.1)
          to label %456 unwind label %473

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull @.str.2)
          to label %458 unwind label %473

458:                                              ; preds = %456
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef nonnull @.str.3)
          to label %460 unwind label %473

460:                                              ; preds = %458
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %459, i32 noundef 1419)
          to label %462 unwind label %473

462:                                              ; preds = %460
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %461, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %464 unwind label %473

464:                                              ; preds = %462
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %475 unwind label %473

466:                                              ; preds = %440
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %516

468:                                              ; preds = %442
  %469 = landingpad { ptr, i32 }
          cleanup
  br label %472

470:                                              ; preds = %444
  %471 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #7
  br label %472

472:                                              ; preds = %470, %468
  %.pn119 = phi { ptr, i32 } [ %471, %470 ], [ %469, %468 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %54) #7
  br label %515

473:                                              ; preds = %464, %462, %460, %458, %456, %454, %451, %448
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %515

475:                                              ; preds = %464, %450
  %476 = call ptr @__cxa_allocate_exception(i64 96) #7
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %55, i32 noundef 32)
          to label %477 unwind label %.thread228

477:                                              ; preds = %475
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %476, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %55)
          to label %479 unwind label %.thread232

.thread232:                                       ; preds = %477
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #7
  br label %483

479:                                              ; preds = %477
  invoke void @__cxa_throw(ptr nonnull %476, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %481

.thread228:                                       ; preds = %475
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %483

481:                                              ; preds = %479
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #7
  br label %515

483:                                              ; preds = %.thread232, %.thread228
  %.pn130231 = phi { ptr, i32 } [ %480, %.thread228 ], [ %478, %.thread232 ]
  call void @__cxa_free_exception(ptr %476) #7
  br label %515

484:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #7
  invoke void @_ZN9ProtoSpanC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %485 unwind label %493

485:                                              ; preds = %484
  invoke void @_ZNK11TokenStream8end_spanE9ProtoSpan(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %56, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %57)
          to label %486 unwind label %495

486:                                              ; preds = %485
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %58) #7
  call void @_ZN3AST13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %60)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %487 unwind label %497

487:                                              ; preds = %486
  invoke void @_ZN7TypeRefC2E4Span(ptr noundef nonnull align 8 dereferenceable(120) %61, ptr noundef nonnull %62)
          to label %488 unwind label %499

488:                                              ; preds = %487
  invoke void @_ZN3AST9TypeAliasC2ENS_13GenericParamsE7TypeRef(ptr noundef nonnull align 8 dereferenceable(216) %59, ptr noundef nonnull %60, ptr noundef nonnull %61)
          to label %489 unwind label %501

489:                                              ; preds = %488
  invoke void @_ZN3AST4ItemC2ENS_9TypeAliasE(ptr noundef nonnull align 8 dereferenceable(488) %58, ptr noundef nonnull %59)
          to label %490 unwind label %503

490:                                              ; preds = %489
  call void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %59) #7
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %61) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  call void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %60) #7
  call void @_ZN4SpanC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %56)
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %66, ptr noundef nonnull align 8 dereferenceable(36) %13) #7
  call void @_ZN8RcStringC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %53)
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %68, ptr noundef nonnull align 8 dereferenceable(488) %58) #7
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %63, ptr noundef nonnull %64, ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %68)
          to label %491 unwind label %508

491:                                              ; preds = %490
  invoke void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %63)
          to label %492 unwind label %510

492:                                              ; preds = %491
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %63) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %68) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %66) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %58) #7
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %58) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  br label %527

493:                                              ; preds = %484
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %514

495:                                              ; preds = %485
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  br label %514

497:                                              ; preds = %486
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %507

499:                                              ; preds = %487
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %506

501:                                              ; preds = %488
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %505

503:                                              ; preds = %489
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9TypeAliasD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %59) #7
  br label %505

505:                                              ; preds = %503, %501
  %.pn122 = phi { ptr, i32 } [ %504, %503 ], [ %502, %501 ]
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %61) #7
  br label %506

506:                                              ; preds = %505, %499
  %.pn122.pn = phi { ptr, i32 } [ %.pn122, %505 ], [ %500, %499 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  br label %507

507:                                              ; preds = %506, %497
  %.pn122.pn.pn = phi { ptr, i32 } [ %.pn122.pn, %506 ], [ %498, %497 ]
  call void @_ZN3AST13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %60) #7
  br label %513

508:                                              ; preds = %490
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %512

510:                                              ; preds = %491
  %511 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %63) #7
  br label %512

512:                                              ; preds = %510, %508
  %.pn126 = phi { ptr, i32 } [ %511, %510 ], [ %509, %508 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %68) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %66) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %58) #7
  br label %513

513:                                              ; preds = %512, %507
  %.pn126.pn = phi { ptr, i32 } [ %.pn126, %512 ], [ %.pn122.pn.pn, %507 ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %58) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br label %514

514:                                              ; preds = %513, %495, %493
  %.pn126.pn.pn = phi { ptr, i32 } [ %.pn126.pn, %513 ], [ %496, %495 ], [ %494, %493 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  br label %515

515:                                              ; preds = %481, %483, %514, %473, %472
  %.pn130.pn = phi { ptr, i32 } [ %.pn130231, %483 ], [ %482, %481 ], [ %474, %473 ], [ %.pn126.pn.pn, %514 ], [ %.pn119, %472 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %516

516:                                              ; preds = %515, %466
  %.pn130.pn.pn = phi { ptr, i32 } [ %.pn130.pn, %515 ], [ %467, %466 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  br label %528

517:                                              ; preds = %93
  %518 = call ptr @__cxa_allocate_exception(i64 96) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %70) #7
  store i32 88, ptr %70, align 4, !tbaa !13
  %519 = getelementptr inbounds i8, ptr %70, i64 4
  store i32 80, ptr %519, align 4, !tbaa !13
  %520 = getelementptr inbounds i8, ptr %70, i64 8
  store i32 91, ptr %520, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #7
  call void @_ZNSaI10eTokenTypeEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  invoke void @_ZNSt6vectorI10eTokenTypeSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr nonnull %70, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %521 unwind label %.thread234

521:                                              ; preds = %517
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenSt6vectorI10eTokenTypeSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(96) %518, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull %69)
          to label %522 unwind label %524

522:                                              ; preds = %521
  invoke void @__cxa_throw(ptr nonnull %518, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #8
          to label %536 unwind label %524

.thread234:                                       ; preds = %517
  %523 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %70) #7
  br label %526

524:                                              ; preds = %521, %522
  %.0 = phi i1 [ false, %522 ], [ true, %521 ]
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI10eTokenTypeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @_ZNSt15__new_allocatorI10eTokenTypeED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %70) #7
  br i1 %.0, label %526, label %528

526:                                              ; preds = %.thread234, %524
  %.pn184237 = phi { ptr, i32 } [ %523, %.thread234 ], [ %525, %524 ]
  call void @__cxa_free_exception(ptr %518) #7
  br label %528

527:                                              ; preds = %492, %376, %216
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %13) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %77, !llvm.loop !15

528:                                              ; preds = %.loopexit, %.loopexit.split-lp, %437, %278, %155, %238, %242, %271, %402, %280, %524, %526, %439, %157, %516, %430, %227, %147, %146, %118
  %.pn184.pn = phi { ptr, i32 } [ %.pn184237, %526 ], [ %525, %524 ], [ %.pn134225, %439 ], [ %438, %437 ], [ %148, %147 ], [ %.pn130.pn.pn, %516 ], [ %.pn116, %430 ], [ %.pn182195, %157 ], [ %156, %155 ], [ %.pn177.pn.pn.pn, %227 ], [ %.pn166, %146 ], [ %.pn114, %118 ], [ %.pn163207, %280 ], [ %279, %278 ], [ %.pn159.pn.pn, %402 ], [ %.pn138, %271 ], [ %243, %242 ], [ %.pn136, %238 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %13) #7
  br label %529

529:                                              ; preds = %528, %112
  %.pn184.pn.pn = phi { ptr, i32 } [ %.pn184.pn, %528 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #7
  call void @_ZN9ProtoSpanD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  br label %530

530:                                              ; preds = %529, %110
  %.pn184.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn, %529 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  br label %531

531:                                              ; preds = %530, %108
  %.pn184.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn.pn, %530 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %533

532:                                              ; preds = %80
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %6) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  ret void

533:                                              ; preds = %531, %106, %104, %103
  %.pn184.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn.pn.pn, %531 ], [ %107, %106 ], [ %105, %104 ], [ %.pn, %103 ]
  call void @_ZN3AST11ExternBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %0) #7
  br label %534

534:                                              ; preds = %533, %97
  %.pn184.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn.pn.pn.pn, %533 ], [ %98, %97 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #7
  br label %535

535:                                              ; preds = %534, %95
  %.pn184.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn184.pn.pn.pn.pn.pn.pn, %534 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %6) #7
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn184.pn.pn.pn.pn.pn.pn.pn

536:                                              ; preds = %522, %479, %435, %362, %320, %276, %207, %153
  unreachable
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local i24 @_ZN3AST8Function5Flags11make_unsafeEv() local_unnamed_addr #0 align 2

declare void @_ZN3AST11ExternBlock8add_itemENS_5NamedINS_4ItemEEE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST11ExternBlockD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6 align 2

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { nounwind "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 = { 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 #6 = { 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 #7 = { nounwind }
attributes #8 = { noreturn }

!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, !10, i64 24}
!6 = !{!"_ZTS10ParseState", !7, i64 0, !7, i64 1, !7, i64 2, !10, i64 8, !10, i64 16, !10, i64 24}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS10eTokenType", !8, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


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