; LLVM IR from thepowersgang/mrustc :: src/expand/mod.ll (Z6ExpandRN3AST5CrateE)

; 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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandDecorator>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandDecorator>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandDecorator>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandDecorator>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.0" = type { %"class.std::_Rb_tree.1" }
%"class.std::_Rb_tree.1" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.RcString = type { ptr }
%"class.AST::Visibility" = type <{ %"class.std::shared_ptr.249", %"class.std::shared_ptr.252", i32, [4 x i8] }>
%"class.std::shared_ptr.249" = type { %"class.std::__shared_ptr.250" }
%"class.std::__shared_ptr.250" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.252" = type { %"class.std::__shared_ptr.253" }
%"class.std::__shared_ptr.253" = type { ptr, %"class.std::__shared_count" }
%"class.std::unique_ptr.374" = type { %"struct.std::__uniq_ptr_data.375" }
%"struct.std::__uniq_ptr_data.375" = type { %"class.std::__uniq_ptr_impl.376" }
%"class.std::__uniq_ptr_impl.376" = type { %"class.std::tuple.377" }
%"class.std::tuple.377" = type { %"struct.std::_Tuple_impl.378" }
%"struct.std::_Tuple_impl.378" = type { %"struct.std::_Head_base.381" }
%"struct.std::_Head_base.381" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.22" = type { ptr }
%struct.ExpandState = type <{ ptr, %struct.LList, i32, i8, i8, [2 x i8] }>
%struct.LList = type { ptr, ptr }
%"class.std::function.44" = 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.anon.440 = type { ptr }
%"class.std::vector.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = 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.__gnu_cxx::__normal_iterator.389" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.388" = type { ptr }
%"class.std::move_iterator.390" = type { %"class.__gnu_cxx::__normal_iterator.388" }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.441 = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.124", %"class.std::unique_ptr.132", %"class.std::vector.119" }
%"class.std::unique_ptr.124" = type { %"struct.std::__uniq_ptr_data.125" }
%"struct.std::__uniq_ptr_data.125" = type { %"class.std::__uniq_ptr_impl.126" }
%"class.std::__uniq_ptr_impl.126" = type { %"class.std::tuple.127" }
%"class.std::tuple.127" = type { %"struct.std::_Tuple_impl.128" }
%"struct.std::_Tuple_impl.128" = type { %"struct.std::_Head_base.131" }
%"struct.std::_Head_base.131" = type { ptr }
%"class.std::unique_ptr.132" = type { %"struct.std::__uniq_ptr_data.133" }
%"struct.std::__uniq_ptr_data.133" = type { %"class.std::__uniq_ptr_impl.134" }
%"class.std::__uniq_ptr_impl.134" = type { %"class.std::tuple.135" }
%"class.std::tuple.135" = type { %"struct.std::_Tuple_impl.136" }
%"struct.std::_Tuple_impl.136" = type { %"struct.std::_Head_base.139" }
%"struct.std::_Head_base.139" = type { ptr }
%"class.std::vector.119" = type { %"struct.std::_Vector_base.120" }
%"struct.std::_Vector_base.120" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.140", %"struct.AST::PathBinding.141" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.140" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.141" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.std::initializer_list.442" = type { ptr, i64 }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.259", i8, [7 x i8] }>
%"class.std::vector.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.121" = type { i8 }
%"class.AST::AttributeList" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<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.AST::AttributeName" = type { %"class.std::vector" }
%"class.AST::Attribute" = type <{ %struct.Span, %"struct.AST::AttributeName", %class.TokenTree, i8, [7 x i8] }>
%class.TokenTree = type { ptr, i32, %"class.Ident::Hygiene", %class.Token, %"class.std::vector.37" }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr.29" }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%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 }
%"class.std::vector.37" = type { %"struct.std::_Vector_base.38" }
%"struct.std::_Vector_base.38" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named.382" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"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.59", %"class.std::vector.64", %"class.std::vector.69", %"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.79", %"class.std::vector.84", %"class.std::vector.89" }
%"class.std::vector.64" = type { %"struct.std::_Vector_base.65" }
%"struct.std::_Vector_base.65" = 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.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = 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.79" = type { %"struct.std::_Vector_base.80" }
%"struct.std::_Vector_base.80" = 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.84" = type { %"struct.std::_Vector_base.85" }
%"struct.std::_Vector_base.85" = 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.89" = type { %"struct.std::_Vector_base.90" }
%"struct.std::_Vector_base.90" = 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::Item::Data_Crate" = type { %class.RcString }
%"class.__gnu_cxx::__normal_iterator.144" = type { ptr }
%class.anon.443 = type { i8 }
%"class.std::vector.445" = type { %"struct.std::_Vector_base.446" }
%"struct.std::_Vector_base.446" = type { %"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.450" = type { ptr }
%"struct.std::pair.451" = type <{ %"struct.std::_Rb_tree_iterator.453", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.453" = type { ptr }
%"struct.std::pair.455" = type { %class.RcString, ptr }
%"class.__gnu_cxx::__normal_iterator.368" = type { ptr }
%"struct.std::pair.457" = type { %class.RcString, ptr }
%"struct.std::pair.46" = type { %class.RcString, %"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.9" }
%"struct.std::_Head_base.9" = type { ptr }
%"struct.std::pair.42" = type { %class.RcString, %"class.std::unique_ptr.12" }
%"class.std::unique_ptr.12" = type { %"struct.std::__uniq_ptr_data.13" }
%"struct.std::__uniq_ptr_data.13" = type { %"class.std::__uniq_ptr_impl.14" }
%"class.std::__uniq_ptr_impl.14" = type { %"class.std::tuple.15" }
%"class.std::tuple.15" = type { %"struct.std::_Tuple_impl.16" }
%"struct.std::_Tuple_impl.16" = type { %"struct.std::_Head_base.19" }
%"struct.std::_Head_base.19" = type { ptr }
%"class.AST::Crate" = type { %"class.AST::AttributeList", %"class.std::map.53", %"class.AST::Module", %"class.std::vector", %"class.std::map.94", %"class.std::map.99", %class.RcString, %class.RcString, %class.RcString, %class.RcString, i8, %"class.std::vector.104", %"class.std::vector.109", %"class.std::vector.114", i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %class.RcString, %"class.AST::Path" }
%"class.std::map.53" = type { %"class.std::_Rb_tree.54" }
%"class.std::_Rb_tree.54" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, AST::AbsolutePath>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.94" = type { %"class.std::_Rb_tree.95" }
%"class.std::_Rb_tree.95" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, AST::ExternCrate>, std::_Select1st<std::pair<const RcString, AST::ExternCrate>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, AST::ExternCrate>, std::_Select1st<std::pair<const RcString, AST::ExternCrate>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.99" = type { %"class.std::_Rb_tree.100" }
%"class.std::_Rb_tree.100" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, const MacroRules *>, std::_Select1st<std::pair<const RcString, const MacroRules *>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, const MacroRules *>, std::_Select1st<std::pair<const RcString, const MacroRules *>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.104" = type { %"struct.std::_Vector_base.105" }
%"struct.std::_Vector_base.105" = type { %"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::TestDesc, std::allocator<AST::TestDesc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ProcMacroDef, std::allocator<AST::ProcMacroDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %class.MacroRulesPtr }
%class.MacroRulesPtr = type { ptr }
%class.MacroRules = type { ptr, i8, i8, %class.RcString, i32, %"class.Ident::Hygiene", %"class.std::vector.267" }
%"class.std::vector.267" = type { %"struct.std::_Vector_base.268" }
%"struct.std::_Vector_base.268" = type { %"struct.std::_Vector_base<MacroRulesArm, std::allocator<MacroRulesArm>>::_Vector_impl" }
%"struct.std::_Vector_base<MacroRulesArm, std::allocator<MacroRulesArm>>::_Vector_impl" = type { %"struct.std::_Vector_base<MacroRulesArm, std::allocator<MacroRulesArm>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MacroRulesArm, std::allocator<MacroRulesArm>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::MacroImport" = type { i8, %class.RcString, %"struct.AST::AbsolutePath", %class.MacroRef }
%class.MacroRef = type { i32, %"union.MacroRef::DataUnion" }
%"union.MacroRef::DataUnion" = type { ptr }
%"struct.std::pair.459" = type { %class.RcString, ptr }

@g_decorators = external dso_local global %"class.std::map", align 8
@g_macros = external dso_local global %"class.std::map.0", align 8
@g_debug_indent_level = external global i32, align 4
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@__FUNCTION__._Z6ExpandRN3AST5CrateE = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST9Attribute4nameEv(ptr noundef nonnull align 8 dereferenceable(169)) #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST13AttributeNameeqERK8RcString(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

declare noundef zeroext i1 @_Z13debug_enabledv() #4

; 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 @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 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) #3 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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(488)) #3

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

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

declare void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25)) unnamed_addr #7 align 2

; Function Attrs: nounwind
declare void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #1

declare void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(1112), ptr, ptr, i32 noundef) unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), i32 noundef) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

declare void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8, i32 noundef, ptr noundef) #4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.374") align 8, ptr noundef nonnull align 8 dereferenceable(568)) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20Expand_Mod_IndexAnonRN3AST5CrateERNS_6ModuleE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480)) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16Expand_Mod_EarlyRN3AST5CrateERNS_6ModuleERSt6vectorISt10unique_ptrINS_5NamedINS_4ItemEEESt14default_deleteIS8_EESaISB_EE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(24)) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z6ExpandRN3AST5CrateE(ptr noundef nonnull align 8 dereferenceable(1112) %0) #3 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %5 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"struct.std::_Rb_tree_iterator.22", align 8
  %9 = alloca %"struct.std::_Rb_tree_iterator.22", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.ExpandState, align 8
  %12 = alloca %struct.LList, align 8
  %13 = alloca %"class.std::function.44", align 8
  %14 = alloca %class.anon.440, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::vector.59", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.389", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %20 = alloca %"class.std::move_iterator.390", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %22 = alloca %"class.std::move_iterator.390", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %25 = alloca %class.RcString, align 8
  %26 = alloca %class.RcString, align 8
  %27 = alloca %class.RcString, align 8
  %28 = alloca %class.RcString, align 8
  %29 = alloca %struct.Span, align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.441, align 8
  %32 = alloca %"class.AST::Path", align 8
  %33 = alloca %"class.AST::Path", align 8
  %34 = alloca %class.RcString, align 8
  %35 = alloca %"class.std::vector.119", align 8
  %36 = alloca %"class.std::initializer_list.442", align 8
  %37 = alloca [2 x %"class.AST::PathNode"], align 8
  %38 = alloca ptr, align 8
  %39 = alloca %class.RcString, align 8
  %40 = alloca %"struct.AST::PathParams", align 8
  %41 = alloca %class.RcString, align 8
  %42 = alloca %"struct.AST::PathParams", align 8
  %43 = alloca i1, align 1
  %44 = alloca %"class.std::allocator.121", align 1
  %45 = alloca %"class.AST::Path", align 8
  %46 = alloca %class.RcString, align 8
  %47 = alloca %"class.std::vector.119", align 8
  %48 = alloca %"class.std::initializer_list.442", align 8
  %49 = alloca [2 x %"class.AST::PathNode"], align 8
  %50 = alloca ptr, align 8
  %51 = alloca %class.RcString, align 8
  %52 = alloca %"struct.AST::PathParams", align 8
  %53 = alloca %class.RcString, align 8
  %54 = alloca %"struct.AST::PathParams", align 8
  %55 = alloca i1, align 1
  %56 = alloca %"class.std::allocator.121", align 1
  %57 = alloca %"class.AST::AttributeList", align 8
  %58 = alloca %"struct.AST::AttributeName", align 8
  %59 = alloca %class.RcString, align 8
  %60 = alloca %"class.AST::Attribute", align 8
  %61 = alloca %struct.Span, align 8
  %62 = alloca %"struct.AST::AttributeName", align 8
  %63 = alloca %class.TokenTree, align 8
  %64 = alloca %"class.std::unique_ptr.374", align 8
  %65 = alloca %"struct.AST::Named.382", align 8
  %66 = alloca %struct.Span, align 8
  %67 = alloca %"class.AST::AttributeList", align 8
  %68 = alloca %"class.AST::Visibility", align 8
  %69 = alloca %"struct.AST::AbsolutePath", align 8
  %70 = alloca %class.RcString, align 8
  %71 = alloca %"class.AST::Item", align 8
  %72 = alloca %"struct.AST::Item::Data_Crate", align 8
  %73 = alloca ptr, align 8
  %74 = alloca %"struct.AST::AbsolutePath", align 8
  %75 = alloca ptr, align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator.144", align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.144", align 8
  %78 = alloca i32, align 4
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %82 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %83 = alloca ptr, align 8
  %84 = alloca %"struct.AST::AbsolutePath", align 8
  %85 = alloca i64, align 8
  %86 = alloca %"struct.AST::AbsolutePath", align 8
  %87 = alloca %"struct.AST::AbsolutePath", align 8
  %88 = alloca %struct.Span, align 8
  %89 = alloca %"class.std::function", align 8
  %90 = alloca %class.anon.443, align 1
  %91 = alloca ptr, align 8
  %92 = alloca %"class.std::vector.445", align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %98 = alloca ptr, align 8
  %99 = alloca %"struct.std::pair.451", align 8
  %100 = alloca %"struct.std::pair.455", align 8
  %101 = alloca ptr, align 8
  %102 = alloca { ptr, i8 }, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %110 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %111 = alloca ptr, align 8
  %112 = alloca %"struct.std::pair.457", align 8
  %113 = alloca %"struct.std::_Rb_tree_iterator.453", align 8
  %114 = alloca %"struct.std::_Rb_tree_iterator.453", align 8
  %115 = alloca %"struct.std::pair.451", align 8
  %116 = alloca { ptr, i8 }, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  store ptr @g_decorators, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  %117 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #8
  %118 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %4, i32 0, i32 0
  store ptr %117, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %119 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #8
  %120 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %5, i32 0, i32 0
  store ptr %119, ptr %120, align 8
  br label %121

121:                                              ; preds = %140, %1
  %122 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  br i1 %122, label %124, label %123

123:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %142

124:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %125 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  store ptr %125, ptr %6, align 8, !tbaa !5
  br label %126

126:                                              ; preds = %124
  %127 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %127, label %128, label %137

128:                                              ; preds = %126
  %129 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %129, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef @.str.56)
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.std::pair.46", ptr %132, i32 0, i32 0
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %133)
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef @_ZSt3decRSt8ios_base)
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %137

137:                                              ; preds = %128, %126
  br label %138

138:                                              ; preds = %137
  br label %139

139:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %140

140:                                              ; preds = %139
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br label %121

142:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  store ptr @g_macros, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %143 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_macros) #8
  %144 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.22", ptr %8, i32 0, i32 0
  store ptr %143, ptr %144, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %145 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_macros) #8
  %146 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.22", ptr %9, i32 0, i32 0
  store ptr %145, ptr %146, align 8
  br label %147

147:                                              ; preds = %166, %142
  %148 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br i1 %148, label %150, label %149

149:                                              ; preds = %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %168

150:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %151 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  store ptr %151, ptr %10, align 8, !tbaa !5
  br label %152

152:                                              ; preds = %150
  %153 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %153, label %154, label %163

154:                                              ; preds = %152
  %155 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %155, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef @.str.57)
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.std::pair.42", ptr %158, i32 0, i32 0
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %159)
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef @_ZSt3decRSt8ios_base)
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %163

163:                                              ; preds = %154, %152
  br label %164

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %166

166:                                              ; preds = %165
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br label %147

168:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  %169 = load ptr, ptr %2, align 8, !tbaa !5
  %170 = load ptr, ptr %2, align 8, !tbaa !5
  %171 = getelementptr inbounds %"class.AST::Crate", ptr %170, i32 0, i32 2
  call void @_ZN5LListIPKN3AST6ModuleEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef null, ptr noundef %171)
  %172 = getelementptr inbounds { ptr, ptr }, ptr %12, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8
  %174 = getelementptr inbounds { ptr, ptr }, ptr %12, i32 0, i32 1
  %175 = load ptr, ptr %174, align 8
  call void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef nonnull align 8 dereferenceable(1112) %169, ptr %173, ptr %175, i32 noundef 0)
  %176 = load ptr, ptr %2, align 8, !tbaa !5
  %177 = getelementptr inbounds %"class.AST::Crate", ptr %176, i32 0, i32 0
  call void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %177)
  %178 = load ptr, ptr %2, align 8, !tbaa !5
  %179 = getelementptr inbounds %"class.AST::Crate", ptr %178, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %180 = getelementptr inbounds %class.anon.440, ptr %14, i32 0, i32 0
  %181 = load ptr, ptr %2, align 8, !tbaa !5
  store ptr %181, ptr %180, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ6ExpandRNS6_5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef nonnull align 8 dereferenceable(24) %179, i32 noundef 0, ptr noundef %13)
          to label %182 unwind label %227

182:                                              ; preds = %168
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %183 = load ptr, ptr %2, align 8, !tbaa !5
  %184 = load ptr, ptr %2, align 8, !tbaa !5
  %185 = getelementptr inbounds %"class.AST::Crate", ptr %184, i32 0, i32 2
  invoke void @_Z16Expand_Mod_EarlyRN3AST5CrateERNS_6ModuleERSt6vectorISt10unique_ptrINS_5NamedINS_4ItemEEESt14default_deleteIS8_EESaISB_EE(ptr noundef nonnull align 8 dereferenceable(1112) %183, ptr noundef nonnull align 8 dereferenceable(480) %185, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %186 unwind label %231

186:                                              ; preds = %182
  %187 = load ptr, ptr %2, align 8, !tbaa !5
  %188 = getelementptr inbounds %"class.AST::Crate", ptr %187, i32 0, i32 2
  %189 = getelementptr inbounds %"class.AST::Module", ptr %188, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %190 = load ptr, ptr %2, align 8, !tbaa !5
  %191 = getelementptr inbounds %"class.AST::Crate", ptr %190, i32 0, i32 2
  %192 = getelementptr inbounds %"class.AST::Module", ptr %191, i32 0, i32 1
  %193 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %192) #8
  %194 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %19, i32 0, i32 0
  store ptr %193, ptr %194, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEC2IPS8_vEERKNS0_IT_SD_EE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %195 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %196 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %21, i32 0, i32 0
  store ptr %195, ptr %196, align 8
  %197 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %21, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8
  %199 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %198)
          to label %200 unwind label %235

200:                                              ; preds = %186
  %201 = getelementptr inbounds %"class.std::move_iterator.390", ptr %20, i32 0, i32 0
  %202 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %201, i32 0, i32 0
  store ptr %199, ptr %202, align 8
  %203 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %204 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %23, i32 0, i32 0
  store ptr %203, ptr %204, align 8
  %205 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %23, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8
  %207 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %206)
          to label %208 unwind label %235

208:                                              ; preds = %200
  %209 = getelementptr inbounds %"class.std::move_iterator.390", ptr %22, i32 0, i32 0
  %210 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %209, i32 0, i32 0
  store ptr %207, ptr %210, align 8
  %211 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.389", ptr %18, i32 0, i32 0
  %212 = load ptr, ptr %211, align 8
  %213 = getelementptr inbounds %"class.std::move_iterator.390", ptr %20, i32 0, i32 0
  %214 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %213, i32 0, i32 0
  %215 = load ptr, ptr %214, align 8
  %216 = getelementptr inbounds %"class.std::move_iterator.390", ptr %22, i32 0, i32 0
  %217 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8
  %219 = invoke ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE6insertISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPS7_S9_EEEvEESF_NSD_IPKS7_S9_EET_SK_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr %212, ptr %215, ptr %218)
          to label %220 unwind label %235

220:                                              ; preds = %208
  %221 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %24, i32 0, i32 0
  store ptr %219, ptr %221, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  invoke void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %222 unwind label %239

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  invoke void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %223 unwind label %243

223:                                              ; preds = %222
  %224 = load ptr, ptr %2, align 8, !tbaa !5
  %225 = getelementptr inbounds %"class.AST::Crate", ptr %224, i32 0, i32 16
  %226 = load i32, ptr %225, align 8, !tbaa !11
  switch i32 %226, label %285 [
    i32 0, label %247
    i32 1, label %268
    i32 2, label %285
  ]

227:                                              ; preds = %168
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %15, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %1159

231:                                              ; preds = %182
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %15, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %16, align 4
  br label %1158

235:                                              ; preds = %208, %200, %186
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %15, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %1158

239:                                              ; preds = %220
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %15, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %16, align 4
  br label %1157

243:                                              ; preds = %222
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %15, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %16, align 4
  br label %1156

247:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %27, ptr noundef @.str.58)
          to label %248 unwind label %255

248:                                              ; preds = %247
  %249 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %250 unwind label %259

250:                                              ; preds = %248
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  %251 = load ptr, ptr %2, align 8, !tbaa !5
  %252 = getelementptr inbounds %"class.AST::Crate", ptr %251, i32 0, i32 7
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %252)
          to label %254 unwind label %264

254:                                              ; preds = %250
  br label %285

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

259:                                              ; preds = %248
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %15, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %16, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %263

263:                                              ; preds = %259, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %1155

264:                                              ; preds = %831, %811, %797, %719, %717, %715, %713, %711, %706, %704, %699, %697, %694, %691, %686, %297, %289, %285, %271, %250
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %15, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %16, align 4
  br label %1155

268:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %28, ptr noundef @.str.59)
          to label %269 unwind label %276

269:                                              ; preds = %268
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %271 unwind label %280

271:                                              ; preds = %269
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %272 = load ptr, ptr %2, align 8, !tbaa !5
  %273 = getelementptr inbounds %"class.AST::Crate", ptr %272, i32 0, i32 6
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %275 unwind label %264

275:                                              ; preds = %271
  br label %285

276:                                              ; preds = %268
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %15, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %16, align 4
  br label %284

280:                                              ; preds = %269
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %15, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %16, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %284

284:                                              ; preds = %280, %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1155

285:                                              ; preds = %275, %254, %223, %223
  %286 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef @.str.19)
          to label %287 unwind label %264

287:                                              ; preds = %285
  br i1 %286, label %288, label %634

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288
  %290 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef @.str.19)
          to label %291 unwind label %264

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

292:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %293 unwind label %298

293:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %294 = getelementptr inbounds %class.anon.441, ptr %31, i32 0, i32 0
  store ptr %25, ptr %294, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef %30)
          to label %295 unwind label %302

295:                                              ; preds = %293
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  %296 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %296, ptr noundef @.str.11)
          to label %297 unwind label %307

297:                                              ; preds = %295
  invoke void @__cxa_throw(ptr %296, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1165 unwind label %264

298:                                              ; preds = %292
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %15, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %16, align 4
  br label %306

302:                                              ; preds = %293
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %15, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %306

306:                                              ; preds = %302, %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %1155

307:                                              ; preds = %295
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %15, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %16, align 4
  call void @__cxa_free_exception(ptr %296) #8
  br label %1155

311:                                              ; preds = %291
  br label %312

312:                                              ; preds = %311
  br label %313

313:                                              ; preds = %312
  %314 = load ptr, ptr %2, align 8, !tbaa !5
  %315 = getelementptr inbounds %"class.AST::Crate", ptr %314, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 240, ptr %32) #8
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %32)
          to label %316 unwind label %323

316:                                              ; preds = %313
  %317 = invoke noundef zeroext i1 @_ZNK3AST4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %315, ptr noundef nonnull align 8 dereferenceable(240) %32)
          to label %318 unwind label %327

318:                                              ; preds = %316
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %32) #8
  br i1 %317, label %319, label %511

319:                                              ; preds = %318
  %320 = load ptr, ptr %2, align 8, !tbaa !5
  %321 = getelementptr inbounds %"class.AST::Crate", ptr %320, i32 0, i32 14
  %322 = load i32, ptr %321, align 8, !tbaa !103
  switch i32 %322, label %510 [
    i32 0, label %332
    i32 1, label %332
    i32 2, label %421
  ]

323:                                              ; preds = %313
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %15, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %16, align 4
  br label %331

327:                                              ; preds = %316
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %15, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %16, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #8
  br label %331

331:                                              ; preds = %327, %323
  call void @llvm.lifetime.end.p0(i64 240, ptr %32) #8
  br label %1155

332:                                              ; preds = %319, %319
  call void @llvm.lifetime.start.p0(i64 240, ptr %33) #8
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %333 unwind label %360

333:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 80, ptr %37) #8
  store i1 true, ptr %43, align 1
  store ptr %37, ptr %38, align 8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef @.str.60)
          to label %334 unwind label %364

334:                                              ; preds = %333
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %40)
          to label %335 unwind label %368

335:                                              ; preds = %334
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %37, ptr noundef %39, ptr noundef %40)
          to label %336 unwind label %372

336:                                              ; preds = %335
  %337 = getelementptr inbounds %"class.AST::PathNode", ptr %37, i64 1
  store ptr %337, ptr %38, align 8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef @.str.61)
          to label %338 unwind label %372

338:                                              ; preds = %336
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %42)
          to label %339 unwind label %376

339:                                              ; preds = %338
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %337, ptr noundef %41, ptr noundef %42)
          to label %340 unwind label %380

340:                                              ; preds = %339
  store i1 false, ptr %43, align 1
  %341 = getelementptr inbounds %"class.std::initializer_list.442", ptr %36, i32 0, i32 0
  store ptr %37, ptr %341, align 8, !tbaa !104
  %342 = getelementptr inbounds %"class.std::initializer_list.442", ptr %36, i32 0, i32 1
  store i64 2, ptr %342, align 8, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  %343 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 0
  %344 = load ptr, ptr %343, align 8
  %345 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 1
  %346 = load i64, ptr %345, align 8
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr %344, i64 %346, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %347 unwind label %384

347:                                              ; preds = %340
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %33, ptr noundef %34, ptr noundef %35)
          to label %348 unwind label %388

348:                                              ; preds = %347
  %349 = load ptr, ptr %2, align 8, !tbaa !5
  %350 = getelementptr inbounds %"class.AST::Crate", ptr %349, i32 0, i32 20
  %351 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %350, ptr noundef nonnull align 8 dereferenceable(240) %33)
          to label %352 unwind label %392

352:                                              ; preds = %348
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %33) #8
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  %353 = getelementptr inbounds [2 x %"class.AST::PathNode"], ptr %37, i32 0, i32 0
  %354 = getelementptr inbounds %"class.AST::PathNode", ptr %353, i64 2
  br label %355

355:                                              ; preds = %355, %352
  %356 = phi ptr [ %354, %352 ], [ %357, %355 ]
  %357 = getelementptr inbounds %"class.AST::PathNode", ptr %356, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %357) #8
  %358 = icmp eq ptr %357, %353
  br i1 %358, label %359, label %355

359:                                              ; preds = %355
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %42) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %40) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %37) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %33) #8
  br label %510

360:                                              ; preds = %332
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %15, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %16, align 4
  br label %420

364:                                              ; preds = %333
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %15, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %16, align 4
  br label %409

368:                                              ; preds = %334
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %15, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %16, align 4
  br label %408

372:                                              ; preds = %336, %335
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %15, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %16, align 4
  br label %407

376:                                              ; preds = %338
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %15, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %16, align 4
  br label %406

380:                                              ; preds = %339
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %15, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %16, align 4
  br label %405

384:                                              ; preds = %340
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %15, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %16, align 4
  br label %397

388:                                              ; preds = %347
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %15, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %16, align 4
  br label %396

392:                                              ; preds = %348
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %15, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %16, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %33) #8
  br label %396

396:                                              ; preds = %392, %388
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  br label %397

397:                                              ; preds = %396, %384
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  %398 = getelementptr inbounds [2 x %"class.AST::PathNode"], ptr %37, i32 0, i32 0
  %399 = getelementptr inbounds %"class.AST::PathNode", ptr %398, i64 2
  br label %400

400:                                              ; preds = %400, %397
  %401 = phi ptr [ %399, %397 ], [ %402, %400 ]
  %402 = getelementptr inbounds %"class.AST::PathNode", ptr %401, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %402) #8
  %403 = icmp eq ptr %402, %398
  br i1 %403, label %404, label %400

404:                                              ; preds = %400
  br label %405

405:                                              ; preds = %404, %380
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %42) #8
  br label %406

406:                                              ; preds = %405, %376
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %407

407:                                              ; preds = %406, %372
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %40) #8
  br label %408

408:                                              ; preds = %407, %368
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %409

409:                                              ; preds = %408, %364
  %410 = load i1, ptr %43, align 1
  br i1 %410, label %411, label %419

411:                                              ; preds = %409
  %412 = load ptr, ptr %38, align 8
  %413 = icmp eq ptr %37, %412
  br i1 %413, label %418, label %414

414:                                              ; preds = %414, %411
  %415 = phi ptr [ %412, %411 ], [ %416, %414 ]
  %416 = getelementptr inbounds %"class.AST::PathNode", ptr %415, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %416) #8
  %417 = icmp eq ptr %416, %37
  br i1 %417, label %418, label %414

418:                                              ; preds = %414, %411
  br label %419

419:                                              ; preds = %418, %409
  call void @llvm.lifetime.end.p0(i64 80, ptr %37) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %420

420:                                              ; preds = %419, %360
  call void @llvm.lifetime.end.p0(i64 240, ptr %33) #8
  br label %1155

421:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 240, ptr %45) #8
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %422 unwind label %449

422:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 80, ptr %49) #8
  store i1 true, ptr %55, align 1
  store ptr %49, ptr %50, align 8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef @.str.60)
          to label %423 unwind label %453

423:                                              ; preds = %422
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %52)
          to label %424 unwind label %457

424:                                              ; preds = %423
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %49, ptr noundef %51, ptr noundef %52)
          to label %425 unwind label %461

425:                                              ; preds = %424
  %426 = getelementptr inbounds %"class.AST::PathNode", ptr %49, i64 1
  store ptr %426, ptr %50, align 8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef @.str.62)
          to label %427 unwind label %461

427:                                              ; preds = %425
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %54)
          to label %428 unwind label %465

428:                                              ; preds = %427
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %426, ptr noundef %53, ptr noundef %54)
          to label %429 unwind label %469

429:                                              ; preds = %428
  store i1 false, ptr %55, align 1
  %430 = getelementptr inbounds %"class.std::initializer_list.442", ptr %48, i32 0, i32 0
  store ptr %49, ptr %430, align 8, !tbaa !104
  %431 = getelementptr inbounds %"class.std::initializer_list.442", ptr %48, i32 0, i32 1
  store i64 2, ptr %431, align 8, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #8
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #8
  %432 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8
  %434 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 1
  %435 = load i64, ptr %434, align 8
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr %433, i64 %435, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %436 unwind label %473

436:                                              ; preds = %429
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %45, ptr noundef %46, ptr noundef %47)
          to label %437 unwind label %477

437:                                              ; preds = %436
  %438 = load ptr, ptr %2, align 8, !tbaa !5
  %439 = getelementptr inbounds %"class.AST::Crate", ptr %438, i32 0, i32 20
  %440 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %439, ptr noundef nonnull align 8 dereferenceable(240) %45)
          to label %441 unwind label %481

441:                                              ; preds = %437
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %45) #8
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #8
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  %442 = getelementptr inbounds [2 x %"class.AST::PathNode"], ptr %49, i32 0, i32 0
  %443 = getelementptr inbounds %"class.AST::PathNode", ptr %442, i64 2
  br label %444

444:                                              ; preds = %444, %441
  %445 = phi ptr [ %443, %441 ], [ %446, %444 ]
  %446 = getelementptr inbounds %"class.AST::PathNode", ptr %445, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %446) #8
  %447 = icmp eq ptr %446, %442
  br i1 %447, label %448, label %444

448:                                              ; preds = %444
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %54) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %52) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %49) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %45) #8
  br label %510

449:                                              ; preds = %421
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %15, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %16, align 4
  br label %509

453:                                              ; preds = %422
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %15, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %16, align 4
  br label %498

457:                                              ; preds = %423
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %15, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %16, align 4
  br label %497

461:                                              ; preds = %425, %424
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %15, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %16, align 4
  br label %496

465:                                              ; preds = %427
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %15, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %16, align 4
  br label %495

469:                                              ; preds = %428
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %15, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %16, align 4
  br label %494

473:                                              ; preds = %429
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %15, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %16, align 4
  br label %486

477:                                              ; preds = %436
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %15, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %16, align 4
  br label %485

481:                                              ; preds = %437
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %15, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %16, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %45) #8
  br label %485

485:                                              ; preds = %481, %477
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #8
  br label %486

486:                                              ; preds = %485, %473
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  %487 = getelementptr inbounds [2 x %"class.AST::PathNode"], ptr %49, i32 0, i32 0
  %488 = getelementptr inbounds %"class.AST::PathNode", ptr %487, i64 2
  br label %489

489:                                              ; preds = %489, %486
  %490 = phi ptr [ %488, %486 ], [ %491, %489 ]
  %491 = getelementptr inbounds %"class.AST::PathNode", ptr %490, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %491) #8
  %492 = icmp eq ptr %491, %487
  br i1 %492, label %493, label %489

493:                                              ; preds = %489
  br label %494

494:                                              ; preds = %493, %469
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %54) #8
  br label %495

495:                                              ; preds = %494, %465
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  br label %496

496:                                              ; preds = %495, %461
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %52) #8
  br label %497

497:                                              ; preds = %496, %457
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %498

498:                                              ; preds = %497, %453
  %499 = load i1, ptr %55, align 1
  br i1 %499, label %500, label %508

500:                                              ; preds = %498
  %501 = load ptr, ptr %50, align 8
  %502 = icmp eq ptr %49, %501
  br i1 %502, label %507, label %503

503:                                              ; preds = %503, %500
  %504 = phi ptr [ %501, %500 ], [ %505, %503 ]
  %505 = getelementptr inbounds %"class.AST::PathNode", ptr %504, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %505) #8
  %506 = icmp eq ptr %505, %49
  br i1 %506, label %507, label %503

507:                                              ; preds = %503, %500
  br label %508

508:                                              ; preds = %507, %498
  call void @llvm.lifetime.end.p0(i64 80, ptr %49) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %509

509:                                              ; preds = %508, %449
  call void @llvm.lifetime.end.p0(i64 240, ptr %45) #8
  br label %1155

510:                                              ; preds = %448, %359, %319
  br label %511

511:                                              ; preds = %510, %318
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #8
  invoke void @_ZN3AST13AttributeListC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %512 unwind label %548

512:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #8
  call void @_ZN3AST13AttributeNameC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  %513 = getelementptr inbounds %"struct.AST::AttributeName", ptr %58, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef @.str.63)
          to label %514 unwind label %552

514:                                              ; preds = %512
  invoke void @_ZNSt6vectorI8RcStringSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %513, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %515 unwind label %556

515:                                              ; preds = %514
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %516 unwind label %561

516:                                              ; preds = %515
  call void @_ZN3AST13AttributeNameC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  invoke void @_ZN9TokenTreeC2Ev(ptr noundef nonnull align 8 dereferenceable(136) %63)
          to label %517 unwind label %565

517:                                              ; preds = %516
  invoke void @_ZN3AST9AttributeC2E4SpanNS_13AttributeNameE9TokenTree(ptr noundef nonnull align 8 dereferenceable(169) %60, ptr noundef %61, ptr noundef %62, ptr noundef %63)
          to label %518 unwind label %569

518:                                              ; preds = %517
  invoke void @_ZN3AST13AttributeList9push_backENS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef %60)
          to label %519 unwind label %573

519:                                              ; preds = %518
  call void @_ZN3AST9AttributeD2Ev(ptr noundef nonnull align 8 dereferenceable(169) %60) #8
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %63) #8
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  %520 = load ptr, ptr %2, align 8, !tbaa !5
  %521 = getelementptr inbounds %"class.AST::Crate", ptr %520, i32 0, i32 2
  %522 = getelementptr inbounds %"class.AST::Module", ptr %521, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 568, ptr %65) #8
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %523 unwind label %579

523:                                              ; preds = %519
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %524 unwind label %583

524:                                              ; preds = %523
  invoke void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8 %68, i32 noundef 0, ptr noundef %69)
          to label %525 unwind label %587

525:                                              ; preds = %524
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %526 unwind label %591

526:                                              ; preds = %525
  %527 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %72, i32 0, i32 0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %527, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %528 unwind label %595

528:                                              ; preds = %526
  invoke void @_ZN3AST4Item10make_CrateENS0_10Data_CrateE(ptr dead_on_unwind writable sret(%"class.AST::Item") align 8 %71, ptr noundef %72)
          to label %529 unwind label %599

529:                                              ; preds = %528
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %65, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %70, ptr noundef %71)
          to label %530 unwind label %603

530:                                              ; preds = %529
  invoke void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.374") align 8 %64, ptr noundef nonnull align 8 dereferenceable(568) %65)
          to label %531 unwind label %607

531:                                              ; preds = %530
  invoke void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %522, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %532 unwind label %611

532:                                              ; preds = %531
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %65) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %71) #8
  call void @_ZN3AST4Item10Data_CrateD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %68) #8
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  call void @llvm.lifetime.end.p0(i64 568, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %533 = load ptr, ptr %2, align 8, !tbaa !5
  %534 = getelementptr inbounds %"class.AST::Crate", ptr %533, i32 0, i32 2
  %535 = getelementptr inbounds %"class.AST::Module", ptr %534, i32 0, i32 1
  %536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %535) #8
  %537 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %536) #8
  store ptr %537, ptr %73, align 8, !tbaa !5
  %538 = load ptr, ptr %73, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.AST::Named.382", ptr %538, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #8
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %540 unwind label %623

540:                                              ; preds = %532
  %541 = load ptr, ptr %2, align 8, !tbaa !5
  %542 = getelementptr inbounds %"class.AST::Crate", ptr %541, i32 0, i32 2
  %543 = load ptr, ptr %73, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.AST::Named.382", ptr %543, i32 0, i32 2
  %545 = load ptr, ptr %73, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.AST::Named.382", ptr %545, i32 0, i32 4
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef nonnull align 8 dereferenceable(24) %539, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(480) %542, ptr noundef nonnull align 8 dereferenceable(36) %544, ptr noundef nonnull align 8 dereferenceable(488) %546)
          to label %547 unwind label %627

547:                                              ; preds = %540
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #8
  br label %634

548:                                              ; preds = %511
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %15, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %16, align 4
  br label %633

552:                                              ; preds = %512
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %15, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %16, align 4
  br label %560

556:                                              ; preds = %514
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %15, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %16, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %560

560:                                              ; preds = %556, %552
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %632

561:                                              ; preds = %515
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %15, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %16, align 4
  br label %632

565:                                              ; preds = %516
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %15, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %16, align 4
  br label %578

569:                                              ; preds = %517
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %15, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %16, align 4
  br label %577

573:                                              ; preds = %518
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %15, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %16, align 4
  call void @_ZN3AST9AttributeD2Ev(ptr noundef nonnull align 8 dereferenceable(169) %60) #8
  br label %577

577:                                              ; preds = %573, %569
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %63) #8
  br label %578

578:                                              ; preds = %577, %565
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br label %632

579:                                              ; preds = %519
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %15, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %16, align 4
  br label %622

583:                                              ; preds = %523
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %15, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %16, align 4
  br label %621

587:                                              ; preds = %524
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %15, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %16, align 4
  br label %620

591:                                              ; preds = %525
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %15, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %16, align 4
  br label %619

595:                                              ; preds = %526
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %15, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %16, align 4
  br label %618

599:                                              ; preds = %528
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %15, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %16, align 4
  br label %617

603:                                              ; preds = %529
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %15, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %16, align 4
  br label %616

607:                                              ; preds = %530
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %15, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %16, align 4
  br label %615

611:                                              ; preds = %531
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %15, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %16, align 4
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %615

615:                                              ; preds = %611, %607
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %65) #8
  br label %616

616:                                              ; preds = %615, %603
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %71) #8
  br label %617

617:                                              ; preds = %616, %599
  call void @_ZN3AST4Item10Data_CrateD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br label %618

618:                                              ; preds = %617, %595
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %619

619:                                              ; preds = %618, %591
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %68) #8
  br label %620

620:                                              ; preds = %619, %587
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %621

621:                                              ; preds = %620, %583
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  br label %622

622:                                              ; preds = %621, %579
  call void @llvm.lifetime.end.p0(i64 568, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %632

623:                                              ; preds = %532
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %15, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %16, align 4
  br label %631

627:                                              ; preds = %540
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %15, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %16, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %631

631:                                              ; preds = %627, %623
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %632

632:                                              ; preds = %631, %622, %578, %561, %560
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  br label %633

633:                                              ; preds = %632, %548
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #8
  br label %1155

634:                                              ; preds = %547, %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %635 = load ptr, ptr %2, align 8, !tbaa !5
  %636 = getelementptr inbounds %"class.AST::Crate", ptr %635, i32 0, i32 0
  %637 = getelementptr inbounds %"class.AST::AttributeList", ptr %636, i32 0, i32 0
  store ptr %637, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %638 = load ptr, ptr %75, align 8, !tbaa !5
  %639 = call ptr @_ZNSt6vectorIN3AST9AttributeESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %638) #8
  %640 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.144", ptr %76, i32 0, i32 0
  store ptr %639, ptr %640, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %641 = load ptr, ptr %75, align 8, !tbaa !5
  %642 = call ptr @_ZNSt6vectorIN3AST9AttributeESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %641) #8
  %643 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.144", ptr %77, i32 0, i32 0
  store ptr %642, ptr %643, align 8
  br label %644

644:                                              ; preds = %684, %634
  %645 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br i1 %645, label %647, label %646

646:                                              ; preds = %644
  store i32 14, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %686

647:                                              ; preds = %644
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %648 = call noundef nonnull align 8 dereferenceable(169) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  store ptr %648, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  store ptr @g_decorators, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %649 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #8
  %650 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %81, i32 0, i32 0
  store ptr %649, ptr %650, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %651 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #8
  %652 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %82, i32 0, i32 0
  store ptr %651, ptr %652, align 8
  br label %653

653:                                              ; preds = %681, %647
  %654 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br i1 %654, label %656, label %655

655:                                              ; preds = %653
  store i32 16, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %683

656:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %657 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  store ptr %657, ptr %83, align 8, !tbaa !5
  %658 = load ptr, ptr %79, align 8, !tbaa !5
  %659 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST9Attribute4nameEv(ptr noundef nonnull align 8 dereferenceable(169) %658)
          to label %660 unwind label %676

660:                                              ; preds = %656
  %661 = load ptr, ptr %83, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.std::pair.46", ptr %661, i32 0, i32 0
  %663 = invoke noundef zeroext i1 @_ZNK3AST13AttributeNameeqERK8RcString(ptr noundef nonnull align 8 dereferenceable(24) %659, ptr noundef nonnull align 8 dereferenceable(8) %662)
          to label %664 unwind label %676

664:                                              ; preds = %660
  br i1 %663, label %665, label %680

665:                                              ; preds = %664
  %666 = load ptr, ptr %83, align 8, !tbaa !5
  %667 = getelementptr inbounds %"struct.std::pair.46", ptr %666, i32 0, i32 1
  %668 = call noundef ptr @_ZNKSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %667) #8
  %669 = load ptr, ptr %668, align 8, !tbaa !107
  %670 = getelementptr inbounds ptr, ptr %669, i64 2
  %671 = load ptr, ptr %670, align 8
  %672 = invoke noundef i32 %671(ptr noundef nonnull align 8 dereferenceable(8) %668)
          to label %673 unwind label %676

673:                                              ; preds = %665
  %674 = icmp eq i32 %672, 0
  br i1 %674, label %675, label %680

675:                                              ; preds = %673
  br label %680

676:                                              ; preds = %665, %660, %656
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %15, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %1155

680:                                              ; preds = %675, %673, %664
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %681

681:                                              ; preds = %680
  %682 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  br label %653

683:                                              ; preds = %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %684

684:                                              ; preds = %683
  %685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %644

686:                                              ; preds = %646
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %687 unwind label %264

687:                                              ; preds = %686
  %688 = load ptr, ptr %2, align 8, !tbaa !5
  %689 = getelementptr inbounds %"class.AST::Crate", ptr %688, i32 0, i32 2
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef %84, ptr noundef nonnull align 8 dereferenceable(480) %689, i32 noundef 0)
          to label %690 unwind label %722

690:                                              ; preds = %687
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %691

691:                                              ; preds = %690
  %692 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %693 unwind label %264

693:                                              ; preds = %691
  br i1 %692, label %694, label %726

694:                                              ; preds = %693
  %695 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %696 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %695, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %697 unwind label %264

697:                                              ; preds = %694
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef @.str.64)
          to label %699 unwind label %264

699:                                              ; preds = %697
  %700 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 3
  %701 = load i8, ptr %700, align 4, !tbaa !109, !range !113, !noundef !114
  %702 = trunc i8 %701 to i1
  %703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %698, i1 noundef zeroext %702)
          to label %704 unwind label %264

704:                                              ; preds = %699
  %705 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %703, ptr noundef @.str.65)
          to label %706 unwind label %264

706:                                              ; preds = %704
  %707 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  %708 = load i8, ptr %707, align 1, !tbaa !115, !range !113, !noundef !114
  %709 = trunc i8 %708 to i1
  %710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %705, i1 noundef zeroext %709)
          to label %711 unwind label %264

711:                                              ; preds = %706
  %712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef @.str.39)
          to label %713 unwind label %264

713:                                              ; preds = %711
  %714 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %712, ptr noundef %11)
          to label %715 unwind label %264

715:                                              ; preds = %713
  %716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %714, ptr noundef @.str.66)
          to label %717 unwind label %264

717:                                              ; preds = %715
  %718 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %716, ptr noundef @_ZSt3decRSt8ios_base)
          to label %719 unwind label %264

719:                                              ; preds = %717
  %720 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %718, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %721 unwind label %264

721:                                              ; preds = %719
  br label %726

722:                                              ; preds = %687
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %15, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %16, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  br label %1155

726:                                              ; preds = %721, %693
  br label %727

727:                                              ; preds = %726
  br label %728

728:                                              ; preds = %727
  %729 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  %730 = load i8, ptr %729, align 1, !tbaa !115, !range !113, !noundef !114
  %731 = trunc i8 %730 to i1
  br i1 %731, label %732, label %797

732:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  store i64 0, ptr %85, align 8, !tbaa !116
  br label %733

733:                                              ; preds = %791, %732
  %734 = load i64, ptr %85, align 8, !tbaa !116
  %735 = icmp ult i64 %734, 5
  br i1 %735, label %736, label %744

736:                                              ; preds = %733
  %737 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 3
  %738 = load i8, ptr %737, align 4, !tbaa !109, !range !113, !noundef !114
  %739 = trunc i8 %738 to i1
  br i1 %739, label %740, label %744

740:                                              ; preds = %736
  %741 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  %742 = load i8, ptr %741, align 1, !tbaa !115, !range !113, !noundef !114
  %743 = trunc i8 %742 to i1
  br label %744

744:                                              ; preds = %740, %736, %733
  %745 = phi i1 [ false, %736 ], [ false, %733 ], [ %743, %740 ]
  br i1 %745, label %747, label %746

746:                                              ; preds = %744
  store i32 20, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %795

747:                                              ; preds = %744
  %748 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 2
  store i32 1, ptr %748, align 8, !tbaa !117
  %749 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 3
  store i8 0, ptr %749, align 4, !tbaa !109
  %750 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  store i8 0, ptr %750, align 1, !tbaa !115
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %751 unwind label %780

751:                                              ; preds = %747
  %752 = load ptr, ptr %2, align 8, !tbaa !5
  %753 = getelementptr inbounds %"class.AST::Crate", ptr %752, i32 0, i32 2
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef %86, ptr noundef nonnull align 8 dereferenceable(480) %753, i32 noundef 0)
          to label %754 unwind label %784

754:                                              ; preds = %751
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %755

755:                                              ; preds = %754
  %756 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %757 unwind label %780

757:                                              ; preds = %755
  br i1 %756, label %758, label %788

758:                                              ; preds = %757
  %759 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %760 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %759, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %761 unwind label %780

761:                                              ; preds = %758
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %760, ptr noundef @.str.67)
          to label %763 unwind label %780

763:                                              ; preds = %761
  %764 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 3
  %765 = load i8, ptr %764, align 4, !tbaa !109, !range !113, !noundef !114
  %766 = trunc i8 %765 to i1
  %767 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %762, i1 noundef zeroext %766)
          to label %768 unwind label %780

768:                                              ; preds = %763
  %769 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %767, ptr noundef @.str.65)
          to label %770 unwind label %780

770:                                              ; preds = %768
  %771 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  %772 = load i8, ptr %771, align 1, !tbaa !115, !range !113, !noundef !114
  %773 = trunc i8 %772 to i1
  %774 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %769, i1 noundef zeroext %773)
          to label %775 unwind label %780

775:                                              ; preds = %770
  %776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %774, ptr noundef @_ZSt3decRSt8ios_base)
          to label %777 unwind label %780

777:                                              ; preds = %775
  %778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %776, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %779 unwind label %780

779:                                              ; preds = %777
  br label %788

780:                                              ; preds = %777, %775, %770, %768, %763, %761, %758, %755, %747
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %15, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %16, align 4
  br label %794

784:                                              ; preds = %751
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %15, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %16, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  br label %794

788:                                              ; preds = %779, %757
  br label %789

789:                                              ; preds = %788
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790
  %792 = load i64, ptr %85, align 8, !tbaa !116
  %793 = add i64 %792, 1
  store i64 %793, ptr %85, align 8, !tbaa !116
  br label %733, !llvm.loop !118

794:                                              ; preds = %784, %780
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %1155

795:                                              ; preds = %746
  %796 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  store i8 0, ptr %796, align 1, !tbaa !115
  br label %797

797:                                              ; preds = %795, %728
  %798 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 2
  store i32 2, ptr %798, align 8, !tbaa !117
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %799 unwind label %264

799:                                              ; preds = %797
  %800 = load ptr, ptr %2, align 8, !tbaa !5
  %801 = getelementptr inbounds %"class.AST::Crate", ptr %800, i32 0, i32 2
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %11, ptr noundef %87, ptr noundef nonnull align 8 dereferenceable(480) %801, i32 noundef 0)
          to label %802 unwind label %812

802:                                              ; preds = %799
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %803

803:                                              ; preds = %802
  %804 = getelementptr inbounds %struct.ExpandState, ptr %11, i32 0, i32 4
  %805 = load i8, ptr %804, align 1, !tbaa !115, !range !113, !noundef !114
  %806 = trunc i8 %805 to i1
  br i1 %806, label %807, label %829

807:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %808 unwind label %816

808:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 1 dereferenceable(1) %90) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef %89)
          to label %809 unwind label %820

809:                                              ; preds = %808
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  %810 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %810, ptr noundef @.str.11)
          to label %811 unwind label %825

811:                                              ; preds = %809
  invoke void @__cxa_throw(ptr %810, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1165 unwind label %264

812:                                              ; preds = %799
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %15, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %16, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  br label %1155

816:                                              ; preds = %807
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %15, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %16, align 4
  br label %824

820:                                              ; preds = %808
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %15, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  br label %824

824:                                              ; preds = %820, %816
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %1155

825:                                              ; preds = %809
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %15, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %16, align 4
  call void @__cxa_free_exception(ptr %810) #8
  br label %1155

829:                                              ; preds = %803
  br label %830

830:                                              ; preds = %829
  br label %831

831:                                              ; preds = %830
  %832 = load ptr, ptr %2, align 8, !tbaa !5
  %833 = load ptr, ptr %2, align 8, !tbaa !5
  %834 = getelementptr inbounds %"class.AST::Crate", ptr %833, i32 0, i32 2
  invoke void @_Z20Expand_Mod_IndexAnonRN3AST5CrateERNS_6ModuleE(ptr noundef nonnull align 8 dereferenceable(1112) %832, ptr noundef nonnull align 8 dereferenceable(480) %834)
          to label %835 unwind label %264

835:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %836 = load ptr, ptr %2, align 8, !tbaa !5
  %837 = getelementptr inbounds %"class.AST::Crate", ptr %836, i32 0, i32 5
  store ptr %837, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %92) #8
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %838 = load ptr, ptr %2, align 8, !tbaa !5
  %839 = getelementptr inbounds %"class.AST::Crate", ptr %838, i32 0, i32 2
  store ptr %839, ptr %93, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %840 unwind label %856

840:                                              ; preds = %835
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %841

841:                                              ; preds = %996, %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %842 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  %843 = load ptr, ptr %842, align 8, !tbaa !5
  store ptr %843, ptr %94, align 8, !tbaa !5
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %844 = load ptr, ptr %94, align 8, !tbaa !5
  %845 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480) %844)
          to label %846 unwind label %860

846:                                              ; preds = %841
  store ptr %845, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %847 = load ptr, ptr %95, align 8, !tbaa !5
  %848 = call ptr @_ZNSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %847) #8
  %849 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.450", ptr %96, i32 0, i32 0
  store ptr %848, ptr %849, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %850 = load ptr, ptr %95, align 8, !tbaa !5
  %851 = call ptr @_ZNSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %850) #8
  %852 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.450", ptr %97, i32 0, i32 0
  store ptr %851, ptr %852, align 8
  br label %853

853:                                              ; preds = %953, %846
  %854 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br i1 %854, label %864, label %855

855:                                              ; preds = %853
  store i32 29, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %957

856:                                              ; preds = %835
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %15, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1154

860:                                              ; preds = %841
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %15, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %16, align 4
  br label %956

864:                                              ; preds = %853
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %865 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  store ptr %865, ptr %98, align 8, !tbaa !5
  %866 = load ptr, ptr %98, align 8, !tbaa !5
  %867 = getelementptr inbounds %"struct.AST::Named", ptr %866, i32 0, i32 4
  %868 = invoke noundef ptr @_ZN13MacroRulesPtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %867)
          to label %869 unwind label %907

869:                                              ; preds = %864
  %870 = getelementptr inbounds %class.MacroRules, ptr %868, i32 0, i32 1
  %871 = load i8, ptr %870, align 8, !tbaa !120, !range !113, !noundef !114
  %872 = trunc i8 %871 to i1
  br i1 %872, label %873, label %929

873:                                              ; preds = %869
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #8
  %874 = load ptr, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #8
  %875 = load ptr, ptr %98, align 8, !tbaa !5
  %876 = getelementptr inbounds %"struct.AST::Named", ptr %875, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %877 = load ptr, ptr %98, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.AST::Named", ptr %877, i32 0, i32 4
  %879 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN13MacroRulesPtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %878)
          to label %880 unwind label %911

880:                                              ; preds = %873
  store ptr %879, ptr %101, align 8, !tbaa !5
  invoke void @_ZSt9make_pairIR8RcStringP10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair.455") align 8 %100, ptr noundef nonnull align 8 dereferenceable(8) %876, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %881 unwind label %911

881:                                              ; preds = %880
  %882 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_PS1_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %874, ptr noundef nonnull align 8 dereferenceable(16) %100)
          to label %883 unwind label %915

883:                                              ; preds = %881
  store { ptr, i8 } %882, ptr %102, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %102, i64 9, i1 false)
  call void @_ZNSt4pairI8RcStringP10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  %884 = getelementptr inbounds %"struct.std::pair.451", ptr %99, i32 0, i32 1
  %885 = load i8, ptr %884, align 8, !tbaa !133, !range !113, !noundef !114
  %886 = trunc i8 %885 to i1
  br i1 %886, label %887, label %927

887:                                              ; preds = %883
  br label %888

888:                                              ; preds = %887
  %889 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %890 unwind label %920

890:                                              ; preds = %888
  br i1 %889, label %891, label %924

891:                                              ; preds = %890
  %892 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %893 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %892, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %894 unwind label %920

894:                                              ; preds = %891
  %895 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %893, ptr noundef @.str.68)
          to label %896 unwind label %920

896:                                              ; preds = %894
  %897 = load ptr, ptr %98, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.AST::Named", ptr %897, i32 0, i32 3
  %899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %895, ptr noundef nonnull align 8 dereferenceable(8) %898)
          to label %900 unwind label %920

900:                                              ; preds = %896
  %901 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %899, ptr noundef @.str.69)
          to label %902 unwind label %920

902:                                              ; preds = %900
  %903 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef @_ZSt3decRSt8ios_base)
          to label %904 unwind label %920

904:                                              ; preds = %902
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %906 unwind label %920

906:                                              ; preds = %904
  br label %924

907:                                              ; preds = %946, %944, %942, %938, %936, %933, %930, %864
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %15, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %16, align 4
  br label %955

911:                                              ; preds = %880, %873
  %912 = landingpad { ptr, i32 }
          cleanup
  %913 = extractvalue { ptr, i32 } %912, 0
  store ptr %913, ptr %15, align 8
  %914 = extractvalue { ptr, i32 } %912, 1
  store i32 %914, ptr %16, align 4
  br label %919

915:                                              ; preds = %881
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %15, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %16, align 4
  call void @_ZNSt4pairI8RcStringP10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #8
  br label %919

919:                                              ; preds = %915, %911
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  br label %928

920:                                              ; preds = %904, %902, %900, %896, %894, %891, %888
  %921 = landingpad { ptr, i32 }
          cleanup
  %922 = extractvalue { ptr, i32 } %921, 0
  store ptr %922, ptr %15, align 8
  %923 = extractvalue { ptr, i32 } %921, 1
  store i32 %923, ptr %16, align 4
  br label %928

924:                                              ; preds = %906, %890
  br label %925

925:                                              ; preds = %924
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926, %883
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  br label %952

928:                                              ; preds = %920, %919
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #8
  br label %955

929:                                              ; preds = %869
  br label %930

930:                                              ; preds = %929
  %931 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %932 unwind label %907

932:                                              ; preds = %930
  br i1 %931, label %933, label %949

933:                                              ; preds = %932
  %934 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %935 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %934, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %936 unwind label %907

936:                                              ; preds = %933
  %937 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %935, ptr noundef @.str.70)
          to label %938 unwind label %907

938:                                              ; preds = %936
  %939 = load ptr, ptr %98, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.AST::Named", ptr %939, i32 0, i32 3
  %941 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %937, ptr noundef nonnull align 8 dereferenceable(8) %940)
          to label %942 unwind label %907

942:                                              ; preds = %938
  %943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %941, ptr noundef @.str.69)
          to label %944 unwind label %907

944:                                              ; preds = %942
  %945 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %943, ptr noundef @_ZSt3decRSt8ios_base)
          to label %946 unwind label %907

946:                                              ; preds = %944
  %947 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %945, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %948 unwind label %907

948:                                              ; preds = %946
  br label %949

949:                                              ; preds = %948, %932
  br label %950

950:                                              ; preds = %949
  br label %951

951:                                              ; preds = %950
  br label %952

952:                                              ; preds = %951, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %953

953:                                              ; preds = %952
  %954 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  br label %853

955:                                              ; preds = %928, %907
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %956

956:                                              ; preds = %955, %860
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1012

957:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %958 = load ptr, ptr %94, align 8, !tbaa !5
  %959 = getelementptr inbounds %"class.AST::Module", ptr %958, i32 0, i32 1
  store ptr %959, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  %960 = load ptr, ptr %103, align 8, !tbaa !5
  %961 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %960) #8
  %962 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %104, i32 0, i32 0
  store ptr %961, ptr %962, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %963 = load ptr, ptr %103, align 8, !tbaa !5
  %964 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %963) #8
  %965 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %105, i32 0, i32 0
  store ptr %964, ptr %965, align 8
  br label %966

966:                                              ; preds = %992, %957
  %967 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  br i1 %967, label %969, label %968

968:                                              ; preds = %966
  store i32 35, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %995

969:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %970 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  store ptr %970, ptr %106, align 8, !tbaa !5
  %971 = load ptr, ptr %106, align 8, !tbaa !5
  %972 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %971) #8
  %973 = getelementptr inbounds %"struct.AST::Named.382", ptr %972, i32 0, i32 4
  %974 = invoke noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %973)
          to label %975 unwind label %983

975:                                              ; preds = %969
  br i1 %974, label %976, label %991

976:                                              ; preds = %975
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  %977 = load ptr, ptr %106, align 8, !tbaa !5
  %978 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %977) #8
  %979 = getelementptr inbounds %"struct.AST::Named.382", ptr %978, i32 0, i32 4
  %980 = invoke noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %979)
          to label %981 unwind label %987

981:                                              ; preds = %976
  store ptr %980, ptr %107, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %982 unwind label %987

982:                                              ; preds = %981
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  br label %991

983:                                              ; preds = %969
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %15, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %16, align 4
  br label %994

987:                                              ; preds = %981, %976
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %15, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  br label %994

991:                                              ; preds = %982, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %992

992:                                              ; preds = %991
  %993 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  br label %966

994:                                              ; preds = %987, %983
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %1012

995:                                              ; preds = %968
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %996

996:                                              ; preds = %995
  %997 = call noundef i64 @_ZNKSt6vectorIPN3AST6ModuleESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  %998 = icmp ugt i64 %997, 0
  br i1 %998, label %841, label %999, !llvm.loop !136

999:                                              ; preds = %996
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  %1000 = load ptr, ptr %2, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"class.AST::Crate", ptr %1000, i32 0, i32 2
  %1002 = getelementptr inbounds %"class.AST::Module", ptr %1001, i32 0, i32 12
  store ptr %1002, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  %1003 = load ptr, ptr %108, align 8, !tbaa !5
  %1004 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1003) #8
  %1005 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.368", ptr %109, i32 0, i32 0
  store ptr %1004, ptr %1005, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1006 = load ptr, ptr %108, align 8, !tbaa !5
  %1007 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1006) #8
  %1008 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.368", ptr %110, i32 0, i32 0
  store ptr %1007, ptr %1008, align 8
  br label %1009

1009:                                             ; preds = %1150, %999
  %1010 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  br i1 %1010, label %1013, label %1011

1011:                                             ; preds = %1009
  store i32 37, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1153

1012:                                             ; preds = %994, %956
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  br label %1154

1013:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  %1014 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %109) #8
  store ptr %1014, ptr %111, align 8, !tbaa !5
  %1015 = load ptr, ptr %111, align 8, !tbaa !5
  %1016 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1015, i32 0, i32 0
  %1017 = load i8, ptr %1016, align 8, !tbaa !137, !range !113, !noundef !114
  %1018 = trunc i8 %1017 to i1
  br i1 %1018, label %1019, label %1146

1019:                                             ; preds = %1013
  %1020 = load ptr, ptr %111, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1020, i32 0, i32 3
  %1022 = invoke noundef zeroext i1 @_ZNK8MacroRef13is_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %1021)
          to label %1023 unwind label %1025

1023:                                             ; preds = %1019
  br i1 %1022, label %1029, label %1024

1024:                                             ; preds = %1023
  store i32 38, ptr %78, align 4
  br label %1147

1025:                                             ; preds = %1019
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %15, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %16, align 4
  br label %1152

1029:                                             ; preds = %1023
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #8
  %1030 = load ptr, ptr %111, align 8, !tbaa !5
  %1031 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1030, i32 0, i32 1
  %1032 = load ptr, ptr %111, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1032, i32 0, i32 3
  %1034 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8MacroRef13as_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %1033)
          to label %1035 unwind label %1079

1035:                                             ; preds = %1029
  invoke void @_ZSt9make_pairIRK8RcStringRKPK10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.457") align 8 %112, ptr noundef nonnull align 8 dereferenceable(8) %1031, ptr noundef nonnull align 8 dereferenceable(8) %1034)
          to label %1036 unwind label %1079

1036:                                             ; preds = %1035
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  %1037 = load ptr, ptr %91, align 8, !tbaa !5
  %1038 = load ptr, ptr %111, align 8, !tbaa !5
  %1039 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1038, i32 0, i32 1
  %1040 = invoke ptr @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1037, ptr noundef nonnull align 8 dereferenceable(8) %1039)
          to label %1041 unwind label %1083

1041:                                             ; preds = %1036
  %1042 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.453", ptr %113, i32 0, i32 0
  store ptr %1040, ptr %1042, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  %1043 = load ptr, ptr %91, align 8, !tbaa !5
  %1044 = call ptr @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1043) #8
  %1045 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.453", ptr %114, i32 0, i32 0
  store ptr %1044, ptr %1045, align 8
  %1046 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEES9_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br i1 %1046, label %1047, label %1094

1047:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #8
  %1048 = load ptr, ptr %91, align 8, !tbaa !5
  %1049 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %1048, ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %1050 unwind label %1087

1050:                                             ; preds = %1047
  store { ptr, i8 } %1049, ptr %116, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %115, ptr align 8 %116, i64 9, i1 false)
  br label %1051

1051:                                             ; preds = %1050
  %1052 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1053 unwind label %1087

1053:                                             ; preds = %1051
  br i1 %1052, label %1054, label %1091

1054:                                             ; preds = %1053
  %1055 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1056 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1055, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %1057 unwind label %1087

1057:                                             ; preds = %1054
  %1058 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef @.str.71)
          to label %1059 unwind label %1087

1059:                                             ; preds = %1057
  %1060 = load ptr, ptr %111, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1060, i32 0, i32 1
  %1062 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1058, ptr noundef nonnull align 8 dereferenceable(8) %1061)
          to label %1063 unwind label %1087

1063:                                             ; preds = %1059
  %1064 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1062, ptr noundef @.str.72)
          to label %1065 unwind label %1087

1065:                                             ; preds = %1063
  %1066 = getelementptr inbounds %"struct.std::pair.451", ptr %115, i32 0, i32 0
  %1067 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1066) #8
  %1068 = getelementptr inbounds %"struct.std::pair.459", ptr %1067, i32 0, i32 1
  %1069 = load ptr, ptr %1068, align 8, !tbaa !141
  %1070 = getelementptr inbounds %class.MacroRules, ptr %1069, i32 0, i32 3
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1064, ptr noundef nonnull align 8 dereferenceable(8) %1070)
          to label %1072 unwind label %1087

1072:                                             ; preds = %1065
  %1073 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1071, ptr noundef @.str.73)
          to label %1074 unwind label %1087

1074:                                             ; preds = %1072
  %1075 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1073, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1076 unwind label %1087

1076:                                             ; preds = %1074
  %1077 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1075, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1078 unwind label %1087

1078:                                             ; preds = %1076
  br label %1091

1079:                                             ; preds = %1035, %1029
  %1080 = landingpad { ptr, i32 }
          cleanup
  %1081 = extractvalue { ptr, i32 } %1080, 0
  store ptr %1081, ptr %15, align 8
  %1082 = extractvalue { ptr, i32 } %1080, 1
  store i32 %1082, ptr %16, align 4
  br label %1145

1083:                                             ; preds = %1132, %1130, %1128, %1123, %1121, %1115, %1113, %1109, %1107, %1104, %1101, %1036
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %15, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %16, align 4
  br label %1144

1087:                                             ; preds = %1076, %1074, %1072, %1065, %1063, %1059, %1057, %1054, %1051, %1047
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %15, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #8
  br label %1144

1091:                                             ; preds = %1078, %1053
  br label %1092

1092:                                             ; preds = %1091
  br label %1093

1093:                                             ; preds = %1092
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #8
  br label %1143

1094:                                             ; preds = %1041
  %1095 = getelementptr inbounds %"struct.std::pair.457", ptr %112, i32 0, i32 1
  %1096 = load ptr, ptr %1095, align 8, !tbaa !143
  %1097 = getelementptr inbounds %class.MacroRules, ptr %1096, i32 0, i32 6
  %1098 = call noundef zeroext i1 @_ZNKSt6vectorI13MacroRulesArmSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1097) #8
  br i1 %1098, label %1099, label %1100

1099:                                             ; preds = %1094
  br label %1142

1100:                                             ; preds = %1094
  br label %1101

1101:                                             ; preds = %1100
  %1102 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1103 unwind label %1083

1103:                                             ; preds = %1101
  br i1 %1102, label %1104, label %1135

1104:                                             ; preds = %1103
  %1105 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1105, ptr noundef @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %1107 unwind label %1083

1107:                                             ; preds = %1104
  %1108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1106, ptr noundef @.str.74)
          to label %1109 unwind label %1083

1109:                                             ; preds = %1107
  %1110 = load ptr, ptr %111, align 8, !tbaa !5
  %1111 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %1110, i32 0, i32 1
  %1112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1108, ptr noundef nonnull align 8 dereferenceable(8) %1111)
          to label %1113 unwind label %1083

1113:                                             ; preds = %1109
  %1114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1112, ptr noundef @.str.72)
          to label %1115 unwind label %1083

1115:                                             ; preds = %1113
  %1116 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %113) #8
  %1117 = getelementptr inbounds %"struct.std::pair.459", ptr %1116, i32 0, i32 1
  %1118 = load ptr, ptr %1117, align 8, !tbaa !141
  %1119 = getelementptr inbounds %class.MacroRules, ptr %1118, i32 0, i32 3
  %1120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1114, ptr noundef nonnull align 8 dereferenceable(8) %1119)
          to label %1121 unwind label %1083

1121:                                             ; preds = %1115
  %1122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1120, ptr noundef @.str.75)
          to label %1123 unwind label %1083

1123:                                             ; preds = %1121
  %1124 = getelementptr inbounds %"struct.std::pair.457", ptr %112, i32 0, i32 1
  %1125 = load ptr, ptr %1124, align 8, !tbaa !143
  %1126 = getelementptr inbounds %class.MacroRules, ptr %1125, i32 0, i32 3
  %1127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1122, ptr noundef nonnull align 8 dereferenceable(8) %1126)
          to label %1128 unwind label %1083

1128:                                             ; preds = %1123
  %1129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1127, ptr noundef @.str.76)
          to label %1130 unwind label %1083

1130:                                             ; preds = %1128
  %1131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1129, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1132 unwind label %1083

1132:                                             ; preds = %1130
  %1133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1131, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1134 unwind label %1083

1134:                                             ; preds = %1132
  br label %1135

1135:                                             ; preds = %1134, %1103
  br label %1136

1136:                                             ; preds = %1135
  br label %1137

1137:                                             ; preds = %1136
  %1138 = getelementptr inbounds %"struct.std::pair.457", ptr %112, i32 0, i32 1
  %1139 = load ptr, ptr %1138, align 8, !tbaa !5
  %1140 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %113) #8
  %1141 = getelementptr inbounds %"struct.std::pair.459", ptr %1140, i32 0, i32 1
  store ptr %1139, ptr %1141, align 8, !tbaa !141
  br label %1142

1142:                                             ; preds = %1137, %1099
  br label %1143

1143:                                             ; preds = %1142, %1093
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @_ZNSt4pairI8RcStringPK10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #8
  br label %1146

1144:                                             ; preds = %1087, %1083
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @_ZNSt4pairI8RcStringPK10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #8
  br label %1145

1145:                                             ; preds = %1144, %1079
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #8
  br label %1152

1146:                                             ; preds = %1143, %1013
  store i32 0, ptr %78, align 4
  br label %1147

1147:                                             ; preds = %1146, %1024
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  %1148 = load i32, ptr %78, align 4
  switch i32 %1148, label %1165 [
    i32 0, label %1149
    i32 38, label %1150
  ]

1149:                                             ; preds = %1147
  br label %1150

1150:                                             ; preds = %1149, %1147
  %1151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %109) #8
  br label %1009

1152:                                             ; preds = %1145, %1025
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1154

1153:                                             ; preds = %1011
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  ret void

1154:                                             ; preds = %1152, %1012, %856
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1155

1155:                                             ; preds = %1154, %825, %824, %812, %794, %722, %676, %633, %509, %420, %331, %307, %306, %284, %264, %263
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %1156

1156:                                             ; preds = %1155, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %1157

1157:                                             ; preds = %1156, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %1158

1158:                                             ; preds = %1157, %235, %231
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  br label %1159

1159:                                             ; preds = %1158, %227
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  br label %1160

1160:                                             ; preds = %1159
  %1161 = load ptr, ptr %15, align 8
  %1162 = load i32, ptr %16, align 4
  %1163 = insertvalue { ptr, i32 } poison, ptr %1161, 0
  %1164 = insertvalue { ptr, i32 } %1163, i32 %1162, 1
  resume { ptr, i32 } %1164

1165:                                             ; preds = %1147, %811, %297
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ6ExpandRNS6_5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) #3 align 2

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

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

declare void @_ZN3AST13AttributeList9push_backENS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST9AttributeD2Ev(ptr noundef nonnull align 8 dereferenceable(169)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4Item10make_CrateENS0_10Data_CrateE(ptr dead_on_unwind noalias writable sret(%"class.AST::Item") align 8, ptr noundef) #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 #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480)) #2 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_PS1_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIR8RcStringP10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.455") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN3AST6ModuleESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringRKPK10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.457") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorI13MacroRulesArmSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #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 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !89, i64 792}
!12 = !{!"_ZTSN3AST5CrateE", !13, i64 0, !18, i64 24, !27, i64 72, !30, i64 552, !67, i64 576, !72, i64 624, !29, i64 672, !29, i64 680, !29, i64 688, !29, i64 696, !47, i64 704, !75, i64 712, !79, i64 736, !83, i64 760, !87, i64 784, !88, i64 788, !89, i64 792, !48, i64 800, !48, i64 832, !29, i64 864, !90, i64 872}
!13 = !{!"_ZTSN3AST13AttributeListE", !14, i64 0}
!14 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST12AbsolutePathESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !26, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN3AST6ModuleE", !28, i64 0, !34, i64 32, !38, i64 56, !42, i64 80, !46, i64 104, !47, i64 176, !7, i64 177, !50, i64 184, !50, i64 240, !50, i64 296, !50, i64 352, !55, i64 408, !59, i64 432, !63, i64 456}
!28 = !{!"_ZTSN3AST12AbsolutePathE", !29, i64 0, !30, i64 8}
!29 = !{!"_ZTS8RcString", !6, i64 0}
!30 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSN3AST6Module8FileInfoE", !47, i64 0, !47, i64 1, !48, i64 8, !48, i64 40}
!47 = !{!"bool", !7, i64 0}
!48 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !49, i64 0, !26, i64 8, !7, i64 16}
!49 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!50 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !51, i64 0}
!51 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !26, i64 8, !52, i64 16, !26, i64 24, !53, i64 32, !6, i64 48}
!52 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!53 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !54, i64 0, !26, i64 8}
!54 = !{!"float", !7, i64 0}
!55 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !64, i64 0}
!64 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!67 = !{!"_ZTSSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !70, i64 0, !23, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessI8RcStringE"}
!72 = !{!"_ZTSSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !70, i64 0, !23, i64 8}
!75 = !{!"_ZTSSt6vectorIN3AST8TestDescESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3AST8TestDescESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSSt6vectorIN3AST12ProcMacroDefESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSN3AST7EditionE", !7, i64 0}
!88 = !{!"_ZTSN3AST5Crate4TypeE", !7, i64 0}
!89 = !{!"_ZTSN3AST5Crate7LoadStdE", !7, i64 0}
!90 = !{!"_ZTSN3AST4PathE", !91, i64 8, !93, i64 56}
!91 = !{!"_ZTSN3AST4Path5ClassE", !92, i64 0, !7, i64 8}
!92 = !{!"_ZTSN3AST4Path5Class3TagE", !7, i64 0}
!93 = !{!"_ZTSN3AST4Path8BindingsE", !94, i64 0, !97, i64 64, !100, i64 128}
!94 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_ValueEEE", !28, i64 0, !95, i64 32}
!95 = !{!"_ZTSN3AST17PathBinding_ValueE", !96, i64 0, !7, i64 8}
!96 = !{!"_ZTSN3AST17PathBinding_Value3TagE", !7, i64 0}
!97 = !{!"_ZTSN3AST11PathBindingINS_16PathBinding_TypeEEE", !28, i64 0, !98, i64 32}
!98 = !{!"_ZTSN3AST16PathBinding_TypeE", !99, i64 0, !7, i64 8}
!99 = !{!"_ZTSN3AST16PathBinding_Type3TagE", !7, i64 0}
!100 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_MacroEEE", !28, i64 0, !101, i64 32}
!101 = !{!"_ZTSN3AST17PathBinding_MacroE", !102, i64 0, !7, i64 8}
!102 = !{!"_ZTSN3AST17PathBinding_Macro3TagE", !7, i64 0}
!103 = !{!12, !87, i64 784}
!104 = !{!105, !6, i64 0}
!105 = !{!"_ZTSSt16initializer_listIN3AST8PathNodeEE", !6, i64 0, !26, i64 8}
!106 = !{!105, !26, i64 8}
!107 = !{!108, !108, i64 0}
!108 = !{!"vtable pointer", !8, i64 0}
!109 = !{!110, !47, i64 28}
!110 = !{!"_ZTS11ExpandState", !6, i64 0, !111, i64 8, !112, i64 24, !47, i64 28, !47, i64 29}
!111 = !{!"_ZTS5LListIPKN3AST6ModuleEE", !6, i64 0, !6, i64 8}
!112 = !{!"_ZTS10ExpandMode", !7, i64 0}
!113 = !{i8 0, i8 2}
!114 = !{}
!115 = !{!110, !47, i64 29}
!116 = !{!26, !26, i64 0}
!117 = !{!110, !112, i64 24}
!118 = distinct !{!118, !119}
!119 = !{!"llvm.loop.mustprogress"}
!120 = !{!121, !47, i64 8}
!121 = !{!"_ZTS10MacroRules", !47, i64 8, !47, i64 9, !29, i64 16, !87, i64 24, !122, i64 32, !129, i64 40}
!122 = !{!"_ZTSN5Ident7HygieneE", !123, i64 0}
!123 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !124, i64 0}
!124 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !125, i64 0}
!125 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !126, i64 0}
!126 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !127, i64 0}
!127 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !128, i64 0}
!128 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !6, i64 0}
!129 = !{!"_ZTSSt6vectorI13MacroRulesArmSaIS0_EE", !130, i64 0}
!130 = !{!"_ZTSSt12_Vector_baseI13MacroRulesArmSaIS0_EE", !131, i64 0}
!131 = !{!"_ZTSNSt12_Vector_baseI13MacroRulesArmSaIS0_EE12_Vector_implE", !132, i64 0}
!132 = !{!"_ZTSNSt12_Vector_baseI13MacroRulesArmSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!133 = !{!134, !47, i64 8}
!134 = !{!"_ZTSSt4pairISt17_Rb_tree_iteratorIS_IK8RcStringPK10MacroRulesEEbE", !135, i64 0, !47, i64 8}
!135 = !{!"_ZTSSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEE", !6, i64 0}
!136 = distinct !{!136, !119}
!137 = !{!138, !47, i64 0}
!138 = !{!"_ZTSN3AST6Module11MacroImportE", !47, i64 0, !29, i64 8, !28, i64 16, !139, i64 48}
!139 = !{!"_ZTS8MacroRef", !140, i64 0, !7, i64 8}
!140 = !{!"_ZTSN8MacroRef3TagE", !7, i64 0}
!141 = !{!142, !6, i64 8}
!142 = !{!"_ZTSSt4pairIK8RcStringPK10MacroRulesE", !29, i64 0, !6, i64 8}
!143 = !{!144, !6, i64 8}
!144 = !{!"_ZTSSt4pairI8RcStringPK10MacroRulesE", !29, i64 0, !6, i64 8}


; 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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandDecorator>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandDecorator>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandDecorator>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandDecorator>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.0" = type { %"class.std::_Rb_tree.1" }
%"class.std::_Rb_tree.1" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>, std::_Select1st<std::pair<const RcString, std::unique_ptr<ExpandProcMacro>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.RcString = type { ptr }
%"class.AST::Visibility" = type <{ %"class.std::shared_ptr.249", %"class.std::shared_ptr.252", i32, [4 x i8] }>
%"class.std::shared_ptr.249" = type { %"class.std::__shared_ptr.250" }
%"class.std::__shared_ptr.250" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.252" = type { %"class.std::__shared_ptr.253" }
%"class.std::__shared_ptr.253" = type { ptr, %"class.std::__shared_count" }
%"class.std::unique_ptr.374" = type { %"struct.std::__uniq_ptr_data.375" }
%"struct.std::__uniq_ptr_data.375" = type { %"class.std::__uniq_ptr_impl.376" }
%"class.std::__uniq_ptr_impl.376" = type { %"class.std::tuple.377" }
%"class.std::tuple.377" = type { %"struct.std::_Tuple_impl.378" }
%"struct.std::_Tuple_impl.378" = type { %"struct.std::_Head_base.381" }
%"struct.std::_Head_base.381" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.22" = type { ptr }
%struct.ExpandState = type <{ ptr, %struct.LList, i32, i8, i8, [2 x i8] }>
%struct.LList = type { ptr, ptr }
%"class.std::function.44" = 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.anon.440 = type { ptr }
%"class.std::vector.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = 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.__gnu_cxx::__normal_iterator.389" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.388" = type { ptr }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.441 = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.124", %"class.std::unique_ptr.132", %"class.std::vector.119" }
%"class.std::unique_ptr.124" = type { %"struct.std::__uniq_ptr_data.125" }
%"struct.std::__uniq_ptr_data.125" = type { %"class.std::__uniq_ptr_impl.126" }
%"class.std::__uniq_ptr_impl.126" = type { %"class.std::tuple.127" }
%"class.std::tuple.127" = type { %"struct.std::_Tuple_impl.128" }
%"struct.std::_Tuple_impl.128" = type { %"struct.std::_Head_base.131" }
%"struct.std::_Head_base.131" = type { ptr }
%"class.std::unique_ptr.132" = type { %"struct.std::__uniq_ptr_data.133" }
%"struct.std::__uniq_ptr_data.133" = type { %"class.std::__uniq_ptr_impl.134" }
%"class.std::__uniq_ptr_impl.134" = type { %"class.std::tuple.135" }
%"class.std::tuple.135" = type { %"struct.std::_Tuple_impl.136" }
%"struct.std::_Tuple_impl.136" = type { %"struct.std::_Head_base.139" }
%"struct.std::_Head_base.139" = type { ptr }
%"class.std::vector.119" = type { %"struct.std::_Vector_base.120" }
%"struct.std::_Vector_base.120" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.140", %"struct.AST::PathBinding.141" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.140" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.141" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.259", i8, [7 x i8] }>
%"class.std::vector.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.121" = type { i8 }
%"class.AST::AttributeList" = type { %"class.std::vector.48" }
%"class.std::vector.48" = type { %"struct.std::_Vector_base.49" }
%"struct.std::_Vector_base.49" = type { %"struct.std::_Vector_base<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.AST::AttributeName" = type { %"class.std::vector" }
%"class.AST::Attribute" = type <{ %struct.Span, %"struct.AST::AttributeName", %class.TokenTree, i8, [7 x i8] }>
%class.TokenTree = type { ptr, i32, %"class.Ident::Hygiene", %class.Token, %"class.std::vector.37" }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr.29" }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%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 }
%"class.std::vector.37" = type { %"struct.std::_Vector_base.38" }
%"struct.std::_Vector_base.38" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named.382" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"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.59", %"class.std::vector.64", %"class.std::vector.69", %"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.79", %"class.std::vector.84", %"class.std::vector.89" }
%"class.std::vector.64" = type { %"struct.std::_Vector_base.65" }
%"struct.std::_Vector_base.65" = 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.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = 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.79" = type { %"struct.std::_Vector_base.80" }
%"struct.std::_Vector_base.80" = 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.84" = type { %"struct.std::_Vector_base.85" }
%"struct.std::_Vector_base.85" = 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.89" = type { %"struct.std::_Vector_base.90" }
%"struct.std::_Vector_base.90" = 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::Item::Data_Crate" = type { %class.RcString }
%"class.__gnu_cxx::__normal_iterator.144" = type { ptr }
%class.anon.443 = type { i8 }
%"class.std::vector.445" = type { %"struct.std::_Vector_base.446" }
%"struct.std::_Vector_base.446" = type { %"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module *, std::allocator<AST::Module *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.450" = type { ptr }
%"struct.std::pair.455" = type { %class.RcString, ptr }
%"class.__gnu_cxx::__normal_iterator.368" = type { ptr }
%"struct.std::pair.457" = type { %class.RcString, ptr }
%"struct.std::_Rb_tree_iterator.453" = type { ptr }
%"struct.std::pair.451" = type <{ %"struct.std::_Rb_tree_iterator.453", i8, [7 x i8] }>

@g_decorators = external dso_local global %"class.std::map", align 8
@g_macros = external dso_local global %"class.std::map.0", align 8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.11 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@__FUNCTION__._Z6ExpandRN3AST5CrateE = external hidden unnamed_addr constant [7 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [2 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST9Attribute4nameEv(ptr noundef nonnull align 8 dereferenceable(169)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST13AttributeNameeqERK8RcString(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #4

; 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 @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3

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

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

declare void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #4

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

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

; Function Attrs: nounwind
declare void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240)) unnamed_addr #1

declare void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(1112), ptr, ptr, i32 noundef) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488)) unnamed_addr #2 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), i32 noundef) local_unnamed_addr #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

declare void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8, i32 noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE6insertISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPS7_S9_EEEvEESF_NSD_IPKS7_S9_EET_SK_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr, ptr) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.374") align 8, ptr noundef nonnull align 8 dereferenceable(568)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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 @_Z20Expand_Mod_IndexAnonRN3AST5CrateERNS_6ModuleE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16Expand_Mod_EarlyRN3AST5CrateERNS_6ModuleERSt6vectorISt10unique_ptrINS_5NamedINS_4ItemEEESt14default_deleteIS8_EESaISB_EE(ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z6ExpandRN3AST5CrateE(ptr noundef nonnull align 8 dereferenceable(1112) %0) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %3 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %4 = alloca %"struct.std::_Rb_tree_iterator.22", align 8
  %5 = alloca %"struct.std::_Rb_tree_iterator.22", align 8
  %6 = alloca %struct.ExpandState, align 8
  %7 = alloca %struct.LList, align 8
  %8 = alloca %"class.std::function.44", align 8
  %9 = alloca %class.anon.440, align 8
  %10 = alloca %"class.std::vector.59", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.389", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %13 = alloca %class.RcString, align 8
  %14 = alloca %class.RcString, align 8
  %15 = alloca %class.RcString, align 8
  %16 = alloca %class.RcString, align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.441, align 8
  %20 = alloca %"class.AST::Path", align 8
  %21 = alloca %"class.AST::Path", align 8
  %22 = alloca %class.RcString, align 8
  %23 = alloca %"class.std::vector.119", align 8
  %24 = alloca [2 x %"class.AST::PathNode"], align 8
  %25 = alloca %class.RcString, align 8
  %26 = alloca %"struct.AST::PathParams", align 8
  %27 = alloca %class.RcString, align 8
  %28 = alloca %"struct.AST::PathParams", align 8
  %29 = alloca %"class.std::allocator.121", align 1
  %30 = alloca %"class.AST::Path", align 8
  %31 = alloca %class.RcString, align 8
  %32 = alloca %"class.std::vector.119", align 8
  %33 = alloca [2 x %"class.AST::PathNode"], align 8
  %34 = alloca %class.RcString, align 8
  %35 = alloca %"struct.AST::PathParams", align 8
  %36 = alloca %class.RcString, align 8
  %37 = alloca %"struct.AST::PathParams", align 8
  %38 = alloca %"class.std::allocator.121", align 1
  %39 = alloca %"class.AST::AttributeList", align 8
  %40 = alloca %"struct.AST::AttributeName", align 8
  %41 = alloca %class.RcString, align 8
  %42 = alloca %"class.AST::Attribute", align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"struct.AST::AttributeName", align 8
  %45 = alloca %class.TokenTree, align 8
  %46 = alloca %"class.std::unique_ptr.374", align 8
  %47 = alloca %"struct.AST::Named.382", align 8
  %48 = alloca %struct.Span, align 8
  %49 = alloca %"class.AST::AttributeList", align 8
  %50 = alloca %"class.AST::Visibility", align 8
  %51 = alloca %"struct.AST::AbsolutePath", align 8
  %52 = alloca %class.RcString, align 8
  %53 = alloca %"class.AST::Item", align 8
  %54 = alloca %"struct.AST::Item::Data_Crate", align 8
  %55 = alloca %"struct.AST::AbsolutePath", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.144", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.144", align 8
  %58 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %59 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %60 = alloca %"struct.AST::AbsolutePath", align 8
  %61 = alloca %"struct.AST::AbsolutePath", align 8
  %62 = alloca %"struct.AST::AbsolutePath", align 8
  %63 = alloca %struct.Span, align 8
  %64 = alloca %"class.std::function", align 8
  %65 = alloca %class.anon.443, align 1
  %66 = alloca %"class.std::vector.445", align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %70 = alloca %"struct.std::pair.455", align 8
  %71 = alloca ptr, align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %76 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %77 = alloca %"struct.std::pair.457", align 8
  %78 = alloca %"struct.std::_Rb_tree_iterator.453", align 8
  %79 = alloca %"struct.std::_Rb_tree_iterator.453", align 8
  %80 = alloca %"struct.std::pair.451", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  %81 = tail call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #7
  store ptr %81, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7
  %82 = tail call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #7
  store ptr %82, ptr %3, align 8
  %83 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  br i1 %83, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %96, %1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %84 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_macros) #7
  store ptr %84, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %85 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_macros) #7
  store ptr %85, ptr %5, align 8
  %86 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br i1 %86, label %.lr.ph196, label %._crit_edge197

.lr.ph:                                           ; preds = %1, %96
  %87 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  %88 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %88, label %89, label %96

89:                                               ; preds = %.lr.ph
  %90 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %91 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %90, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull @.str.56)
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %87)
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %96

96:                                               ; preds = %89, %.lr.ph
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  %98 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  br i1 %98, label %.lr.ph, label %._crit_edge

._crit_edge197:                                   ; preds = %112, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  %99 = getelementptr inbounds i8, ptr %0, i64 72
  call void @_ZN5LListIPKN3AST6ModuleEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef null, ptr noundef nonnull %99)
  %100 = load ptr, ptr %7, align 8
  %101 = getelementptr inbounds i8, ptr %7, i64 8
  %102 = load ptr, ptr %101, align 8
  call void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr %100, ptr %102, i32 noundef 0)
  call void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  store ptr %0, ptr %9, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ6ExpandRNS6_5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef 0, ptr noundef nonnull %8)
          to label %115 unwind label %130

.lr.ph196:                                        ; preds = %._crit_edge, %112
  %103 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %104 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %104, label %105, label %112

105:                                              ; preds = %.lr.ph196
  %106 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %106, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull @.str.57)
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %103)
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %112

112:                                              ; preds = %105, %.lr.ph196
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %114 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #7
  br i1 %114, label %.lr.ph196, label %._crit_edge197

115:                                              ; preds = %._crit_edge197
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  invoke void @_Z16Expand_Mod_EarlyRN3AST5CrateERNS_6ModuleERSt6vectorISt10unique_ptrINS_5NamedINS_4ItemEEESt14default_deleteIS8_EESaISB_EE(ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr noundef nonnull align 8 dereferenceable(480) %99, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %116 unwind label %132

116:                                              ; preds = %115
  %117 = getelementptr inbounds i8, ptr %0, i64 104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %118 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %117) #7
  store ptr %118, ptr %12, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEC2IPS8_vEERKNS0_IT_SD_EE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %119 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %120 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %119)
          to label %121 unwind label %134

121:                                              ; preds = %116
  %122 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %123 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %122)
          to label %124 unwind label %134

124:                                              ; preds = %121
  %125 = load ptr, ptr %11, align 8
  %126 = invoke ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE6insertISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPS7_S9_EEEvEESF_NSD_IPKS7_S9_EET_SK_(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr %125, ptr %120, ptr %123)
          to label %127 unwind label %134

127:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %128 = getelementptr inbounds i8, ptr %0, i64 792
  %129 = load i32, ptr %128, align 8, !tbaa !11
  switch i32 %129, label %150 [
    i32 0, label %136
    i32 1, label %143
  ]

130:                                              ; preds = %._crit_edge197
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  br label %714

132:                                              ; preds = %115
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %713

134:                                              ; preds = %124, %121, %116
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br label %713

136:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %15, ptr noundef nonnull @.str.58)
          to label %137 unwind label %139

137:                                              ; preds = %136
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %.sink.split

139:                                              ; preds = %136
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %712

141:                                              ; preds = %.invoke, %522, %506, %346, %344, %342, %340, %338, %333, %331, %326, %324, %321, %318, %._crit_edge203, %153, %150
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %712

143:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %16, ptr noundef nonnull @.str.59)
          to label %144 unwind label %146

144:                                              ; preds = %143
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %16)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %.sink.split

146:                                              ; preds = %143
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br label %712

.sink.split:                                      ; preds = %137, %144
  %.sink214 = phi i64 [ 672, %144 ], [ 680, %137 ]
  %148 = getelementptr inbounds i8, ptr %0, i64 %.sink214
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %148)
  br label %150

150:                                              ; preds = %.sink.split, %127
  %151 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull @.str.19)
          to label %152 unwind label %141

152:                                              ; preds = %150
  br i1 %151, label %153, label %291

153:                                              ; preds = %152
  %154 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull @.str.19)
          to label %155 unwind label %141

155:                                              ; preds = %153
  br i1 %154, label %163, label %156

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  store ptr %13, ptr %19, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %157 unwind label %159

157:                                              ; preds = %156
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  %158 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef nonnull @.str.11)
          to label %.invoke unwind label %161

159:                                              ; preds = %156
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %712

161:                                              ; preds = %157
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %158) #7
  br label %712

163:                                              ; preds = %155
  %164 = getelementptr inbounds i8, ptr %0, i64 872
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %20) #7
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %20)
          to label %165 unwind label %171

165:                                              ; preds = %163
  %166 = invoke noundef zeroext i1 @_ZNK3AST4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %164, ptr noundef nonnull align 8 dereferenceable(240) %20)
          to label %167 unwind label %173

167:                                              ; preds = %165
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %20) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %20) #7
  br i1 %166, label %168, label %236

168:                                              ; preds = %167
  %169 = getelementptr inbounds i8, ptr %0, i64 784
  %170 = load i32, ptr %169, align 8, !tbaa !103
  switch i32 %170, label %236 [
    i32 0, label %176
    i32 1, label %176
    i32 2, label %206
  ]

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

173:                                              ; preds = %165
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %20) #7
  br label %175

175:                                              ; preds = %173, %171
  %.pn = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %20) #7
  br label %712

176:                                              ; preds = %168, %168
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %21) #7
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %24) #7
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.60)
          to label %177 unwind label %.thread

177:                                              ; preds = %176
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %26)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef nonnull %25, ptr noundef nonnull %26)
          to label %178 unwind label %188

178:                                              ; preds = %177
  %179 = getelementptr inbounds i8, ptr %24, i64 40
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.61)
          to label %180 unwind label %188

180:                                              ; preds = %178
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %28)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %179, ptr noundef nonnull %27, ptr noundef nonnull %28)
          to label %181 unwind label %190

181:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr nonnull %24, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %182 unwind label %192

182:                                              ; preds = %181
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %21, ptr noundef nonnull %22, ptr noundef nonnull %23)
          to label %183 unwind label %194

183:                                              ; preds = %182
  %184 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %164, ptr noundef nonnull align 8 dereferenceable(240) %21)
          to label %185 unwind label %196

185:                                              ; preds = %183
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %21) #7
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  %186 = getelementptr inbounds i8, ptr %24, i64 40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %186) #7
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %28) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %26) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %24) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %21) #7
  br label %236

.thread:                                          ; preds = %176
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

188:                                              ; preds = %178, %177
  %.0121 = phi ptr [ %179, %178 ], [ %24, %177 ]
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %201

190:                                              ; preds = %180
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit191

192:                                              ; preds = %181
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit191.loopexit

194:                                              ; preds = %182
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %198

196:                                              ; preds = %183
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %21) #7
  br label %198

198:                                              ; preds = %196, %194
  %.pn143 = phi { ptr, i32 } [ %197, %196 ], [ %195, %194 ]
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  br label %.loopexit191.loopexit

.loopexit191.loopexit:                            ; preds = %198, %192
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %198 ], [ %193, %192 ]
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  %199 = getelementptr inbounds i8, ptr %24, i64 40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %199) #7
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #7
  br label %.loopexit191

.loopexit191:                                     ; preds = %.loopexit191.loopexit, %190
  %200 = phi i1 [ false, %190 ], [ true, %.loopexit191.loopexit ]
  %.pn143.pn.pn = phi { ptr, i32 } [ %191, %190 ], [ %.pn143.pn, %.loopexit191.loopexit ]
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %28) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  br label %201

201:                                              ; preds = %188, %.loopexit191
  %.1125 = phi i1 [ %200, %.loopexit191 ], [ false, %188 ]
  %.1122 = phi ptr [ %179, %.loopexit191 ], [ %.0121, %188 ]
  %.pn143.pn.pn.pn = phi { ptr, i32 } [ %.pn143.pn.pn, %.loopexit191 ], [ %189, %188 ]
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %26) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  %202 = icmp eq ptr %24, %.1122
  %or.cond = select i1 %.1125, i1 true, i1 %202
  br i1 %or.cond, label %.loopexit, label %.preheader190

.preheader190:                                    ; preds = %201, %.preheader190
  %203 = phi ptr [ %204, %.preheader190 ], [ %.1122, %201 ]
  %204 = getelementptr inbounds i8, ptr %203, i64 -40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %204) #7
  %205 = icmp eq ptr %204, %24
  br i1 %205, label %.loopexit, label %.preheader190

.loopexit:                                        ; preds = %.preheader190, %.thread, %201
  %.pn143.pn.pn.pn.pn183 = phi { ptr, i32 } [ %187, %.thread ], [ %.pn143.pn.pn.pn, %201 ], [ %.pn143.pn.pn.pn, %.preheader190 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %24) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %21) #7
  br label %712

206:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %30) #7
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %33) #7
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull @.str.60)
          to label %207 unwind label %.thread184

207:                                              ; preds = %206
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %35)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %33, ptr noundef nonnull %34, ptr noundef nonnull %35)
          to label %208 unwind label %218

208:                                              ; preds = %207
  %209 = getelementptr inbounds i8, ptr %33, i64 40
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull @.str.62)
          to label %210 unwind label %218

210:                                              ; preds = %208
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %37)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %209, ptr noundef nonnull %36, ptr noundef nonnull %37)
          to label %211 unwind label %220

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr nonnull %33, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %212 unwind label %222

212:                                              ; preds = %211
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %30, ptr noundef nonnull %31, ptr noundef nonnull %32)
          to label %213 unwind label %224

213:                                              ; preds = %212
  %214 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %164, ptr noundef nonnull align 8 dereferenceable(240) %30)
          to label %215 unwind label %226

215:                                              ; preds = %213
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #7
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  %216 = getelementptr inbounds i8, ptr %33, i64 40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %216) #7
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #7
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %37) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %35) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %33) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %30) #7
  br label %236

.thread184:                                       ; preds = %206
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit193

218:                                              ; preds = %208, %207
  %.0127 = phi ptr [ %209, %208 ], [ %33, %207 ]
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %231

220:                                              ; preds = %210
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit194

222:                                              ; preds = %211
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit194.loopexit

224:                                              ; preds = %212
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %228

226:                                              ; preds = %213
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #7
  br label %228

228:                                              ; preds = %226, %224
  %.pn137 = phi { ptr, i32 } [ %227, %226 ], [ %225, %224 ]
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  br label %.loopexit194.loopexit

.loopexit194.loopexit:                            ; preds = %228, %222
  %.pn137.pn = phi { ptr, i32 } [ %.pn137, %228 ], [ %223, %222 ]
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  %229 = getelementptr inbounds i8, ptr %33, i64 40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %229) #7
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #7
  br label %.loopexit194

.loopexit194:                                     ; preds = %.loopexit194.loopexit, %220
  %230 = phi i1 [ false, %220 ], [ true, %.loopexit194.loopexit ]
  %.pn137.pn.pn = phi { ptr, i32 } [ %221, %220 ], [ %.pn137.pn, %.loopexit194.loopexit ]
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %37) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  br label %231

231:                                              ; preds = %218, %.loopexit194
  %.1131 = phi i1 [ %230, %.loopexit194 ], [ false, %218 ]
  %.1128 = phi ptr [ %209, %.loopexit194 ], [ %.0127, %218 ]
  %.pn137.pn.pn.pn = phi { ptr, i32 } [ %.pn137.pn.pn, %.loopexit194 ], [ %219, %218 ]
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %35) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  %232 = icmp eq ptr %33, %.1128
  %or.cond4 = select i1 %.1131, i1 true, i1 %232
  br i1 %or.cond4, label %.loopexit193, label %.preheader192

.preheader192:                                    ; preds = %231, %.preheader192
  %233 = phi ptr [ %234, %.preheader192 ], [ %.1128, %231 ]
  %234 = getelementptr inbounds i8, ptr %233, i64 -40
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %234) #7
  %235 = icmp eq ptr %234, %33
  br i1 %235, label %.loopexit193, label %.preheader192

.loopexit193:                                     ; preds = %.preheader192, %.thread184, %231
  %.pn137.pn.pn.pn.pn189 = phi { ptr, i32 } [ %217, %.thread184 ], [ %.pn137.pn.pn.pn, %231 ], [ %.pn137.pn.pn.pn, %.preheader192 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %33) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %30) #7
  br label %712

236:                                              ; preds = %168, %185, %215, %167
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #7
  call void @_ZN3AST13AttributeListC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %40) #7
  call void @_ZN3AST13AttributeNameC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull @.str.63)
          to label %237 unwind label %255

237:                                              ; preds = %236
  invoke void @_ZNSt6vectorI8RcStringSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %238 unwind label %257

238:                                              ; preds = %237
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
  call void @_ZN3AST13AttributeNameC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  invoke void @_ZN9TokenTreeC2Ev(ptr noundef nonnull align 8 dereferenceable(136) %45)
          to label %239 unwind label %260

239:                                              ; preds = %238
  invoke void @_ZN3AST9AttributeC2E4SpanNS_13AttributeNameE9TokenTree(ptr noundef nonnull align 8 dereferenceable(169) %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45)
          to label %240 unwind label %262

240:                                              ; preds = %239
  invoke void @_ZN3AST13AttributeList9push_backENS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull %42)
          to label %241 unwind label %264

241:                                              ; preds = %240
  call void @_ZN3AST9AttributeD2Ev(ptr noundef nonnull align 8 dereferenceable(169) %42) #7
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %45) #7
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 568, ptr nonnull %47) #7
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %242 unwind label %268

242:                                              ; preds = %241
  invoke void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Visibility") align 8 %50, i32 noundef 0, ptr noundef nonnull %51)
          to label %243 unwind label %270

243:                                              ; preds = %242
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %14)
  invoke void @_ZN3AST4Item10make_CrateENS0_10Data_CrateE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Item") align 8 %53, ptr noundef nonnull %54)
          to label %244 unwind label %272

244:                                              ; preds = %243
  invoke void @_ZN3AST5NamedINS_4ItemEEC2E4SpanNS_13AttributeListENS_10VisibilityE8RcStringS1_(ptr noundef nonnull align 8 dereferenceable(568) %47, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %52, ptr noundef nonnull %53)
          to label %245 unwind label %274

245:                                              ; preds = %244
  invoke void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.374") align 8 %46, ptr noundef nonnull align 8 dereferenceable(568) %47)
          to label %246 unwind label %276

246:                                              ; preds = %245
  invoke void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %247 unwind label %278

247:                                              ; preds = %246
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %47) #7
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %53) #7
  call void @_ZN3AST4Item10Data_CrateD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %50) #7
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  call void @llvm.lifetime.end.p0(i64 568, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %117) #7
  %249 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %248) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #7
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %250 unwind label %285

250:                                              ; preds = %247
  %251 = getelementptr inbounds i8, ptr %249, i64 8
  %252 = getelementptr inbounds i8, ptr %249, i64 32
  %253 = getelementptr inbounds i8, ptr %249, i64 80
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull align 8 dereferenceable(24) %251, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(480) %99, ptr noundef nonnull align 8 dereferenceable(36) %252, ptr noundef nonnull align 8 dereferenceable(488) %253)
          to label %254 unwind label %287

254:                                              ; preds = %250
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  br label %291

255:                                              ; preds = %236
  %256 = landingpad { ptr, i32 }
          cleanup
  br label %259

257:                                              ; preds = %237
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br label %259

259:                                              ; preds = %257, %255
  %.pn149 = phi { ptr, i32 } [ %258, %257 ], [ %256, %255 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %290

260:                                              ; preds = %238
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %267

262:                                              ; preds = %239
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %240
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9AttributeD2Ev(ptr noundef nonnull align 8 dereferenceable(169) %42) #7
  br label %266

266:                                              ; preds = %264, %262
  %.pn151 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %45) #7
  br label %267

267:                                              ; preds = %266, %260
  %.pn151.pn = phi { ptr, i32 } [ %.pn151, %266 ], [ %261, %260 ]
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br label %290

268:                                              ; preds = %241
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %284

270:                                              ; preds = %242
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %283

272:                                              ; preds = %243
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %282

274:                                              ; preds = %244
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %281

276:                                              ; preds = %245
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %280

278:                                              ; preds = %246
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %280

280:                                              ; preds = %278, %276
  %.pn154 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ]
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %47) #7
  br label %281

281:                                              ; preds = %280, %274
  %.pn154.pn = phi { ptr, i32 } [ %.pn154, %280 ], [ %275, %274 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %53) #7
  br label %282

282:                                              ; preds = %281, %272
  %.pn154.pn.pn = phi { ptr, i32 } [ %.pn154.pn, %281 ], [ %273, %272 ]
  call void @_ZN3AST4Item10Data_CrateD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #7
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %50) #7
  br label %283

283:                                              ; preds = %282, %270
  %.pn154.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn, %282 ], [ %271, %270 ]
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %284

284:                                              ; preds = %283, %268
  %.pn154.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn, %283 ], [ %269, %268 ]
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  call void @llvm.lifetime.end.p0(i64 568, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  br label %290

285:                                              ; preds = %247
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %289

287:                                              ; preds = %250
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %289

289:                                              ; preds = %287, %285
  %.pn160 = phi { ptr, i32 } [ %288, %287 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #7
  br label %290

290:                                              ; preds = %289, %284, %267, %259
  %.pn160.pn = phi { ptr, i32 } [ %.pn160, %289 ], [ %.pn154.pn.pn.pn.pn, %284 ], [ %.pn151.pn, %267 ], [ %.pn149, %259 ]
  call void @_ZN3AST13AttributeNameD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #7
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #7
  br label %712

291:                                              ; preds = %254, %152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #7
  %292 = call ptr @_ZNSt6vectorIN3AST9AttributeESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  store ptr %292, ptr %56, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #7
  %293 = call ptr @_ZNSt6vectorIN3AST9AttributeESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  store ptr %293, ptr %57, align 8
  %294 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br i1 %294, label %.lr.ph202, label %._crit_edge203

._crit_edge203:                                   ; preds = %._crit_edge200, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60)
          to label %317 unwind label %141

.lr.ph202:                                        ; preds = %291, %._crit_edge200
  %295 = call noundef nonnull align 8 dereferenceable(169) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #7
  %296 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #7
  store ptr %296, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  %297 = call ptr @_ZNSt3mapI8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS2_EESt4lessIS0_ESaISt4pairIKS0_S5_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) @g_decorators) #7
  store ptr %297, ptr %59, align 8
  %298 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br i1 %298, label %.lr.ph199, label %._crit_edge200

._crit_edge200:                                   ; preds = %314, %.lr.ph202
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  %300 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9AttributeESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br i1 %300, label %.lr.ph202, label %._crit_edge203

.lr.ph199:                                        ; preds = %.lr.ph202, %314
  %301 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  %302 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST9Attribute4nameEv(ptr noundef nonnull align 8 dereferenceable(169) %295)
  %303 = invoke noundef zeroext i1 @_ZNK3AST13AttributeNameeqERK8RcString(ptr noundef nonnull align 8 dereferenceable(24) %302, ptr noundef nonnull align 8 dereferenceable(8) %301)
          to label %304 unwind label %312

304:                                              ; preds = %.lr.ph199
  br i1 %303, label %305, label %314

305:                                              ; preds = %304
  %306 = getelementptr inbounds i8, ptr %301, i64 8
  %307 = call noundef ptr @_ZNKSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %306) #7
  %308 = load ptr, ptr %307, align 8, !tbaa !104
  %309 = getelementptr inbounds i8, ptr %308, i64 16
  %310 = load ptr, ptr %309, align 8
  %311 = invoke noundef i32 %310(ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %314 unwind label %312

312:                                              ; preds = %305, %.lr.ph199
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #7
  br label %712

314:                                              ; preds = %305, %304
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  %316 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandDecoratorSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br i1 %316, label %.lr.ph199, label %._crit_edge200

317:                                              ; preds = %._crit_edge203
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %60, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %318 unwind label %348

318:                                              ; preds = %317
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  %319 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %320 unwind label %141

320:                                              ; preds = %318
  br i1 %319, label %321, label %350

321:                                              ; preds = %320
  %322 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %322, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %324 unwind label %141

324:                                              ; preds = %321
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull @.str.64)
          to label %326 unwind label %141

326:                                              ; preds = %324
  %327 = getelementptr inbounds i8, ptr %6, i64 28
  %328 = load i8, ptr %327, align 4, !tbaa !106, !range !110, !noundef !111
  %329 = trunc nuw i8 %328 to i1
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %325, i1 noundef zeroext %329)
          to label %331 unwind label %141

331:                                              ; preds = %326
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @.str.65)
          to label %333 unwind label %141

333:                                              ; preds = %331
  %334 = getelementptr inbounds i8, ptr %6, i64 29
  %335 = load i8, ptr %334, align 1, !tbaa !112, !range !110, !noundef !111
  %336 = trunc nuw i8 %335 to i1
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %332, i1 noundef zeroext %336)
          to label %338 unwind label %141

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

340:                                              ; preds = %338
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull %6)
          to label %342 unwind label %141

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

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

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

348:                                              ; preds = %317
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %712

350:                                              ; preds = %346, %320
  %351 = getelementptr inbounds i8, ptr %6, i64 29
  %352 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %353 = trunc nuw i8 %352 to i1
  br i1 %353, label %.preheader, label %506

.preheader:                                       ; preds = %350
  %354 = getelementptr inbounds i8, ptr %6, i64 28
  %355 = getelementptr inbounds i8, ptr %6, i64 24
  %356 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %357 = trunc nuw i8 %356 to i1
  br i1 %357, label %358, label %.critedge

.critedge:                                        ; preds = %486, %504, %479, %476, %449, %446, %419, %416, %389, %386, %.preheader
  store i8 0, ptr %351, align 1, !tbaa !112
  br label %506

358:                                              ; preds = %.preheader
  store i32 1, ptr %355, align 8, !tbaa !113
  store i8 0, ptr %354, align 4, !tbaa !106
  store i8 0, ptr %351, align 1, !tbaa !112
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %359 unwind label %382

359:                                              ; preds = %358
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %360 unwind label %384

360:                                              ; preds = %359
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  %361 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %362 unwind label %382

362:                                              ; preds = %360
  br i1 %361, label %363, label %386

363:                                              ; preds = %362
  %364 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %364, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %366 unwind label %382

366:                                              ; preds = %363
  %367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull @.str.67)
          to label %368 unwind label %382

368:                                              ; preds = %366
  %369 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %370 = trunc nuw i8 %369 to i1
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %367, i1 noundef zeroext %370)
          to label %372 unwind label %382

372:                                              ; preds = %368
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull @.str.65)
          to label %374 unwind label %382

374:                                              ; preds = %372
  %375 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %376 = trunc nuw i8 %375 to i1
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %373, i1 noundef zeroext %376)
          to label %378 unwind label %382

378:                                              ; preds = %374
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %380 unwind label %382

380:                                              ; preds = %378
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %386 unwind label %382

382:                                              ; preds = %504, %502, %498, %496, %492, %490, %487, %484, %482, %474, %472, %468, %466, %462, %460, %457, %454, %452, %444, %442, %438, %436, %432, %430, %427, %424, %422, %414, %412, %408, %406, %402, %400, %397, %394, %392, %380, %378, %374, %372, %368, %366, %363, %360, %358
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %712

384:                                              ; preds = %483, %453, %423, %393, %359
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %712

386:                                              ; preds = %362, %380
  %387 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %388 = trunc nuw i8 %387 to i1
  br i1 %388, label %389, label %.critedge

389:                                              ; preds = %386
  %390 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %391 = trunc nuw i8 %390 to i1
  br i1 %391, label %392, label %.critedge

392:                                              ; preds = %389
  store i32 1, ptr %355, align 8, !tbaa !113
  store i8 0, ptr %354, align 4, !tbaa !106
  store i8 0, ptr %351, align 1, !tbaa !112
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %393 unwind label %382

393:                                              ; preds = %392
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %394 unwind label %384

394:                                              ; preds = %393
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  %395 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %396 unwind label %382

396:                                              ; preds = %394
  br i1 %395, label %397, label %416

397:                                              ; preds = %396
  %398 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %398, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %400 unwind label %382

400:                                              ; preds = %397
  %401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef nonnull @.str.67)
          to label %402 unwind label %382

402:                                              ; preds = %400
  %403 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %404 = trunc nuw i8 %403 to i1
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %401, i1 noundef zeroext %404)
          to label %406 unwind label %382

406:                                              ; preds = %402
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull @.str.65)
          to label %408 unwind label %382

408:                                              ; preds = %406
  %409 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %410 = trunc nuw i8 %409 to i1
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %407, i1 noundef zeroext %410)
          to label %412 unwind label %382

412:                                              ; preds = %408
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %411, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %414 unwind label %382

414:                                              ; preds = %412
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %416 unwind label %382

416:                                              ; preds = %414, %396
  %417 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %418 = trunc nuw i8 %417 to i1
  br i1 %418, label %419, label %.critedge

419:                                              ; preds = %416
  %420 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %421 = trunc nuw i8 %420 to i1
  br i1 %421, label %422, label %.critedge

422:                                              ; preds = %419
  store i32 1, ptr %355, align 8, !tbaa !113
  store i8 0, ptr %354, align 4, !tbaa !106
  store i8 0, ptr %351, align 1, !tbaa !112
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %423 unwind label %382

423:                                              ; preds = %422
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %424 unwind label %384

424:                                              ; preds = %423
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  %425 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %426 unwind label %382

426:                                              ; preds = %424
  br i1 %425, label %427, label %446

427:                                              ; preds = %426
  %428 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %428, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %430 unwind label %382

430:                                              ; preds = %427
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull @.str.67)
          to label %432 unwind label %382

432:                                              ; preds = %430
  %433 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %434 = trunc nuw i8 %433 to i1
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %431, i1 noundef zeroext %434)
          to label %436 unwind label %382

436:                                              ; preds = %432
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull @.str.65)
          to label %438 unwind label %382

438:                                              ; preds = %436
  %439 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %440 = trunc nuw i8 %439 to i1
  %441 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %437, i1 noundef zeroext %440)
          to label %442 unwind label %382

442:                                              ; preds = %438
  %443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %444 unwind label %382

444:                                              ; preds = %442
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %443, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %446 unwind label %382

446:                                              ; preds = %444, %426
  %447 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %448 = trunc nuw i8 %447 to i1
  br i1 %448, label %449, label %.critedge

449:                                              ; preds = %446
  %450 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %451 = trunc nuw i8 %450 to i1
  br i1 %451, label %452, label %.critedge

452:                                              ; preds = %449
  store i32 1, ptr %355, align 8, !tbaa !113
  store i8 0, ptr %354, align 4, !tbaa !106
  store i8 0, ptr %351, align 1, !tbaa !112
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %453 unwind label %382

453:                                              ; preds = %452
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %454 unwind label %384

454:                                              ; preds = %453
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  %455 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %456 unwind label %382

456:                                              ; preds = %454
  br i1 %455, label %457, label %476

457:                                              ; preds = %456
  %458 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %458, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %460 unwind label %382

460:                                              ; preds = %457
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %459, ptr noundef nonnull @.str.67)
          to label %462 unwind label %382

462:                                              ; preds = %460
  %463 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %464 = trunc nuw i8 %463 to i1
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %461, i1 noundef zeroext %464)
          to label %466 unwind label %382

466:                                              ; preds = %462
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull @.str.65)
          to label %468 unwind label %382

468:                                              ; preds = %466
  %469 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %470 = trunc nuw i8 %469 to i1
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %467, i1 noundef zeroext %470)
          to label %472 unwind label %382

472:                                              ; preds = %468
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %474 unwind label %382

474:                                              ; preds = %472
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %476 unwind label %382

476:                                              ; preds = %474, %456
  %477 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %478 = trunc nuw i8 %477 to i1
  br i1 %478, label %479, label %.critedge

479:                                              ; preds = %476
  %480 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %482, label %.critedge

482:                                              ; preds = %479
  store i32 1, ptr %355, align 8, !tbaa !113
  store i8 0, ptr %354, align 4, !tbaa !106
  store i8 0, ptr %351, align 1, !tbaa !112
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %483 unwind label %382

483:                                              ; preds = %482
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %61, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %484 unwind label %384

484:                                              ; preds = %483
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  %485 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %486 unwind label %382

486:                                              ; preds = %484
  br i1 %485, label %487, label %.critedge

487:                                              ; preds = %486
  %488 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %488, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %490 unwind label %382

490:                                              ; preds = %487
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull @.str.67)
          to label %492 unwind label %382

492:                                              ; preds = %490
  %493 = load i8, ptr %354, align 4, !tbaa !106, !range !110, !noundef !111
  %494 = trunc nuw i8 %493 to i1
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %491, i1 noundef zeroext %494)
          to label %496 unwind label %382

496:                                              ; preds = %492
  %497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull @.str.65)
          to label %498 unwind label %382

498:                                              ; preds = %496
  %499 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %500 = trunc nuw i8 %499 to i1
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %497, i1 noundef zeroext %500)
          to label %502 unwind label %382

502:                                              ; preds = %498
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %504 unwind label %382

504:                                              ; preds = %502
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.critedge unwind label %382

506:                                              ; preds = %.critedge, %350
  %507 = getelementptr inbounds i8, ptr %6, i64 24
  store i32 2, ptr %507, align 8, !tbaa !113
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %508 unwind label %141

508:                                              ; preds = %506
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %6, ptr noundef nonnull %62, ptr noundef nonnull align 8 dereferenceable(480) %99, i32 noundef 0)
          to label %509 unwind label %516

509:                                              ; preds = %508
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  %510 = load i8, ptr %351, align 1, !tbaa !112, !range !110, !noundef !111
  %511 = trunc nuw i8 %510 to i1
  br i1 %511, label %512, label %522

512:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #7
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull %64)
          to label %513 unwind label %518

513:                                              ; preds = %512
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  %514 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %514, ptr noundef nonnull @.str.11)
          to label %.invoke unwind label %520

.invoke:                                          ; preds = %513, %157
  %515 = phi ptr [ %158, %157 ], [ %514, %513 ]
  invoke void @__cxa_throw(ptr nonnull %515, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %.cont unwind label %141

.cont:                                            ; preds = %.invoke
  unreachable

516:                                              ; preds = %508
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %712

518:                                              ; preds = %512
  %519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  br label %712

520:                                              ; preds = %513
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %514) #7
  br label %712

522:                                              ; preds = %509
  invoke void @_Z20Expand_Mod_IndexAnonRN3AST5CrateERNS_6ModuleE(ptr noundef nonnull align 8 dereferenceable(1112) %0, ptr noundef nonnull align 8 dereferenceable(480) %99)
          to label %523 unwind label %141

523:                                              ; preds = %522
  %524 = getelementptr inbounds i8, ptr %0, i64 624
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %66) #7
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  store ptr %99, ptr %67, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %525 unwind label %537

525:                                              ; preds = %523
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  br label %526

526:                                              ; preds = %._crit_edge210, %525
  %527 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %528 = load ptr, ptr %527, align 8, !tbaa !9
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %529 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480) %528)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #7
  %530 = call ptr @_ZNSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %529) #7
  store ptr %530, ptr %68, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #7
  %531 = call ptr @_ZNSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %529) #7
  store ptr %531, ptr %69, align 8
  %532 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br i1 %532, label %.lr.ph206, label %._crit_edge207

._crit_edge207:                                   ; preds = %594, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #7
  %533 = getelementptr inbounds i8, ptr %528, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #7
  %534 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %533) #7
  store ptr %534, ptr %72, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  %535 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %533) #7
  store ptr %535, ptr %73, align 8
  %536 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br i1 %536, label %.lr.ph209, label %._crit_edge210

537:                                              ; preds = %523
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  br label %711

.lr.ph206:                                        ; preds = %526, %594
  %539 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  %540 = getelementptr inbounds i8, ptr %539, i64 80
  %541 = call noundef ptr @_ZN13MacroRulesPtrptEv(ptr noundef nonnull align 8 dereferenceable(8) %540)
  %542 = getelementptr inbounds i8, ptr %541, i64 8
  %543 = load i8, ptr %542, align 8, !tbaa !114, !range !110, !noundef !111
  %544 = trunc nuw i8 %543 to i1
  br i1 %544, label %545, label %577

545:                                              ; preds = %.lr.ph206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #7
  %546 = getelementptr inbounds i8, ptr %539, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #7
  %547 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN13MacroRulesPtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %540)
  store ptr %547, ptr %71, align 8, !tbaa !9
  invoke void @_ZSt9make_pairIR8RcStringP10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.455") align 8 %70, ptr noundef nonnull align 8 dereferenceable(8) %546, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %548 unwind label %570

548:                                              ; preds = %545
  %549 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_PS1_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48) %524, ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %550 unwind label %572

550:                                              ; preds = %548
  %.fca.1.extract18 = extractvalue { ptr, i8 } %549, 1
  call void @_ZNSt4pairI8RcStringP10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  %551 = trunc i8 %.fca.1.extract18 to i1
  br i1 %551, label %552, label %594

552:                                              ; preds = %550
  %553 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %554 unwind label %575

554:                                              ; preds = %552
  br i1 %553, label %555, label %594

555:                                              ; preds = %554
  %556 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %556, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %558 unwind label %575

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

560:                                              ; preds = %558
  %561 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %559, ptr noundef nonnull align 8 dereferenceable(8) %546)
          to label %562 unwind label %575

562:                                              ; preds = %560
  %563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef nonnull @.str.69)
          to label %564 unwind label %575

564:                                              ; preds = %562
  %565 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %563, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %566 unwind label %575

566:                                              ; preds = %564
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %594 unwind label %575

568:                                              ; preds = %592, %590, %588, %585, %583, %580, %577
  %569 = landingpad { ptr, i32 }
          cleanup
  br label %597

570:                                              ; preds = %545
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %574

572:                                              ; preds = %548
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringP10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  br label %574

574:                                              ; preds = %572, %570
  %.pn166 = phi { ptr, i32 } [ %573, %572 ], [ %571, %570 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  br label %597

575:                                              ; preds = %566, %564, %562, %560, %558, %555, %552
  %576 = landingpad { ptr, i32 }
          cleanup
  br label %597

577:                                              ; preds = %.lr.ph206
  %578 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %579 unwind label %568

579:                                              ; preds = %577
  br i1 %578, label %580, label %594

580:                                              ; preds = %579
  %581 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %581, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %583 unwind label %568

583:                                              ; preds = %580
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %582, ptr noundef nonnull @.str.70)
          to label %585 unwind label %568

585:                                              ; preds = %583
  %586 = getelementptr inbounds i8, ptr %539, i64 72
  %587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef nonnull align 8 dereferenceable(8) %586)
          to label %588 unwind label %568

588:                                              ; preds = %585
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %587, ptr noundef nonnull @.str.69)
          to label %590 unwind label %568

590:                                              ; preds = %588
  %591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %592 unwind label %568

592:                                              ; preds = %590
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %594 unwind label %568

594:                                              ; preds = %550, %566, %554, %579, %592
  %595 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  %596 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br i1 %596, label %.lr.ph206, label %._crit_edge207

597:                                              ; preds = %574, %575, %568
  %.pn168.pn = phi { ptr, i32 } [ %569, %568 ], [ %576, %575 ], [ %.pn166, %574 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #7
  br label %711

._crit_edge210:                                   ; preds = %610, %._crit_edge207
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  %598 = call noundef i64 @_ZNKSt6vectorIPN3AST6ModuleESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %.not = icmp eq i64 %598, 0
  br i1 %.not, label %613, label %526, !llvm.loop !127

.lr.ph209:                                        ; preds = %._crit_edge207, %610
  %599 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  %600 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %599) #7
  %601 = getelementptr inbounds i8, ptr %600, i64 80
  %602 = call noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %601)
  br i1 %602, label %603, label %610

603:                                              ; preds = %.lr.ph209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #7
  %604 = call noundef ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %599) #7
  %605 = getelementptr inbounds i8, ptr %604, i64 80
  %606 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %605)
  store ptr %606, ptr %74, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %607 unwind label %608

607:                                              ; preds = %603
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  br label %610

608:                                              ; preds = %603
  %609 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #7
  br label %711

610:                                              ; preds = %607, %.lr.ph209
  %611 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  %612 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #7
  br i1 %612, label %.lr.ph209, label %._crit_edge210

613:                                              ; preds = %._crit_edge210
  %614 = getelementptr inbounds i8, ptr %0, i64 504
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #7
  %615 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %614) #7
  store ptr %615, ptr %75, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #7
  %616 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %614) #7
  store ptr %616, ptr %76, align 8
  %617 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  br i1 %617, label %.lr.ph212, label %._crit_edge213

.lr.ph212:                                        ; preds = %613
  %618 = getelementptr inbounds i8, ptr %77, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %80, i64 8
  br label %619

._crit_edge213:                                   ; preds = %708, %613
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #7
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %66) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  ret void

619:                                              ; preds = %.lr.ph212, %708
  %620 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  %621 = load i8, ptr %620, align 8, !tbaa !129, !range !110, !noundef !111
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %708

623:                                              ; preds = %619
  %624 = getelementptr inbounds i8, ptr %620, i64 48
  %625 = call noundef zeroext i1 @_ZNK8MacroRef13is_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %624)
  br i1 %625, label %626, label %708

626:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #7
  %627 = getelementptr inbounds i8, ptr %620, i64 8
  %628 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK8MacroRef13as_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %624)
  invoke void @_ZSt9make_pairIRK8RcStringRKPK10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.457") align 8 %77, ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(8) %628)
          to label %629 unwind label %660

629:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #7
  %630 = invoke ptr @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %524, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %631 unwind label %662

631:                                              ; preds = %629
  store ptr %630, ptr %78, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #7
  %632 = call ptr @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %524) #7
  store ptr %632, ptr %79, align 8
  %633 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEES9_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #7
  br i1 %633, label %634, label %667

634:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #7
  %635 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %524, ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %636 unwind label %664

636:                                              ; preds = %634
  %.fca.0.extract = extractvalue { ptr, i8 } %635, 0
  %.fca.1.extract = extractvalue { ptr, i8 } %635, 1
  store ptr %.fca.0.extract, ptr %80, align 8
  store i8 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %637 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %638 unwind label %664

638:                                              ; preds = %636
  br i1 %637, label %639, label %666

639:                                              ; preds = %638
  %640 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %640, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %642 unwind label %664

642:                                              ; preds = %639
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef nonnull @.str.71)
          to label %644 unwind label %664

644:                                              ; preds = %642
  %645 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %643, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %646 unwind label %664

646:                                              ; preds = %644
  %647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %645, ptr noundef nonnull @.str.72)
          to label %648 unwind label %664

648:                                              ; preds = %646
  %649 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  %650 = getelementptr inbounds i8, ptr %649, i64 8
  %651 = load ptr, ptr %650, align 8, !tbaa !133
  %652 = getelementptr inbounds i8, ptr %651, i64 16
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %647, ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %654 unwind label %664

654:                                              ; preds = %648
  %655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef nonnull @.str.73)
          to label %656 unwind label %664

656:                                              ; preds = %654
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %658 unwind label %664

658:                                              ; preds = %656
  %659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %657, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %666 unwind label %664

660:                                              ; preds = %626
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %707

662:                                              ; preds = %699, %697, %695, %691, %689, %683, %681, %679, %677, %674, %671, %629
  %663 = landingpad { ptr, i32 }
          cleanup
  br label %706

664:                                              ; preds = %658, %656, %654, %648, %646, %644, %642, %639, %636, %634
  %665 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #7
  br label %706

666:                                              ; preds = %658, %638
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #7
  br label %705

667:                                              ; preds = %631
  %668 = load ptr, ptr %618, align 8, !tbaa !135
  %669 = getelementptr inbounds i8, ptr %668, i64 40
  %670 = call noundef zeroext i1 @_ZNKSt6vectorI13MacroRulesArmSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %669) #7
  br i1 %670, label %705, label %671

671:                                              ; preds = %667
  %672 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %673 unwind label %662

673:                                              ; preds = %671
  br i1 %672, label %674, label %701

674:                                              ; preds = %673
  %675 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %675, ptr noundef nonnull @__FUNCTION__._Z6ExpandRN3AST5CrateE)
          to label %677 unwind label %662

677:                                              ; preds = %674
  %678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %676, ptr noundef nonnull @.str.74)
          to label %679 unwind label %662

679:                                              ; preds = %677
  %680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %678, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %681 unwind label %662

681:                                              ; preds = %679
  %682 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %680, ptr noundef nonnull @.str.72)
          to label %683 unwind label %662

683:                                              ; preds = %681
  %684 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  %685 = getelementptr inbounds i8, ptr %684, i64 8
  %686 = load ptr, ptr %685, align 8, !tbaa !133
  %687 = getelementptr inbounds i8, ptr %686, i64 16
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef nonnull align 8 dereferenceable(8) %687)
          to label %689 unwind label %662

689:                                              ; preds = %683
  %690 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %688, ptr noundef nonnull @.str.75)
          to label %691 unwind label %662

691:                                              ; preds = %689
  %692 = load ptr, ptr %618, align 8, !tbaa !135
  %693 = getelementptr inbounds i8, ptr %692, i64 16
  %694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %690, ptr noundef nonnull align 8 dereferenceable(8) %693)
          to label %695 unwind label %662

695:                                              ; preds = %691
  %696 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %694, ptr noundef nonnull @.str.76)
          to label %697 unwind label %662

697:                                              ; preds = %695
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %699 unwind label %662

699:                                              ; preds = %697
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %698, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %701 unwind label %662

701:                                              ; preds = %699, %673
  %702 = load ptr, ptr %618, align 8, !tbaa !9
  %703 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  %704 = getelementptr inbounds i8, ptr %703, i64 8
  store ptr %702, ptr %704, align 8, !tbaa !133
  br label %705

705:                                              ; preds = %701, %667, %666
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @_ZNSt4pairI8RcStringPK10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #7
  br label %708

706:                                              ; preds = %664, %662
  %.pn163 = phi { ptr, i32 } [ %665, %664 ], [ %663, %662 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @_ZNSt4pairI8RcStringPK10MacroRulesED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #7
  br label %707

707:                                              ; preds = %706, %660
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %706 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #7
  br label %711

708:                                              ; preds = %619, %705, %623
  %709 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  %710 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  br i1 %710, label %619, label %._crit_edge213

711:                                              ; preds = %597, %608, %707, %537
  %.pn168.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn, %707 ], [ %538, %537 ], [ %.pn168.pn, %597 ], [ %609, %608 ]
  call void @_ZNSt6vectorIPN3AST6ModuleESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %66) #7
  br label %712

712:                                              ; preds = %382, %384, %711, %520, %518, %516, %348, %312, %290, %.loopexit193, %.loopexit, %175, %161, %159, %146, %141, %139
  %.pn175 = phi { ptr, i32 } [ %313, %312 ], [ %142, %141 ], [ %521, %520 ], [ %519, %518 ], [ %.pn168.pn.pn.pn, %711 ], [ %517, %516 ], [ %349, %348 ], [ %.pn160.pn, %290 ], [ %.pn137.pn.pn.pn.pn189, %.loopexit193 ], [ %.pn143.pn.pn.pn.pn183, %.loopexit ], [ %.pn, %175 ], [ %162, %161 ], [ %160, %159 ], [ %147, %146 ], [ %140, %139 ], [ %383, %382 ], [ %385, %384 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br label %713

713:                                              ; preds = %712, %134, %132
  %.pn175.pn = phi { ptr, i32 } [ %.pn175, %712 ], [ %135, %134 ], [ %133, %132 ]
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %714

714:                                              ; preds = %713, %130
  %.pn175.pn.pn = phi { ptr, i32 } [ %.pn175.pn, %713 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn175.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringSt10unique_ptrI15ExpandProcMacroSt14default_deleteIS4_EEEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ6ExpandRNS6_5CrateEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4PatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #3 align 2

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

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

declare void @_ZN3AST13AttributeList9push_backENS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4Item10make_CrateENS0_10Data_CrateE(ptr dead_on_unwind noalias writable sret(%"class.AST::Item") align 8, ptr noundef) local_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 #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ6ExpandRN3AST5CrateEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_PS1_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSF_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIR8RcStringP10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.455") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN3AST6ModuleESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringRKPK10MacroRulesESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.457") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIK8RcStringPK10MacroRulesEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorI13MacroRulesArmSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !89, i64 792}
!12 = !{!"_ZTSN3AST5CrateE", !13, i64 0, !18, i64 24, !27, i64 72, !30, i64 552, !67, i64 576, !72, i64 624, !29, i64 672, !29, i64 680, !29, i64 688, !29, i64 696, !47, i64 704, !75, i64 712, !79, i64 736, !83, i64 760, !87, i64 784, !88, i64 788, !89, i64 792, !48, i64 800, !48, i64 832, !29, i64 864, !90, i64 872}
!13 = !{!"_ZTSN3AST13AttributeListE", !14, i64 0}
!14 = !{!"_ZTSSt6vectorIN3AST9AttributeESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIN3AST9AttributeESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3AST9AttributeESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!18 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3AST12AbsolutePathESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3AST12AbsolutePathEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !26, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN3AST6ModuleE", !28, i64 0, !34, i64 32, !38, i64 56, !42, i64 80, !46, i64 104, !47, i64 176, !7, i64 177, !50, i64 184, !50, i64 240, !50, i64 296, !50, i64 352, !55, i64 408, !59, i64 432, !63, i64 456}
!28 = !{!"_ZTSN3AST12AbsolutePathE", !29, i64 0, !30, i64 8}
!29 = !{!"_ZTS8RcString", !10, i64 0}
!30 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!34 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!38 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!42 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!46 = !{!"_ZTSN3AST6Module8FileInfoE", !47, i64 0, !47, i64 1, !48, i64 8, !48, i64 40}
!47 = !{!"bool", !7, i64 0}
!48 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !49, i64 0, !26, i64 8, !7, i64 16}
!49 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!50 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !51, i64 0}
!51 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3AST6Module8IndexEntEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !26, i64 8, !52, i64 16, !26, i64 24, !53, i64 32, !10, i64 48}
!52 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!53 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !54, i64 0, !26, i64 8}
!54 = !{!"float", !7, i64 0}
!55 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!59 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!63 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !64, i64 0}
!64 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!67 = !{!"_ZTSSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3AST11ExternCrateEESt10_Select1stIS5_ESt4lessIS0_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !70, i64 0, !23, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessI8RcStringE"}
!72 = !{!"_ZTSSt3mapI8RcStringPK10MacroRulesSt4lessIS0_ESaISt4pairIKS0_S3_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_PK10MacroRulesESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !70, i64 0, !23, i64 8}
!75 = !{!"_ZTSSt6vectorIN3AST8TestDescESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3AST8TestDescESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3AST8TestDescESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!79 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!83 = !{!"_ZTSSt6vectorIN3AST12ProcMacroDefESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3AST12ProcMacroDefESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!87 = !{!"_ZTSN3AST7EditionE", !7, i64 0}
!88 = !{!"_ZTSN3AST5Crate4TypeE", !7, i64 0}
!89 = !{!"_ZTSN3AST5Crate7LoadStdE", !7, i64 0}
!90 = !{!"_ZTSN3AST4PathE", !91, i64 8, !93, i64 56}
!91 = !{!"_ZTSN3AST4Path5ClassE", !92, i64 0, !7, i64 8}
!92 = !{!"_ZTSN3AST4Path5Class3TagE", !7, i64 0}
!93 = !{!"_ZTSN3AST4Path8BindingsE", !94, i64 0, !97, i64 64, !100, i64 128}
!94 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_ValueEEE", !28, i64 0, !95, i64 32}
!95 = !{!"_ZTSN3AST17PathBinding_ValueE", !96, i64 0, !7, i64 8}
!96 = !{!"_ZTSN3AST17PathBinding_Value3TagE", !7, i64 0}
!97 = !{!"_ZTSN3AST11PathBindingINS_16PathBinding_TypeEEE", !28, i64 0, !98, i64 32}
!98 = !{!"_ZTSN3AST16PathBinding_TypeE", !99, i64 0, !7, i64 8}
!99 = !{!"_ZTSN3AST16PathBinding_Type3TagE", !7, i64 0}
!100 = !{!"_ZTSN3AST11PathBindingINS_17PathBinding_MacroEEE", !28, i64 0, !101, i64 32}
!101 = !{!"_ZTSN3AST17PathBinding_MacroE", !102, i64 0, !7, i64 8}
!102 = !{!"_ZTSN3AST17PathBinding_Macro3TagE", !7, i64 0}
!103 = !{!12, !87, i64 784}
!104 = !{!105, !105, i64 0}
!105 = !{!"vtable pointer", !8, i64 0}
!106 = !{!107, !47, i64 28}
!107 = !{!"_ZTS11ExpandState", !10, i64 0, !108, i64 8, !109, i64 24, !47, i64 28, !47, i64 29}
!108 = !{!"_ZTS5LListIPKN3AST6ModuleEE", !10, i64 0, !10, i64 8}
!109 = !{!"_ZTS10ExpandMode", !7, i64 0}
!110 = !{i8 0, i8 2}
!111 = !{}
!112 = !{!107, !47, i64 29}
!113 = !{!107, !109, i64 24}
!114 = !{!115, !47, i64 8}
!115 = !{!"_ZTS10MacroRules", !47, i64 8, !47, i64 9, !29, i64 16, !87, i64 24, !116, i64 32, !123, i64 40}
!116 = !{!"_ZTSN5Ident7HygieneE", !117, i64 0}
!117 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !118, i64 0}
!118 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !119, i64 0}
!119 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !120, i64 0}
!120 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !121, i64 0}
!121 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !122, i64 0}
!122 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !10, i64 0}
!123 = !{!"_ZTSSt6vectorI13MacroRulesArmSaIS0_EE", !124, i64 0}
!124 = !{!"_ZTSSt12_Vector_baseI13MacroRulesArmSaIS0_EE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseI13MacroRulesArmSaIS0_EE12_Vector_implE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseI13MacroRulesArmSaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!127 = distinct !{!127, !128}
!128 = !{!"llvm.loop.mustprogress"}
!129 = !{!130, !47, i64 0}
!130 = !{!"_ZTSN3AST6Module11MacroImportE", !47, i64 0, !29, i64 8, !28, i64 16, !131, i64 48}
!131 = !{!"_ZTS8MacroRef", !132, i64 0, !7, i64 8}
!132 = !{!"_ZTSN8MacroRef3TagE", !7, i64 0}
!133 = !{!134, !10, i64 8}
!134 = !{!"_ZTSSt4pairIK8RcStringPK10MacroRulesE", !29, i64 0, !10, i64 8}
!135 = !{!136, !10, i64 8}
!136 = !{!"_ZTSSt4pairI8RcStringPK10MacroRulesE", !29, i64 0, !10, i64 8}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass