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

; 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.394" = type { %"class.std::_Rb_tree.395" }
%"class.std::_Rb_tree.395" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, RcString>, std::_Select1st<std::pair<const RcString, RcString>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, RcString>, std::_Select1st<std::pair<const RcString, RcString>>, 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.ResolveItemRef_Macro = type { i32, %"union.ResolveItemRef_Macro::DataUnion" }
%"union.ResolveItemRef_Macro::DataUnion" = type { ptr }
%"class.std::unique_ptr.273" = type { %"struct.std::__uniq_ptr_data.274" }
%"struct.std::__uniq_ptr_data.274" = type { %"class.std::__uniq_ptr_impl.275" }
%"class.std::__uniq_ptr_impl.275" = type { %"class.std::tuple.276" }
%"class.std::tuple.276" = type { %"struct.std::_Tuple_impl.277" }
%"struct.std::_Tuple_impl.277" = type { %"struct.std::_Head_base.280" }
%"struct.std::_Head_base.280" = type { ptr }
%"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" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%class.RcString = type { ptr }
%"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.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.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::__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.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 }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.367 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.272" = type { 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 }
%"class.__gnu_cxx::__normal_iterator.266" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.368" = 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" }
%"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 }
%struct.Span = 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" }
%"struct.AST::UseItem" = type { %struct.Span, %"class.std::vector.146" }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::UseItem::Ent" = type { %struct.Span, %"class.AST::Path", %class.RcString }
%"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 }
%"class.std::vector.369" = type { %"struct.std::_Vector_base.370" }
%"struct.std::_Vector_base.370" = type { %"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl" }
%"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.383" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.384" = type { ptr }
%struct.LList = type { ptr, ptr }
%struct.ExpandState = type <{ ptr, %struct.LList, i32, i8, i8, [2 x i8] }>
%class.anon.385 = type { i8 }
%"class.AST::MacroInvocation" = type <{ %struct.Span, %"class.AST::Path", %class.RcString, %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.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 }
%class.anon.387 = type { 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" }
%class.anon.391 = type { ptr }
%class.MacroRulesPtr = type { ptr }
%"struct.AST::Item::Data_None" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.392" = type { ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.393" = type { ptr }
%"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 }
%"class.std::allocator.5" = type { i8 }
%"struct.std::pair.403" = type { %class.RcString, %class.RcString }
%"struct.std::pair.399" = type <{ %"struct.std::_Rb_tree_iterator.401", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator.401" = type { ptr }
%"struct.std::pair.405" = type { %class.RcString, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"class.std::function.44" = type { %"class.std::_Function_base", ptr }
%class.anon.408 = type { ptr, ptr }
%class.anon.409 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.410" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.411" = type { ptr }
%class.anon.412 = type { ptr, ptr }
%class.anon.413 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.414" = type { ptr }
%class.anon.415 = type { ptr, ptr }
%class.anon.416 = type { ptr, ptr }
%class.anon.417 = type { ptr, ptr }
%class.anon.418 = type { ptr, ptr }
%class.anon.419 = type { ptr, ptr }
%class.anon.420 = type { ptr, ptr }
%class.anon.421 = type { ptr, ptr }
%class.anon.422 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.423" = type { ptr }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr }
%class.anon.427 = type { i8 }
%"struct.AST::Named.382" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %class.MacroRulesPtr }
%"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 }
%"class.AST::Struct" = type { %"class.AST::GenericParams", %"class.AST::StructData", %"struct.AST::Struct::Markings" }
%"class.AST::GenericParams" = type { %"class.std::vector.171", %"class.std::vector.176" }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.176" = type { %"struct.std::_Vector_base.177" }
%"struct.std::_Vector_base.177" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::StructData" = type { i32, %"union.AST::StructData::DataUnion" }
%"union.AST::StructData::DataUnion" = type { %"struct.AST::StructData::Data_Tuple" }
%"struct.AST::StructData::Data_Tuple" = type { %"class.std::vector.214" }
%"class.std::vector.214" = type { %"struct.std::_Vector_base.215" }
%"struct.std::_Vector_base.215" = type { %"struct.std::_Vector_base<AST::TupleItem, std::allocator<AST::TupleItem>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::TupleItem, std::allocator<AST::TupleItem>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::TupleItem, std::allocator<AST::TupleItem>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::TupleItem, std::allocator<AST::TupleItem>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Struct::Markings" = type { i32, i64, i64, i8, %class.U128, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.AST::StructData::Data_Struct" = type { %"class.std::vector.219" }
%"class.std::vector.219" = type { %"struct.std::_Vector_base.220" }
%"struct.std::_Vector_base.220" = type { %"struct.std::_Vector_base<AST::StructItem, std::allocator<AST::StructItem>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::StructItem, std::allocator<AST::StructItem>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::StructItem, std::allocator<AST::StructItem>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::StructItem, std::allocator<AST::StructItem>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::Union" = type <{ %"class.AST::GenericParams", %"class.std::vector.219", %"struct.AST::Union::Markings", [4 x i8] }>
%"struct.AST::Union::Markings" = type { i32 }
%"struct.AST::EnumVariant" = type { %"class.AST::AttributeList", %class.RcString, %"class.AST::EnumVariantData" }
%"class.AST::EnumVariantData" = type { i32, %"union.AST::EnumVariantData::DataUnion" }
%"union.AST::EnumVariantData::DataUnion" = type { %"struct.AST::EnumVariantData::Data_Tuple" }
%"struct.AST::EnumVariantData::Data_Tuple" = type { %"class.std::vector.214" }
%"struct.AST::EnumVariantData::Data_Struct" = type { %"class.std::vector.219" }
%"struct.AST::Item::Data_Crate" = type { %class.RcString }
%"struct.AST::StructItem" = type { %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %class.TypeRef }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.199", %"class.std::vector.199", %"class.std::vector.204" }
%"class.std::vector.199" = type { %"struct.std::_Vector_base.200" }
%"struct.std::_Vector_base.200" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.204" = type { %"struct.std::_Vector_base.205" }
%"struct.std::_Vector_base.205" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::TupleItem" = type { %"class.AST::AttributeList", %"class.AST::Visibility", %class.TypeRef }
%"struct.AST::EnumVariantData::Data_Value" = type { %"class.AST::Expr" }
%"class.AST::Expr" = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%struct.Spanned.424 = type { %struct.Span, %struct.Type_TraitPath }
%struct.Type_TraitPath = type { %"class.AST::HigherRankedBounds", %"class.std::unique_ptr.132" }
%"class.AST::HigherRankedBounds" = type { %"class.std::vector.189" }
%"class.std::vector.189" = type { %"struct.std::_Vector_base.190" }
%"struct.std::_Vector_base.190" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::TraitAlias" = type { %"class.AST::GenericParams", %"class.std::vector.229" }
%"class.std::vector.229" = type { %"struct.std::_Vector_base.230" }
%"struct.std::_Vector_base.230" = type { %"struct.std::_Vector_base<Spanned<Type_TraitPath>, std::allocator<Spanned<Type_TraitPath>>>::_Vector_impl" }
%"struct.std::_Vector_base<Spanned<Type_TraitPath>, std::allocator<Spanned<Type_TraitPath>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Spanned<Type_TraitPath>, std::allocator<Spanned<Type_TraitPath>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Spanned<Type_TraitPath>, std::allocator<Spanned<Type_TraitPath>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@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.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj = external hidden unnamed_addr constant [89 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZN3AST17g_implicit_cratesE = external global %"class.std::map.394", align 8
@.str.48 = external hidden unnamed_addr constant [4 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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

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

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

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

; 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8MacroRef7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

; 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)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_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(128), ptr noundef nonnull align 8 dereferenceable(488)) #5

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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 uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z20Resolve_Lookup_MacroRK4SpanRKN3AST5CrateERKNS2_4PathES6_PNS2_12AbsolutePathE(ptr dead_on_unwind writable sret(%class.ResolveItemRef_Macro) align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, ptr noundef) #2

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #8

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240)) #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.273") align 8, ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(393)) #5

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

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

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

declare noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #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)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(120)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(240)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(16)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(48)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(368)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_ImplRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_4ImplE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(472)) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120)) #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind noalias writable sret(%"class.AST::Item") align 8) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #3 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 @_Z14Expand_ImplDefRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_7ImplDefE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(448)) #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(480) %2, i32 noundef %3) #5 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.TraceLog, align 8
  %10 = alloca %"class.std::function", align 8
  %11 = alloca %class.anon.367, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.272", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.272", align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"struct.AST::Module::MacroImport", align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.266", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.266", align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"struct.AST::Module::MacroImport", align 8
  %24 = alloca %class.RcString, align 8
  %25 = alloca i1, align 1
  %26 = alloca ptr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.AST::Path", align 8
  %31 = alloca %struct.Span, align 8
  %32 = alloca %"class.AST::Visibility", align 8
  %33 = alloca %"struct.AST::AbsolutePath", align 8
  %34 = alloca %class.RcString, align 8
  %35 = alloca %"class.AST::Item", align 8
  %36 = alloca %"struct.AST::UseItem", align 8
  %37 = alloca %"struct.AST::UseItem::Ent", align 8
  %38 = alloca i1, align 1
  %39 = alloca %"class.AST::AttributeList", align 8
  %40 = alloca %"class.std::vector.369", align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca %"struct.AST::AbsolutePath", align 8
  %45 = alloca %class.RcString, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.AST::Visibility", align 8
  %48 = alloca i8, align 1
  %49 = alloca ptr, align 8
  %50 = alloca i8, align 1
  %51 = alloca ptr, align 8
  %52 = alloca i8, align 1
  %53 = alloca ptr, align 8
  %54 = alloca i8, align 1
  %55 = alloca ptr, align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca i8, align 1
  %63 = alloca ptr, align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.384", align 8
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  %74 = alloca i8, align 1
  %75 = alloca ptr, align 8
  %76 = alloca %"class.AST::AttributeList", align 8
  %77 = alloca %"class.AST::Visibility", align 8
  %78 = alloca ptr, align 8
  %79 = alloca %struct.LList, align 8
  %80 = alloca %struct.ExpandState, align 8
  %81 = alloca %struct.LList, align 8
  %82 = alloca %"struct.AST::AbsolutePath", align 8
  %83 = alloca %"class.AST::Item", align 8
  %84 = alloca i8, align 1
  %85 = alloca ptr, align 8
  %86 = alloca i8, align 1
  %87 = alloca ptr, align 8
  %88 = alloca i8, align 1
  %89 = alloca ptr, align 8
  %90 = alloca i8, align 1
  %91 = alloca ptr, align 8
  %92 = alloca %struct.Span, align 8
  %93 = alloca %"class.std::function", align 8
  %94 = alloca %class.anon.385, align 1
  %95 = alloca %"class.AST::MacroInvocation", align 8
  %96 = alloca %class.TraceLog, align 8
  %97 = alloca %"class.std::function", align 8
  %98 = alloca %class.anon.387, align 8
  %99 = alloca %"class.std::unique_ptr.273", align 8
  %100 = alloca %"class.std::vector.59", align 8
  %101 = alloca i64, align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.389", align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %106 = alloca %"class.std::move_iterator.390", align 8
  %107 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %108 = alloca %"class.std::move_iterator.390", align 8
  %109 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %110 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %111 = alloca i64, align 8
  %112 = alloca ptr, align 8
  %113 = alloca i8, align 1
  %114 = alloca ptr, align 8
  %115 = alloca %struct.Span, align 8
  %116 = alloca %"class.std::function", align 8
  %117 = alloca %class.anon.391, align 8
  %118 = alloca %class.RcString, align 8
  %119 = alloca %class.MacroRulesPtr, align 8
  %120 = alloca %"class.AST::Item", align 8
  %121 = alloca %"struct.AST::Item::Data_None", align 1
  %122 = alloca i8, align 1
  %123 = alloca ptr, align 8
  %124 = alloca ptr, align 8
  %125 = alloca %"class.__gnu_cxx::__normal_iterator.392", align 8
  %126 = alloca %"class.__gnu_cxx::__normal_iterator.392", align 8
  %127 = alloca ptr, align 8
  %128 = alloca %"struct.AST::AbsolutePath", align 8
  %129 = alloca %class.ResolveItemRef_Macro, align 8
  %130 = alloca %"class.AST::Path", align 8
  %131 = alloca %"class.AST::Path", align 8
  %132 = alloca %class.MacroRef, align 8
  %133 = alloca i8, align 1
  %134 = alloca ptr, align 8
  %135 = alloca i8, align 1
  %136 = alloca ptr, align 8
  %137 = alloca i8, align 1
  %138 = alloca ptr, align 8
  %139 = alloca i8, align 1
  %140 = alloca ptr, align 8
  %141 = alloca %class.MacroRef, align 8
  %142 = alloca i8, align 1
  %143 = alloca ptr, align 8
  %144 = alloca %class.MacroRef, align 8
  %145 = alloca %"struct.AST::Module::MacroImport", align 8
  %146 = alloca i8, align 1
  %147 = alloca ptr, align 8
  %148 = alloca %"class.std::vector.151", align 8
  %149 = alloca ptr, align 8
  %150 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %151 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %152 = alloca ptr, align 8
  %153 = alloca %"class.std::unique_ptr.374", align 8
  %154 = alloca i8, align 1
  %155 = alloca ptr, align 8
  %156 = alloca %"class.AST::Path", align 8
  %157 = alloca %"class.AST::Item", align 8
  %158 = alloca i8, align 1
  %159 = alloca ptr, align 8
  %160 = alloca %"class.AST::Path", align 8
  %161 = alloca %"class.AST::Item", align 8
  %162 = alloca i8, align 1
  %163 = alloca ptr, align 8
  %164 = alloca i8, align 1
  %165 = alloca ptr, align 8
  %166 = alloca %class.RcString, align 8
  %167 = alloca %struct.Span, align 8
  %168 = alloca %"class.std::__cxx11::basic_string", align 8
  %169 = alloca %"class.std::allocator.5", align 1
  %170 = alloca %"struct.std::pair.403", align 8
  %171 = alloca %"struct.std::pair.399", align 8
  %172 = alloca %"struct.std::pair.405", align 8
  %173 = alloca %"struct.std::pair.399", align 8
  %174 = alloca i8, align 1
  %175 = alloca ptr, align 8
  %176 = alloca i8, align 1
  %177 = alloca ptr, align 8
  %178 = alloca i8, align 1
  %179 = alloca ptr, align 8
  %180 = alloca i8, align 1
  %181 = alloca ptr, align 8
  %182 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %183 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %184 = alloca ptr, align 8
  %185 = alloca %"class.std::function.44", align 8
  %186 = alloca %class.anon.408, align 8
  %187 = alloca %"class.std::function.44", align 8
  %188 = alloca %class.anon.409, align 8
  %189 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %190 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %191 = alloca i8, align 1
  %192 = alloca ptr, align 8
  %193 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %194 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %195 = alloca ptr, align 8
  %196 = alloca %"class.std::function.44", align 8
  %197 = alloca %class.anon.412, align 8
  %198 = alloca %"class.std::function.44", align 8
  %199 = alloca %class.anon.413, align 8
  %200 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %201 = alloca %"class.__gnu_cxx::__normal_iterator.414", align 8
  %202 = alloca i8, align 1
  %203 = alloca ptr, align 8
  %204 = alloca ptr, align 8
  %205 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %206 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %207 = alloca ptr, align 8
  %208 = alloca %"class.std::function.44", align 8
  %209 = alloca %class.anon.415, align 8
  %210 = alloca i8, align 1
  %211 = alloca ptr, align 8
  %212 = alloca i8, align 1
  %213 = alloca ptr, align 8
  %214 = alloca i8, align 1
  %215 = alloca ptr, align 8
  %216 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %217 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %218 = alloca ptr, align 8
  %219 = alloca %"class.std::function.44", align 8
  %220 = alloca %class.anon.416, align 8
  %221 = alloca %"class.std::function.44", align 8
  %222 = alloca %class.anon.417, align 8
  %223 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %224 = alloca %"class.__gnu_cxx::__normal_iterator.414", align 8
  %225 = alloca i8, align 1
  %226 = alloca ptr, align 8
  %227 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %228 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %229 = alloca ptr, align 8
  %230 = alloca %"class.std::function.44", align 8
  %231 = alloca %class.anon.418, align 8
  %232 = alloca %"class.std::function.44", align 8
  %233 = alloca %class.anon.419, align 8
  %234 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %235 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %236 = alloca %"class.std::function.44", align 8
  %237 = alloca %class.anon.420, align 8
  %238 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %239 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %240 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %241 = alloca %"class.__gnu_cxx::__normal_iterator.384", align 8
  %242 = alloca i8, align 1
  %243 = alloca ptr, align 8
  %244 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %245 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %246 = alloca ptr, align 8
  %247 = alloca %"class.std::function.44", align 8
  %248 = alloca %class.anon.421, align 8
  %249 = alloca %"class.std::function.44", align 8
  %250 = alloca %class.anon.422, align 8
  %251 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %252 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %253 = alloca i8, align 1
  %254 = alloca ptr, align 8
  %255 = alloca ptr, align 8
  %256 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %257 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %258 = alloca ptr, align 8
  %259 = alloca ptr, align 8
  %260 = alloca i64, align 8
  %261 = alloca ptr, align 8
  %262 = alloca %"class.AST::AttributeList", align 8
  %263 = alloca %"struct.AST::AbsolutePath", align 8
  %264 = alloca %class.RcString, align 8
  %265 = alloca i8, align 1
  %266 = alloca ptr, align 8
  %267 = alloca %struct.Span, align 8
  %268 = alloca %"class.std::function", align 8
  %269 = alloca %class.anon.425, align 8
  %270 = alloca i8, align 1
  %271 = alloca ptr, align 8
  %272 = alloca i8, align 1
  %273 = alloca ptr, align 8
  %274 = alloca %class.TraceLog, align 8
  %275 = alloca %"class.std::function", align 8
  %276 = alloca %class.anon.426, align 8
  %277 = alloca %"class.AST::MacroInvocation", align 8
  %278 = alloca %"class.std::unique_ptr.273", align 8
  %279 = alloca %struct.Span, align 8
  %280 = alloca %"class.std::function", align 8
  %281 = alloca %class.anon.427, align 1
  %282 = alloca i64, align 8
  %283 = alloca %"struct.AST::Named.382", align 8
  %284 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %285 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %286 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %287 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %288 = alloca %"class.AST::Item", align 8
  %289 = alloca %"struct.AST::Item::Data_None", align 1
  %290 = alloca i8, align 1
  %291 = alloca ptr, align 8
  %292 = alloca i8, align 1
  %293 = alloca ptr, align 8
  %294 = alloca i8, align 1
  %295 = alloca ptr, align 8
  %296 = alloca ptr, align 8
  %297 = alloca i8, align 1
  %298 = alloca ptr, align 8
  %299 = alloca i8, align 1
  %300 = alloca ptr, align 8
  %301 = alloca i8, align 1
  %302 = alloca ptr, align 8
  %303 = alloca i8, align 1
  %304 = alloca ptr, align 8
  %305 = alloca ptr, align 8
  %306 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %307 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %308 = alloca ptr, align 8
  %309 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %9) #9
  %310 = call noundef zeroext i1 @_Z13debug_enabledv()
  %311 = zext i1 %310 to i64
  %312 = select i1 %310, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #9
  %313 = getelementptr inbounds %class.anon.367, ptr %11, i32 0, i32 0
  store ptr %1, ptr %313, align 8, !tbaa !5
  %314 = getelementptr inbounds %class.anon.367, ptr %11, i32 0, i32 1
  store ptr %8, ptr %314, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %312, ptr noundef %10)
          to label %315 unwind label %346

315:                                              ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ExpandState, ptr %316, i32 0, i32 2
  %318 = load i32, ptr %317, align 8, !tbaa !11
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %645

320:                                              ; preds = %315
  %321 = load i32, ptr %8, align 4, !tbaa !9
  %322 = icmp eq i32 %321, 0
  br i1 %322, label %323, label %492

323:                                              ; preds = %320
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ExpandState, ptr %324, i32 0, i32 1
  %326 = getelementptr inbounds %struct.LList, ptr %325, i32 0, i32 0
  %327 = load ptr, ptr %326, align 8, !tbaa !16
  %328 = icmp ne ptr %327, null
  br i1 %328, label %329, label %449

329:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %330 = load ptr, ptr %5, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ExpandState, ptr %330, i32 0, i32 1
  %332 = getelementptr inbounds %struct.LList, ptr %331, i32 0, i32 0
  %333 = load ptr, ptr %332, align 8, !tbaa !16
  %334 = getelementptr inbounds %struct.LList, ptr %333, i32 0, i32 1
  %335 = load ptr, ptr %334, align 8, !tbaa !17
  %336 = getelementptr inbounds %"class.AST::Module", ptr %335, i32 0, i32 12
  store ptr %336, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = call ptr @_ZNKSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %337) #9
  %339 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.272", ptr %15, i32 0, i32 0
  store ptr %338, ptr %339, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %340 = load ptr, ptr %14, align 8, !tbaa !5
  %341 = call ptr @_ZNKSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %340) #9
  %342 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.272", ptr %16, i32 0, i32 0
  store ptr %341, ptr %342, align 8
  br label %343

343:                                              ; preds = %357, %329
  %344 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %344, label %350, label %345

345:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  br label %368

346:                                              ; preds = %4
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %12, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  br label %3736

350:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %351 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  store ptr %351, ptr %17, align 8, !tbaa !5
  %352 = load ptr, ptr %7, align 8, !tbaa !5
  %353 = getelementptr inbounds %"class.AST::Module", ptr %352, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #9
  %354 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3AST6Module11MacroImport5cloneEv(ptr dead_on_unwind writable sret(%"struct.AST::Module::MacroImport") align 8 %18, ptr noundef nonnull align 8 dereferenceable(64) %354)
          to label %355 unwind label %359

355:                                              ; preds = %350
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %353, ptr noundef nonnull align 8 dereferenceable(64) %18)
          to label %356 unwind label %363

356:                                              ; preds = %355
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br label %357

357:                                              ; preds = %356
  %358 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  br label %343

359:                                              ; preds = %350
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %12, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %13, align 4
  br label %367

363:                                              ; preds = %355
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %12, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %13, align 4
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #9
  br label %367

367:                                              ; preds = %363, %359
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  br label %3735

368:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.ExpandState, ptr %369, i32 0, i32 1
  %371 = getelementptr inbounds %struct.LList, ptr %370, i32 0, i32 0
  %372 = load ptr, ptr %371, align 8, !tbaa !16
  %373 = getelementptr inbounds %struct.LList, ptr %372, i32 0, i32 1
  %374 = load ptr, ptr %373, align 8, !tbaa !17
  %375 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480) %374)
          to label %376 unwind label %386

376:                                              ; preds = %368
  store ptr %375, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %377 = load ptr, ptr %19, align 8, !tbaa !5
  %378 = call ptr @_ZNKSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %377) #9
  %379 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.266", ptr %20, i32 0, i32 0
  store ptr %378, ptr %379, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %380 = load ptr, ptr %19, align 8, !tbaa !5
  %381 = call ptr @_ZNKSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %380) #9
  %382 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.266", ptr %21, i32 0, i32 0
  store ptr %381, ptr %382, align 8
  br label %383

383:                                              ; preds = %419, %376
  %384 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br i1 %384, label %390, label %385

385:                                              ; preds = %383
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %448

386:                                              ; preds = %368
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %12, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %13, align 4
  br label %447

390:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %391 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  store ptr %391, ptr %22, align 8, !tbaa !5
  %392 = load ptr, ptr %7, align 8, !tbaa !5
  %393 = getelementptr inbounds %"class.AST::Module", ptr %392, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #9
  %394 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %23, i32 0, i32 0
  store i8 0, ptr %394, align 8, !tbaa !18
  %395 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %23, i32 0, i32 1
  %396 = load ptr, ptr %22, align 8, !tbaa !5
  %397 = getelementptr inbounds %"struct.AST::Named", ptr %396, i32 0, i32 3
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %395, ptr noundef nonnull align 8 dereferenceable(8) %397)
          to label %398 unwind label %421

398:                                              ; preds = %390
  store i1 true, ptr %25, align 1
  %399 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %23, i32 0, i32 2
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.ExpandState, ptr %400, i32 0, i32 1
  %402 = getelementptr inbounds %struct.LList, ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !16
  %404 = getelementptr inbounds %struct.LList, ptr %403, i32 0, i32 1
  %405 = load ptr, ptr %404, align 8, !tbaa !17
  %406 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %405)
          to label %407 unwind label %425

407:                                              ; preds = %398
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.AST::Named", ptr %408, i32 0, i32 3
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %410 unwind label %425

410:                                              ; preds = %407
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind writable sret(%"struct.AST::AbsolutePath") align 8 %399, ptr noundef nonnull align 8 dereferenceable(32) %406, ptr noundef %24)
          to label %411 unwind label %429

411:                                              ; preds = %410
  %412 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %23, i32 0, i32 3
  %413 = load ptr, ptr %22, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.AST::Named", ptr %413, i32 0, i32 4
  %415 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK13MacroRulesPtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %416 unwind label %433

416:                                              ; preds = %411
  invoke void @_ZN8MacroRefC2EPK10MacroRules(ptr noundef nonnull align 8 dereferenceable(16) %412, ptr noundef %415)
          to label %417 unwind label %433

417:                                              ; preds = %416
  store i1 false, ptr %25, align 1
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %393, ptr noundef nonnull align 8 dereferenceable(64) %23)
          to label %418 unwind label %437

418:                                              ; preds = %417
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %23) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %419

419:                                              ; preds = %418
  %420 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %383

421:                                              ; preds = %390
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %12, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %13, align 4
  br label %446

425:                                              ; preds = %407, %398
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %12, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %13, align 4
  br label %442

429:                                              ; preds = %410
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %12, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %13, align 4
  br label %441

433:                                              ; preds = %416, %411
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %12, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %13, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  br label %441

437:                                              ; preds = %417
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %12, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %13, align 4
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %23) #9
  br label %441

441:                                              ; preds = %437, %433, %429
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %442

442:                                              ; preds = %441, %425
  %443 = load i1, ptr %25, align 1
  br i1 %443, label %444, label %445

444:                                              ; preds = %442
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %395) #9
  br label %445

445:                                              ; preds = %444, %442
  br label %446

446:                                              ; preds = %445, %421
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %447

447:                                              ; preds = %446, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %3735

448:                                              ; preds = %385
  br label %449

449:                                              ; preds = %448, %323
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %450 = load ptr, ptr %7, align 8, !tbaa !5
  %451 = getelementptr inbounds %"class.AST::Module", ptr %450, i32 0, i32 12
  store ptr %451, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %452 = load ptr, ptr %26, align 8, !tbaa !5
  %453 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %452) #9
  %454 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.368", ptr %27, i32 0, i32 0
  store ptr %453, ptr %454, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %455 = load ptr, ptr %26, align 8, !tbaa !5
  %456 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %455) #9
  %457 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.368", ptr %28, i32 0, i32 0
  store ptr %456, ptr %457, align 8
  br label %458

458:                                              ; preds = %489, %449
  %459 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  br i1 %459, label %461, label %460

460:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %491

461:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %462 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  store ptr %462, ptr %29, align 8, !tbaa !5
  br label %463

463:                                              ; preds = %461
  %464 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %465 unwind label %482

465:                                              ; preds = %463
  br i1 %464, label %466, label %486

466:                                              ; preds = %465
  %467 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %467, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %469 unwind label %482

469:                                              ; preds = %466
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %468, ptr noundef @.str.32)
          to label %471 unwind label %482

471:                                              ; preds = %469
  %472 = load ptr, ptr %29, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %472, i32 0, i32 2
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 8 dereferenceable(32) %473)
          to label %475 unwind label %482

475:                                              ; preds = %471
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef @.str.33)
          to label %477 unwind label %482

477:                                              ; preds = %475
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef @_ZSt3decRSt8ios_base)
          to label %479 unwind label %482

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %481 unwind label %482

481:                                              ; preds = %479
  br label %486

482:                                              ; preds = %479, %477, %475, %471, %469, %466, %463
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %12, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %3735

486:                                              ; preds = %481, %465
  br label %487

487:                                              ; preds = %486
  br label %488

488:                                              ; preds = %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %489

489:                                              ; preds = %488
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br label %458

491:                                              ; preds = %460
  br label %492

492:                                              ; preds = %491, %320
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.ExpandState, ptr %493, i32 0, i32 0
  %495 = load ptr, ptr %494, align 8, !tbaa !28
  %496 = getelementptr inbounds %"class.AST::Crate", ptr %495, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 240, ptr %30) #9
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %30)
          to label %497 unwind label %529

497:                                              ; preds = %492
  %498 = invoke noundef zeroext i1 @_ZNK3AST4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %496, ptr noundef nonnull align 8 dereferenceable(240) %30)
          to label %499 unwind label %533

499:                                              ; preds = %497
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #9
  call void @llvm.lifetime.end.p0(i64 240, ptr %30) #9
  br i1 %498, label %500, label %644

500:                                              ; preds = %499
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds %"class.AST::Module", ptr %501, i32 0, i32 5
  %503 = load i8, ptr %502, align 8, !tbaa !29, !range !64, !noundef !65
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %626

505:                                              ; preds = %500
  %506 = load ptr, ptr %7, align 8, !tbaa !5
  %507 = invoke noundef zeroext i1 @_ZNK3AST6Module7is_anonEv(ptr noundef nonnull align 8 dereferenceable(480) %506)
          to label %508 unwind label %538

508:                                              ; preds = %505
  br i1 %507, label %626, label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  %511 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %512 unwind label %538

512:                                              ; preds = %510
  br i1 %511, label %513, label %542

513:                                              ; preds = %512
  %514 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %514, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %516 unwind label %538

516:                                              ; preds = %513
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef @.str.34)
          to label %518 unwind label %538

518:                                              ; preds = %516
  %519 = load ptr, ptr %5, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.ExpandState, ptr %519, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !28
  %522 = getelementptr inbounds %"class.AST::Crate", ptr %521, i32 0, i32 20
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull align 8 dereferenceable(240) %522)
          to label %524 unwind label %538

524:                                              ; preds = %518
  %525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef @_ZSt3decRSt8ios_base)
          to label %526 unwind label %538

526:                                              ; preds = %524
  %527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %528 unwind label %538

528:                                              ; preds = %526
  br label %542

529:                                              ; preds = %492
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %12, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %13, align 4
  br label %537

533:                                              ; preds = %497
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %12, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %13, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #9
  br label %537

537:                                              ; preds = %533, %529
  call void @llvm.lifetime.end.p0(i64 240, ptr %30) #9
  br label %3735

538:                                              ; preds = %637, %635, %633, %630, %627, %544, %526, %524, %518, %516, %513, %510, %505
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %12, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %13, align 4
  br label %3735

542:                                              ; preds = %528, %512
  br label %543

543:                                              ; preds = %542
  br label %544

544:                                              ; preds = %543
  %545 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %546 unwind label %538

546:                                              ; preds = %544
  %547 = load ptr, ptr %7, align 8, !tbaa !5
  %548 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %547)
          to label %549 unwind label %570

549:                                              ; preds = %546
  invoke void @_ZN3AST12AbsolutePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %548)
          to label %550 unwind label %570

550:                                              ; preds = %549
  invoke void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8 %32, i32 noundef 0, ptr noundef %33)
          to label %551 unwind label %574

551:                                              ; preds = %550
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef @.str.19)
          to label %552 unwind label %578

552:                                              ; preds = %551
  %553 = getelementptr inbounds %"struct.AST::UseItem", ptr %36, i32 0, i32 0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %554 unwind label %582

554:                                              ; preds = %552
  store i1 true, ptr %38, align 1
  %555 = getelementptr inbounds %"struct.AST::UseItem", ptr %36, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 256, ptr %37) #9
  %556 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %37, i32 0, i32 0
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %557 unwind label %586

557:                                              ; preds = %554
  %558 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %37, i32 0, i32 1
  %559 = load ptr, ptr %5, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ExpandState, ptr %559, i32 0, i32 0
  %561 = load ptr, ptr %560, align 8, !tbaa !28
  %562 = getelementptr inbounds %"class.AST::Crate", ptr %561, i32 0, i32 20
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %558, ptr noundef nonnull align 8 dereferenceable(240) %562)
          to label %563 unwind label %590

563:                                              ; preds = %557
  %564 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %37, i32 0, i32 2
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %564, ptr noundef @.str.19)
          to label %565 unwind label %594

565:                                              ; preds = %563
  invoke void @_Z9make_vec1IN3AST7UseItem3EntEESt6vectorIT_SaIS4_EEOS4_(ptr dead_on_unwind writable sret(%"class.std::vector.146") align 8 %555, ptr noundef nonnull align 8 dereferenceable(256) %37)
          to label %566 unwind label %599

566:                                              ; preds = %565
  store i1 false, ptr %38, align 1
  invoke void @_ZN3AST4ItemC2ENS_7UseItemE(ptr noundef nonnull align 8 dereferenceable(488) %35, ptr noundef %36)
          to label %567 unwind label %603

567:                                              ; preds = %566
  invoke void @_ZN3AST13AttributeListC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %568 unwind label %607

568:                                              ; preds = %567
  invoke void @_ZN3AST6Module8add_itemE4SpanNS_10VisibilityE8RcStringNS_4ItemENS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(480) %545, ptr noundef %31, ptr noundef %32, ptr noundef %34, ptr noundef %35, ptr noundef %39)
          to label %569 unwind label %611

569:                                              ; preds = %568
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #9
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %35) #9
  call void @_ZN3AST7UseItemD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZN3AST7UseItem3EntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %37) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %37) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %32) #9
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br label %643

570:                                              ; preds = %549, %546
  %571 = landingpad { ptr, i32 }
          cleanup
  %572 = extractvalue { ptr, i32 } %571, 0
  store ptr %572, ptr %12, align 8
  %573 = extractvalue { ptr, i32 } %571, 1
  store i32 %573, ptr %13, align 4
  br label %625

574:                                              ; preds = %550
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %12, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %13, align 4
  br label %624

578:                                              ; preds = %551
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %12, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %13, align 4
  br label %623

582:                                              ; preds = %552
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %12, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %13, align 4
  br label %622

586:                                              ; preds = %554
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %12, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %13, align 4
  br label %618

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

594:                                              ; preds = %563
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %12, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %13, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %558) #9
  br label %598

598:                                              ; preds = %594, %590
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %556) #9
  br label %618

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

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

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

611:                                              ; preds = %568
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %12, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %13, align 4
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #9
  br label %615

615:                                              ; preds = %611, %607
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %35) #9
  br label %616

616:                                              ; preds = %615, %603
  call void @_ZN3AST7UseItemD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %617

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

618:                                              ; preds = %617, %598, %586
  call void @llvm.lifetime.end.p0(i64 256, ptr %37) #9
  %619 = load i1, ptr %38, align 1
  br i1 %619, label %620, label %621

620:                                              ; preds = %618
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %553) #9
  br label %621

621:                                              ; preds = %620, %618
  br label %622

622:                                              ; preds = %621, %582
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %623

623:                                              ; preds = %622, %578
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %32) #9
  br label %624

624:                                              ; preds = %623, %574
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %625

625:                                              ; preds = %624, %570
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br label %3735

626:                                              ; preds = %508, %500
  br label %627

627:                                              ; preds = %626
  %628 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %629 unwind label %538

629:                                              ; preds = %627
  br i1 %628, label %630, label %640

630:                                              ; preds = %629
  %631 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %631, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %633 unwind label %538

633:                                              ; preds = %630
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %632, ptr noundef @.str.35)
          to label %635 unwind label %538

635:                                              ; preds = %633
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef @_ZSt3decRSt8ios_base)
          to label %637 unwind label %538

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %639 unwind label %538

639:                                              ; preds = %637
  br label %640

640:                                              ; preds = %639, %629
  br label %641

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642, %569
  br label %644

644:                                              ; preds = %643, %499
  br label %645

645:                                              ; preds = %644, %315
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #9
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  br label %646

646:                                              ; preds = %645
  %647 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %648 unwind label %659

648:                                              ; preds = %646
  br i1 %647, label %649, label %663

649:                                              ; preds = %648
  %650 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %651 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %650, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %652 unwind label %659

652:                                              ; preds = %649
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %651, ptr noundef @.str.36)
          to label %654 unwind label %659

654:                                              ; preds = %652
  %655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef @_ZSt3decRSt8ios_base)
          to label %656 unwind label %659

656:                                              ; preds = %654
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %658 unwind label %659

658:                                              ; preds = %656
  br label %663

659:                                              ; preds = %656, %654, %652, %649, %646
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %12, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %13, align 4
  br label %3734

663:                                              ; preds = %658, %648
  br label %664

664:                                              ; preds = %663
  br label %665

665:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %666 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %666, ptr %41, align 4, !tbaa !9
  br label %667

667:                                              ; preds = %3725, %665
  %668 = load i32, ptr %41, align 4, !tbaa !9
  %669 = zext i32 %668 to i64
  %670 = load ptr, ptr %7, align 8, !tbaa !5
  %671 = getelementptr inbounds %"class.AST::Module", ptr %670, i32 0, i32 1
  %672 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %671) #9
  %673 = icmp ult i64 %669, %672
  br i1 %673, label %675, label %674

674:                                              ; preds = %667
  store i32 16, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %3733

675:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %676 = load ptr, ptr %7, align 8, !tbaa !5
  %677 = getelementptr inbounds %"class.AST::Module", ptr %676, i32 0, i32 1
  %678 = load i32, ptr %41, align 4, !tbaa !9
  %679 = zext i32 %678 to i64
  %680 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef %679) #9
  %681 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %680) #9
  store ptr %681, ptr %43, align 8, !tbaa !5
  br label %682

682:                                              ; preds = %711, %675
  %683 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  br i1 %683, label %689, label %684

684:                                              ; preds = %682
  %685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  %687 = load ptr, ptr %43, align 8, !tbaa !5
  %688 = icmp eq ptr %686, %687
  br label %689

689:                                              ; preds = %684, %682
  %690 = phi i1 [ false, %682 ], [ %688, %684 ]
  br i1 %690, label %691, label %712

691:                                              ; preds = %689
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  br label %692

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

694:                                              ; preds = %692
  br i1 %693, label %695, label %709

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

698:                                              ; preds = %695
  %699 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %697, ptr noundef @.str.37)
          to label %700 unwind label %705

700:                                              ; preds = %698
  %701 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %699, ptr noundef @_ZSt3decRSt8ios_base)
          to label %702 unwind label %705

702:                                              ; preds = %700
  %703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %701, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %704 unwind label %705

704:                                              ; preds = %702
  br label %709

705:                                              ; preds = %747, %745, %741, %739, %737, %735, %731, %729, %725, %723, %721, %719, %716, %713, %702, %700, %698, %695, %692
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %12, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %13, align 4
  br label %3732

709:                                              ; preds = %704, %694
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710
  br label %682, !llvm.loop !66

712:                                              ; preds = %689
  br label %713

713:                                              ; preds = %712
  %714 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %715 unwind label %705

715:                                              ; preds = %713
  br i1 %714, label %716, label %750

716:                                              ; preds = %715
  %717 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %718 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %717, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %719 unwind label %705

719:                                              ; preds = %716
  %720 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %718, ptr noundef @.str.38)
          to label %721 unwind label %705

721:                                              ; preds = %719
  %722 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %720, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %723 unwind label %705

723:                                              ; preds = %721
  %724 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %722, ptr noundef @.str.14)
          to label %725 unwind label %705

725:                                              ; preds = %723
  %726 = load ptr, ptr %43, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.AST::Named.382", ptr %726, i32 0, i32 3
  %728 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %724, ptr noundef nonnull align 8 dereferenceable(8) %727)
          to label %729 unwind label %705

729:                                              ; preds = %725
  %730 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %728, ptr noundef @.str.39)
          to label %731 unwind label %705

731:                                              ; preds = %729
  %732 = load ptr, ptr %43, align 8, !tbaa !5
  %733 = getelementptr inbounds %"struct.AST::Named.382", ptr %732, i32 0, i32 4
  %734 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %733)
          to label %735 unwind label %705

735:                                              ; preds = %731
  %736 = invoke noundef ptr @_ZN3AST4Item10tag_to_strENS0_3TagE(i32 noundef %734)
          to label %737 unwind label %705

737:                                              ; preds = %735
  %738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %730, ptr noundef %736)
          to label %739 unwind label %705

739:                                              ; preds = %737
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %738, ptr noundef @.str.40)
          to label %741 unwind label %705

741:                                              ; preds = %739
  %742 = load ptr, ptr %43, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.AST::Named.382", ptr %742, i32 0, i32 1
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef nonnull align 8 dereferenceable(24) %743)
          to label %745 unwind label %705

745:                                              ; preds = %741
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef @_ZSt3decRSt8ios_base)
          to label %747 unwind label %705

747:                                              ; preds = %745
  %748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %746, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %749 unwind label %705

749:                                              ; preds = %747
  br label %750

750:                                              ; preds = %749, %715
  br label %751

751:                                              ; preds = %750
  br label %752

752:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #9
  %753 = load ptr, ptr %43, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.AST::Named.382", ptr %753, i32 0, i32 3
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %755 unwind label %795

755:                                              ; preds = %752
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind writable sret(%"struct.AST::AbsolutePath") align 8 %44, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %45)
          to label %756 unwind label %799

756:                                              ; preds = %755
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.AST::Named.382", ptr %757, i32 0, i32 4
  %759 = invoke noundef ptr @_ZN3AST4Item12opt_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %758)
          to label %760 unwind label %803

760:                                              ; preds = %756
  store ptr %759, ptr %46, align 8, !tbaa !5
  %761 = load ptr, ptr %46, align 8, !tbaa !5
  %762 = icmp ne ptr %761, null
  br i1 %762, label %763, label %815

763:                                              ; preds = %760
  %764 = load ptr, ptr %46, align 8, !tbaa !5
  %765 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %764)
          to label %766 unwind label %803

766:                                              ; preds = %763
  %767 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %765)
          to label %768 unwind label %803

768:                                              ; preds = %766
  br i1 %767, label %769, label %814

769:                                              ; preds = %768
  %770 = load ptr, ptr %46, align 8, !tbaa !5
  %771 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %770)
          to label %772 unwind label %803

772:                                              ; preds = %769
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %771)
          to label %774 unwind label %803

774:                                              ; preds = %772
  %775 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef @.str.41)
          to label %776 unwind label %803

776:                                              ; preds = %774
  br i1 %775, label %777, label %814

777:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 40, ptr %47) #9
  invoke void @_ZN3AST10Visibility11make_globalEv(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8 %47)
          to label %778 unwind label %807

778:                                              ; preds = %777
  %779 = load ptr, ptr %43, align 8, !tbaa !5
  %780 = getelementptr inbounds %"struct.AST::Named.382", ptr %779, i32 0, i32 2
  %781 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3AST10VisibilityaSEOS0_(ptr noundef nonnull align 8 dereferenceable(36) %780, ptr noundef nonnull align 8 dereferenceable(36) %47) #9
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %47) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %47) #9
  br label %782

782:                                              ; preds = %778
  %783 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %784 unwind label %803

784:                                              ; preds = %782
  br i1 %783, label %785, label %811

785:                                              ; preds = %784
  %786 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %787 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %786, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %788 unwind label %803

788:                                              ; preds = %785
  %789 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %787, ptr noundef @.str.42)
          to label %790 unwind label %803

790:                                              ; preds = %788
  %791 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %789, ptr noundef @_ZSt3decRSt8ios_base)
          to label %792 unwind label %803

792:                                              ; preds = %790
  %793 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %791, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %794 unwind label %803

794:                                              ; preds = %792
  br label %811

795:                                              ; preds = %752
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %12, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %13, align 4
  br label %3731

799:                                              ; preds = %755
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %12, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %13, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %3731

803:                                              ; preds = %792, %790, %788, %785, %782, %774, %772, %769, %766, %763, %756
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %12, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %13, align 4
  br label %846

807:                                              ; preds = %777
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %12, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 40, ptr %47) #9
  br label %846

811:                                              ; preds = %794, %784
  br label %812

812:                                              ; preds = %811
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813, %776, %768
  br label %815

815:                                              ; preds = %814, %760
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %816

816:                                              ; preds = %815
  %817 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %818 unwind label %847

818:                                              ; preds = %816
  br i1 %817, label %819, label %851

819:                                              ; preds = %818
  %820 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %821 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %820, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %822 unwind label %847

822:                                              ; preds = %819
  %823 = load ptr, ptr %43, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.AST::Named.382", ptr %823, i32 0, i32 4
  %825 = invoke noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %824)
          to label %826 unwind label %847

826:                                              ; preds = %822
  %827 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %821, ptr noundef %825)
          to label %828 unwind label %847

828:                                              ; preds = %826
  %829 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %827, ptr noundef @.str.25)
          to label %830 unwind label %847

830:                                              ; preds = %828
  %831 = load ptr, ptr %7, align 8, !tbaa !5
  %832 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %831)
          to label %833 unwind label %847

833:                                              ; preds = %830
  %834 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %829, ptr noundef nonnull align 8 dereferenceable(32) %832)
          to label %835 unwind label %847

835:                                              ; preds = %833
  %836 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %834, ptr noundef @.str.14)
          to label %837 unwind label %847

837:                                              ; preds = %835
  %838 = load ptr, ptr %43, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.AST::Named.382", ptr %838, i32 0, i32 3
  %840 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %836, ptr noundef nonnull align 8 dereferenceable(8) %839)
          to label %841 unwind label %847

841:                                              ; preds = %837
  %842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %840, ptr noundef @_ZSt3decRSt8ios_base)
          to label %843 unwind label %847

843:                                              ; preds = %841
  %844 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %842, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %845 unwind label %847

845:                                              ; preds = %843
  br label %851

846:                                              ; preds = %807, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %3730

847:                                              ; preds = %843, %841, %837, %835, %833, %830, %828, %826, %822, %819, %816
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %12, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %13, align 4
  br label %3730

851:                                              ; preds = %845, %818
  br label %852

852:                                              ; preds = %851
  br label %853

853:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  store i8 1, ptr %48, align 1, !tbaa !68
  br label %854

854:                                              ; preds = %1199, %853
  %855 = load i8, ptr %48, align 1, !tbaa !68, !range !64, !noundef !65
  %856 = trunc i8 %855 to i1
  br i1 %856, label %858, label %857

857:                                              ; preds = %854
  store i32 29, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %1200

858:                                              ; preds = %854
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %859 = load ptr, ptr %43, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.AST::Named.382", ptr %859, i32 0, i32 4
  store ptr %860, ptr %49, align 8, !tbaa !5
  br label %861

861:                                              ; preds = %1196, %858
  %862 = load i8, ptr %48, align 1, !tbaa !68, !range !64, !noundef !65
  %863 = trunc i8 %862 to i1
  br i1 %863, label %865, label %864

864:                                              ; preds = %861
  store i32 32, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %1198

865:                                              ; preds = %861
  %866 = load ptr, ptr %49, align 8, !tbaa !5
  %867 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %866)
          to label %868 unwind label %869

868:                                              ; preds = %865
  switch i32 %867, label %1194 [
    i32 0, label %873
    i32 12, label %874
    i32 14, label %999
    i32 13, label %1025
  ]

869:                                              ; preds = %865
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %12, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %13, align 4
  br label %1197

873:                                              ; preds = %868
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 1986, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

874:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #9
  store i8 1, ptr %50, align 1, !tbaa !68
  br label %875

875:                                              ; preds = %997, %874
  %876 = load i8, ptr %50, align 1, !tbaa !68, !range !64, !noundef !65
  %877 = trunc i8 %876 to i1
  br i1 %877, label %879, label %878

878:                                              ; preds = %875
  store i32 36, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  br label %998

879:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %880 = load ptr, ptr %49, align 8, !tbaa !5
  %881 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %880)
          to label %882 unwind label %888

882:                                              ; preds = %879
  store ptr %881, ptr %51, align 8, !tbaa !5
  br label %883

883:                                              ; preds = %994, %882
  %884 = load ptr, ptr %51, align 8, !tbaa !5
  %885 = load i8, ptr %50, align 1, !tbaa !68, !range !64, !noundef !65
  %886 = trunc i8 %885 to i1
  br i1 %886, label %892, label %887

887:                                              ; preds = %883
  store i32 39, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %996

888:                                              ; preds = %879
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %12, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %13, align 4
  br label %995

892:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #9
  store i8 1, ptr %52, align 1, !tbaa !68
  br label %893

893:                                              ; preds = %992, %892
  %894 = load i8, ptr %52, align 1, !tbaa !68, !range !64, !noundef !65
  %895 = trunc i8 %894 to i1
  br i1 %895, label %897, label %896

896:                                              ; preds = %893
  store i32 42, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  br label %993

897:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %898 = load ptr, ptr %51, align 8, !tbaa !5
  %899 = getelementptr inbounds %"class.AST::Struct", ptr %898, i32 0, i32 1
  store ptr %899, ptr %53, align 8, !tbaa !5
  br label %900

900:                                              ; preds = %989, %897
  %901 = load i8, ptr %52, align 1, !tbaa !68, !range !64, !noundef !65
  %902 = trunc i8 %901 to i1
  br i1 %902, label %904, label %903

903:                                              ; preds = %900
  store i32 45, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %991

904:                                              ; preds = %900
  %905 = load ptr, ptr %53, align 8, !tbaa !5
  %906 = invoke noundef i32 @_ZNK3AST10StructData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %905)
          to label %907 unwind label %908

907:                                              ; preds = %904
  switch i32 %906, label %988 [
    i32 0, label %912
    i32 1, label %913
    i32 3, label %936
    i32 2, label %962
  ]

908:                                              ; preds = %904
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %12, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %13, align 4
  br label %990

912:                                              ; preds = %907
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 1989, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

913:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #9
  store i8 1, ptr %54, align 1, !tbaa !68
  br label %914

914:                                              ; preds = %934, %913
  %915 = load i8, ptr %54, align 1, !tbaa !68, !range !64, !noundef !65
  %916 = trunc i8 %915 to i1
  br i1 %916, label %918, label %917

917:                                              ; preds = %914
  store i32 49, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  br label %935

918:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %919 = load ptr, ptr %53, align 8, !tbaa !5
  %920 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST10StructData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %919)
          to label %921 unwind label %927

921:                                              ; preds = %918
  store ptr %920, ptr %55, align 8, !tbaa !5
  br label %922

922:                                              ; preds = %932, %921
  %923 = load ptr, ptr %55, align 8, !tbaa !5
  %924 = load i8, ptr %54, align 1, !tbaa !68, !range !64, !noundef !65
  %925 = trunc i8 %924 to i1
  br i1 %925, label %931, label %926

926:                                              ; preds = %922
  store i32 52, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %933

927:                                              ; preds = %918
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %12, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  br label %990

931:                                              ; preds = %922
  br label %932

932:                                              ; preds = %931
  store i8 0, ptr %54, align 1, !tbaa !68
  br label %922, !llvm.loop !69

933:                                              ; preds = %926
  br label %934

934:                                              ; preds = %933
  store i8 0, ptr %54, align 1, !tbaa !68
  br label %914, !llvm.loop !70

935:                                              ; preds = %917
  br label %988

936:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #9
  store i8 1, ptr %56, align 1, !tbaa !68
  br label %937

937:                                              ; preds = %960, %936
  %938 = load i8, ptr %56, align 1, !tbaa !68, !range !64, !noundef !65
  %939 = trunc i8 %938 to i1
  br i1 %939, label %941, label %940

940:                                              ; preds = %937
  store i32 55, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  br label %961

941:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %942 = load ptr, ptr %53, align 8, !tbaa !5
  %943 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %942)
          to label %944 unwind label %950

944:                                              ; preds = %941
  store ptr %943, ptr %57, align 8, !tbaa !5
  br label %945

945:                                              ; preds = %958, %944
  %946 = load ptr, ptr %57, align 8, !tbaa !5
  %947 = load i8, ptr %56, align 1, !tbaa !68, !range !64, !noundef !65
  %948 = trunc i8 %947 to i1
  br i1 %948, label %954, label %949

949:                                              ; preds = %945
  store i32 58, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %959

950:                                              ; preds = %954, %941
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %12, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  br label %990

954:                                              ; preds = %945
  %955 = load ptr, ptr %57, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.AST::StructData::Data_Struct", ptr %955, i32 0, i32 0
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %956)
          to label %957 unwind label %950

957:                                              ; preds = %954
  br label %958

958:                                              ; preds = %957
  store i8 0, ptr %56, align 1, !tbaa !68
  br label %945, !llvm.loop !71

959:                                              ; preds = %949
  br label %960

960:                                              ; preds = %959
  store i8 0, ptr %56, align 1, !tbaa !68
  br label %937, !llvm.loop !72

961:                                              ; preds = %940
  br label %988

962:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #9
  store i8 1, ptr %58, align 1, !tbaa !68
  br label %963

963:                                              ; preds = %986, %962
  %964 = load i8, ptr %58, align 1, !tbaa !68, !range !64, !noundef !65
  %965 = trunc i8 %964 to i1
  br i1 %965, label %967, label %966

966:                                              ; preds = %963
  store i32 61, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  br label %987

967:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %968 = load ptr, ptr %53, align 8, !tbaa !5
  %969 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %968)
          to label %970 unwind label %976

970:                                              ; preds = %967
  store ptr %969, ptr %59, align 8, !tbaa !5
  br label %971

971:                                              ; preds = %984, %970
  %972 = load ptr, ptr %59, align 8, !tbaa !5
  %973 = load i8, ptr %58, align 1, !tbaa !68, !range !64, !noundef !65
  %974 = trunc i8 %973 to i1
  br i1 %974, label %980, label %975

975:                                              ; preds = %971
  store i32 64, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %985

976:                                              ; preds = %980, %967
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %12, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  br label %990

980:                                              ; preds = %971
  %981 = load ptr, ptr %59, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.AST::StructData::Data_Tuple", ptr %981, i32 0, i32 0
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %982)
          to label %983 unwind label %976

983:                                              ; preds = %980
  br label %984

984:                                              ; preds = %983
  store i8 0, ptr %58, align 1, !tbaa !68
  br label %971, !llvm.loop !73

985:                                              ; preds = %975
  br label %986

986:                                              ; preds = %985
  store i8 0, ptr %58, align 1, !tbaa !68
  br label %963, !llvm.loop !74

987:                                              ; preds = %966
  br label %988

988:                                              ; preds = %987, %961, %935, %907
  br label %989

989:                                              ; preds = %988
  store i8 0, ptr %52, align 1, !tbaa !68
  br label %900, !llvm.loop !75

990:                                              ; preds = %976, %950, %927, %908
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  br label %995

991:                                              ; preds = %903
  br label %992

992:                                              ; preds = %991
  store i8 0, ptr %52, align 1, !tbaa !68
  br label %893, !llvm.loop !76

993:                                              ; preds = %896
  br label %994

994:                                              ; preds = %993
  store i8 0, ptr %50, align 1, !tbaa !68
  br label %883, !llvm.loop !77

995:                                              ; preds = %990, %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  br label %1197

996:                                              ; preds = %887
  br label %997

997:                                              ; preds = %996
  store i8 0, ptr %50, align 1, !tbaa !68
  br label %875, !llvm.loop !78

998:                                              ; preds = %878
  br label %1195

999:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #9
  store i8 1, ptr %60, align 1, !tbaa !68
  br label %1000

1000:                                             ; preds = %1023, %999
  %1001 = load i8, ptr %60, align 1, !tbaa !68, !range !64, !noundef !65
  %1002 = trunc i8 %1001 to i1
  br i1 %1002, label %1004, label %1003

1003:                                             ; preds = %1000
  store i32 67, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  br label %1024

1004:                                             ; preds = %1000
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %1005 = load ptr, ptr %49, align 8, !tbaa !5
  %1006 = invoke noundef nonnull align 8 dereferenceable(76) ptr @_ZN3AST4Item8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(488) %1005)
          to label %1007 unwind label %1013

1007:                                             ; preds = %1004
  store ptr %1006, ptr %61, align 8, !tbaa !5
  br label %1008

1008:                                             ; preds = %1021, %1007
  %1009 = load ptr, ptr %61, align 8, !tbaa !5
  %1010 = load i8, ptr %60, align 1, !tbaa !68, !range !64, !noundef !65
  %1011 = trunc i8 %1010 to i1
  br i1 %1011, label %1017, label %1012

1012:                                             ; preds = %1008
  store i32 70, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %1022

1013:                                             ; preds = %1017, %1004
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %12, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  br label %1197

1017:                                             ; preds = %1008
  %1018 = load ptr, ptr %61, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"class.AST::Union", ptr %1018, i32 0, i32 1
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %1019)
          to label %1020 unwind label %1013

1020:                                             ; preds = %1017
  br label %1021

1021:                                             ; preds = %1020
  store i8 0, ptr %60, align 1, !tbaa !68
  br label %1008, !llvm.loop !79

1022:                                             ; preds = %1012
  br label %1023

1023:                                             ; preds = %1022
  store i8 0, ptr %60, align 1, !tbaa !68
  br label %1000, !llvm.loop !80

1024:                                             ; preds = %1003
  br label %1195

1025:                                             ; preds = %868
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #9
  store i8 1, ptr %62, align 1, !tbaa !68
  br label %1026

1026:                                             ; preds = %1192, %1025
  %1027 = load i8, ptr %62, align 1, !tbaa !68, !range !64, !noundef !65
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1030, label %1029

1029:                                             ; preds = %1026
  store i32 73, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  br label %1193

1030:                                             ; preds = %1026
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %1031 = load ptr, ptr %49, align 8, !tbaa !5
  %1032 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %1031)
          to label %1033 unwind label %1039

1033:                                             ; preds = %1030
  store ptr %1032, ptr %63, align 8, !tbaa !5
  br label %1034

1034:                                             ; preds = %1189, %1033
  %1035 = load ptr, ptr %63, align 8, !tbaa !5
  %1036 = load i8, ptr %62, align 1, !tbaa !68, !range !64, !noundef !65
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1043, label %1038

1038:                                             ; preds = %1034
  store i32 76, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %1191

1039:                                             ; preds = %1030
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %12, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %13, align 4
  br label %1190

1043:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %1044 = load ptr, ptr %63, align 8, !tbaa !5
  %1045 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %1044)
          to label %1046 unwind label %1057

1046:                                             ; preds = %1043
  %1047 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1045) #9
  %1048 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %64, i32 0, i32 0
  store ptr %1047, ptr %1048, align 8
  br label %1049

1049:                                             ; preds = %1186, %1046
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %1050 = load ptr, ptr %63, align 8, !tbaa !5
  %1051 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %1050)
          to label %1052 unwind label %1061

1052:                                             ; preds = %1049
  %1053 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1051) #9
  %1054 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %65, i32 0, i32 0
  store ptr %1053, ptr %1054, align 8
  %1055 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br i1 %1055, label %1065, label %1056

1056:                                             ; preds = %1052
  store i32 79, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %1188

1057:                                             ; preds = %1065, %1043
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %12, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %13, align 4
  br label %1187

1061:                                             ; preds = %1049
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %12, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %1187

1065:                                             ; preds = %1052
  %1066 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  %1067 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %1066, i32 0, i32 0
  %1068 = invoke noundef zeroext i1 @_Z15check_cfg_attrsRKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %1067)
          to label %1069 unwind label %1057

1069:                                             ; preds = %1065
  br i1 %1068, label %1083, label %1070

1070:                                             ; preds = %1069
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %1071 = load ptr, ptr %63, align 8, !tbaa !5
  %1072 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %1071)
          to label %1073 unwind label %1079

1073:                                             ; preds = %1070
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  %1074 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.384", ptr %67, i32 0, i32 0
  %1075 = load ptr, ptr %1074, align 8
  %1076 = invoke ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %1072, ptr %1075)
          to label %1077 unwind label %1079

1077:                                             ; preds = %1073
  %1078 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %66, i32 0, i32 0
  store ptr %1076, ptr %1078, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %66, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1186

1079:                                             ; preds = %1073, %1070
  %1080 = landingpad { ptr, i32 }
          cleanup
  %1081 = extractvalue { ptr, i32 } %1080, 0
  store ptr %1081, ptr %12, align 8
  %1082 = extractvalue { ptr, i32 } %1080, 1
  store i32 %1082, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %1187

1083:                                             ; preds = %1069
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  store i8 1, ptr %68, align 1, !tbaa !68
  br label %1084

1084:                                             ; preds = %1183, %1083
  %1085 = load i8, ptr %68, align 1, !tbaa !68, !range !64, !noundef !65
  %1086 = trunc i8 %1085 to i1
  br i1 %1086, label %1088, label %1087

1087:                                             ; preds = %1084
  store i32 81, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %1184

1088:                                             ; preds = %1084
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %1089 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  %1090 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %1089, i32 0, i32 2
  store ptr %1090, ptr %69, align 8, !tbaa !5
  br label %1091

1091:                                             ; preds = %1180, %1088
  %1092 = load i8, ptr %68, align 1, !tbaa !68, !range !64, !noundef !65
  %1093 = trunc i8 %1092 to i1
  br i1 %1093, label %1095, label %1094

1094:                                             ; preds = %1091
  store i32 84, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1182

1095:                                             ; preds = %1091
  %1096 = load ptr, ptr %69, align 8, !tbaa !5
  %1097 = invoke noundef i32 @_ZNK3AST15EnumVariantData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %1096)
          to label %1098 unwind label %1099

1098:                                             ; preds = %1095
  switch i32 %1097, label %1179 [
    i32 0, label %1103
    i32 1, label %1104
    i32 2, label %1127
    i32 3, label %1153
  ]

1099:                                             ; preds = %1095
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %12, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %13, align 4
  br label %1181

1103:                                             ; preds = %1098
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2010, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

1104:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #9
  store i8 1, ptr %70, align 1, !tbaa !68
  br label %1105

1105:                                             ; preds = %1125, %1104
  %1106 = load i8, ptr %70, align 1, !tbaa !68, !range !64, !noundef !65
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1109, label %1108

1108:                                             ; preds = %1105
  store i32 88, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  br label %1126

1109:                                             ; preds = %1105
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %1110 = load ptr, ptr %69, align 8, !tbaa !5
  %1111 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST15EnumVariantData8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(32) %1110)
          to label %1112 unwind label %1118

1112:                                             ; preds = %1109
  store ptr %1111, ptr %71, align 8, !tbaa !5
  br label %1113

1113:                                             ; preds = %1123, %1112
  %1114 = load ptr, ptr %71, align 8, !tbaa !5
  %1115 = load i8, ptr %70, align 1, !tbaa !68, !range !64, !noundef !65
  %1116 = trunc i8 %1115 to i1
  br i1 %1116, label %1122, label %1117

1117:                                             ; preds = %1113
  store i32 91, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %1124

1118:                                             ; preds = %1109
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %12, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  br label %1181

1122:                                             ; preds = %1113
  br label %1123

1123:                                             ; preds = %1122
  store i8 0, ptr %70, align 1, !tbaa !68
  br label %1113, !llvm.loop !82

1124:                                             ; preds = %1117
  br label %1125

1125:                                             ; preds = %1124
  store i8 0, ptr %70, align 1, !tbaa !68
  br label %1105, !llvm.loop !83

1126:                                             ; preds = %1108
  br label %1179

1127:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #9
  store i8 1, ptr %72, align 1, !tbaa !68
  br label %1128

1128:                                             ; preds = %1151, %1127
  %1129 = load i8, ptr %72, align 1, !tbaa !68, !range !64, !noundef !65
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1132, label %1131

1131:                                             ; preds = %1128
  store i32 94, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  br label %1152

1132:                                             ; preds = %1128
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  %1133 = load ptr, ptr %69, align 8, !tbaa !5
  %1134 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %1133)
          to label %1135 unwind label %1141

1135:                                             ; preds = %1132
  store ptr %1134, ptr %73, align 8, !tbaa !5
  br label %1136

1136:                                             ; preds = %1149, %1135
  %1137 = load ptr, ptr %73, align 8, !tbaa !5
  %1138 = load i8, ptr %72, align 1, !tbaa !68, !range !64, !noundef !65
  %1139 = trunc i8 %1138 to i1
  br i1 %1139, label %1145, label %1140

1140:                                             ; preds = %1136
  store i32 97, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %1150

1141:                                             ; preds = %1145, %1132
  %1142 = landingpad { ptr, i32 }
          cleanup
  %1143 = extractvalue { ptr, i32 } %1142, 0
  store ptr %1143, ptr %12, align 8
  %1144 = extractvalue { ptr, i32 } %1142, 1
  store i32 %1144, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  br label %1181

1145:                                             ; preds = %1136
  %1146 = load ptr, ptr %73, align 8, !tbaa !5
  %1147 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Tuple", ptr %1146, i32 0, i32 0
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %1147)
          to label %1148 unwind label %1141

1148:                                             ; preds = %1145
  br label %1149

1149:                                             ; preds = %1148
  store i8 0, ptr %72, align 1, !tbaa !68
  br label %1136, !llvm.loop !84

1150:                                             ; preds = %1140
  br label %1151

1151:                                             ; preds = %1150
  store i8 0, ptr %72, align 1, !tbaa !68
  br label %1128, !llvm.loop !85

1152:                                             ; preds = %1131
  br label %1179

1153:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #9
  store i8 1, ptr %74, align 1, !tbaa !68
  br label %1154

1154:                                             ; preds = %1177, %1153
  %1155 = load i8, ptr %74, align 1, !tbaa !68, !range !64, !noundef !65
  %1156 = trunc i8 %1155 to i1
  br i1 %1156, label %1158, label %1157

1157:                                             ; preds = %1154
  store i32 100, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  br label %1178

1158:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %1159 = load ptr, ptr %69, align 8, !tbaa !5
  %1160 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %1159)
          to label %1161 unwind label %1167

1161:                                             ; preds = %1158
  store ptr %1160, ptr %75, align 8, !tbaa !5
  br label %1162

1162:                                             ; preds = %1175, %1161
  %1163 = load ptr, ptr %75, align 8, !tbaa !5
  %1164 = load i8, ptr %74, align 1, !tbaa !68, !range !64, !noundef !65
  %1165 = trunc i8 %1164 to i1
  br i1 %1165, label %1171, label %1166

1166:                                             ; preds = %1162
  store i32 103, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %1176

1167:                                             ; preds = %1171, %1158
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %12, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #9
  br label %1181

1171:                                             ; preds = %1162
  %1172 = load ptr, ptr %75, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Struct", ptr %1172, i32 0, i32 0
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %1173)
          to label %1174 unwind label %1167

1174:                                             ; preds = %1171
  br label %1175

1175:                                             ; preds = %1174
  store i8 0, ptr %74, align 1, !tbaa !68
  br label %1162, !llvm.loop !86

1176:                                             ; preds = %1166
  br label %1177

1177:                                             ; preds = %1176
  store i8 0, ptr %74, align 1, !tbaa !68
  br label %1154, !llvm.loop !87

1178:                                             ; preds = %1157
  br label %1179

1179:                                             ; preds = %1178, %1152, %1126, %1098
  br label %1180

1180:                                             ; preds = %1179
  store i8 0, ptr %68, align 1, !tbaa !68
  br label %1091, !llvm.loop !88

1181:                                             ; preds = %1167, %1141, %1118, %1099
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %1187

1182:                                             ; preds = %1094
  br label %1183

1183:                                             ; preds = %1182
  store i8 0, ptr %68, align 1, !tbaa !68
  br label %1084, !llvm.loop !89

1184:                                             ; preds = %1087
  %1185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %1186

1186:                                             ; preds = %1184, %1077
  br label %1049, !llvm.loop !90

1187:                                             ; preds = %1181, %1079, %1061, %1057
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %1190

1188:                                             ; preds = %1056
  br label %1189

1189:                                             ; preds = %1188
  store i8 0, ptr %62, align 1, !tbaa !68
  br label %1034, !llvm.loop !91

1190:                                             ; preds = %1187, %1039
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #9
  br label %1197

1191:                                             ; preds = %1038
  br label %1192

1192:                                             ; preds = %1191
  store i8 0, ptr %62, align 1, !tbaa !68
  br label %1026, !llvm.loop !92

1193:                                             ; preds = %1029
  br label %1194

1194:                                             ; preds = %1193, %868
  br label %1195

1195:                                             ; preds = %1194, %1024, %998
  br label %1196

1196:                                             ; preds = %1195
  store i8 0, ptr %48, align 1, !tbaa !68
  br label %861, !llvm.loop !93

1197:                                             ; preds = %1190, %1013, %995, %869
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %3730

1198:                                             ; preds = %864
  br label %1199

1199:                                             ; preds = %1198
  store i8 0, ptr %48, align 1, !tbaa !68
  br label %854, !llvm.loop !94

1200:                                             ; preds = %857
  call void @llvm.lifetime.start.p0(i64 24, ptr %76) #9
  %1201 = load ptr, ptr %43, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"struct.AST::Named.382", ptr %1201, i32 0, i32 1
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 8 dereferenceable(24) %1202) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr %77) #9
  %1203 = load ptr, ptr %43, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"struct.AST::Named.382", ptr %1203, i32 0, i32 2
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %77, ptr noundef nonnull align 8 dereferenceable(36) %1204) #9
  %1205 = load ptr, ptr %5, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ExpandState, ptr %1205, i32 0, i32 2
  %1207 = load i32, ptr %1206, align 8, !tbaa !11
  %1208 = icmp eq i32 %1207, 0
  br i1 %1208, label %1209, label %1220

1209:                                             ; preds = %1200
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %1210 unwind label %1216

1210:                                             ; preds = %1209
  %1211 = load ptr, ptr %5, align 8, !tbaa !5
  %1212 = load ptr, ptr %7, align 8, !tbaa !5
  %1213 = load ptr, ptr %43, align 8, !tbaa !5
  %1214 = getelementptr inbounds %"struct.AST::Named.382", ptr %1213, i32 0, i32 4
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %1211, ptr noundef nonnull align 8 dereferenceable(24) %76, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(480) %1212, ptr noundef nonnull align 8 dereferenceable(36) %77, ptr noundef nonnull align 8 dereferenceable(488) %1214)
          to label %1215 unwind label %1216

1215:                                             ; preds = %1210
  br label %1220

1216:                                             ; preds = %1220, %1210, %1209
  %1217 = landingpad { ptr, i32 }
          cleanup
  %1218 = extractvalue { ptr, i32 } %1217, 0
  store ptr %1218, ptr %12, align 8
  %1219 = extractvalue { ptr, i32 } %1217, 1
  store i32 %1219, ptr %13, align 4
  br label %3729

1220:                                             ; preds = %1215, %1200
  %1221 = load ptr, ptr %43, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.AST::Named.382", ptr %1221, i32 0, i32 4
  %1223 = invoke noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %1222)
          to label %1224 unwind label %1216

1224:                                             ; preds = %1220
  br i1 %1223, label %1225, label %1299

1225:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  %1226 = load ptr, ptr %43, align 8, !tbaa !5
  %1227 = getelementptr inbounds %"struct.AST::Named.382", ptr %1226, i32 0, i32 4
  %1228 = invoke noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %1227)
          to label %1229 unwind label %1280

1229:                                             ; preds = %1225
  store ptr %1228, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #9
  %1230 = load ptr, ptr %5, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.ExpandState, ptr %1230, i32 0, i32 1
  %1232 = load ptr, ptr %78, align 8, !tbaa !5
  invoke void @_ZN5LListIPKN3AST6ModuleEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef %1231, ptr noundef %1232)
          to label %1233 unwind label %1284

1233:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #9
  %1234 = load ptr, ptr %5, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.ExpandState, ptr %1234, i32 0, i32 0
  %1236 = load ptr, ptr %1235, align 8, !tbaa !28
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %81, ptr align 8 %79, i64 16, i1 false), !tbaa.struct !95
  %1237 = load ptr, ptr %5, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ExpandState, ptr %1237, i32 0, i32 2
  %1239 = load i32, ptr %1238, align 8, !tbaa !11
  %1240 = getelementptr inbounds { ptr, ptr }, ptr %81, i32 0, i32 0
  %1241 = load ptr, ptr %1240, align 8
  %1242 = getelementptr inbounds { ptr, ptr }, ptr %81, i32 0, i32 1
  %1243 = load ptr, ptr %1242, align 8
  invoke void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30) %80, ptr noundef nonnull align 8 dereferenceable(1112) %1236, ptr %1241, ptr %1243, i32 noundef %1239)
          to label %1244 unwind label %1288

1244:                                             ; preds = %1233
  invoke void @_ZN3AST12AbsolutePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %1245 unwind label %1288

1245:                                             ; preds = %1244
  %1246 = load ptr, ptr %78, align 8, !tbaa !5
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %80, ptr noundef %82, ptr noundef nonnull align 8 dereferenceable(480) %1246, i32 noundef 0)
          to label %1247 unwind label %1292

1247:                                             ; preds = %1245
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  %1248 = load ptr, ptr %5, align 8, !tbaa !5
  %1249 = load ptr, ptr %7, align 8, !tbaa !5
  %1250 = load ptr, ptr %43, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.AST::Named.382", ptr %1250, i32 0, i32 4
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %1248, ptr noundef nonnull align 8 dereferenceable(24) %76, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(480) %1249, ptr noundef nonnull align 8 dereferenceable(36) %77, ptr noundef nonnull align 8 dereferenceable(488) %1251)
          to label %1252 unwind label %1288

1252:                                             ; preds = %1247
  %1253 = getelementptr inbounds %struct.ExpandState, ptr %80, i32 0, i32 3
  %1254 = load i8, ptr %1253, align 4, !tbaa !96, !range !64, !noundef !65
  %1255 = trunc i8 %1254 to i1
  %1256 = zext i1 %1255 to i32
  %1257 = load ptr, ptr %5, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ExpandState, ptr %1257, i32 0, i32 3
  %1259 = load i8, ptr %1258, align 4, !tbaa !96, !range !64, !noundef !65
  %1260 = trunc i8 %1259 to i1
  %1261 = zext i1 %1260 to i32
  %1262 = or i32 %1261, %1256
  %1263 = icmp ne i32 %1262, 0
  %1264 = zext i1 %1263 to i8
  store i8 %1264, ptr %1258, align 4, !tbaa !96
  %1265 = getelementptr inbounds %struct.ExpandState, ptr %80, i32 0, i32 4
  %1266 = load i8, ptr %1265, align 1, !tbaa !97, !range !64, !noundef !65
  %1267 = trunc i8 %1266 to i1
  %1268 = zext i1 %1267 to i32
  %1269 = load ptr, ptr %5, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.ExpandState, ptr %1269, i32 0, i32 4
  %1271 = load i8, ptr %1270, align 1, !tbaa !97, !range !64, !noundef !65
  %1272 = trunc i8 %1271 to i1
  %1273 = zext i1 %1272 to i32
  %1274 = or i32 %1273, %1268
  %1275 = icmp ne i32 %1274, 0
  %1276 = zext i1 %1275 to i8
  store i8 %1276, ptr %1270, align 1, !tbaa !97
  %1277 = load ptr, ptr %43, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"struct.AST::Named.382", ptr %1277, i32 0, i32 1
  %1279 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1278, ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  store i32 18, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  br label %3722

1280:                                             ; preds = %1225
  %1281 = landingpad { ptr, i32 }
          cleanup
  %1282 = extractvalue { ptr, i32 } %1281, 0
  store ptr %1282, ptr %12, align 8
  %1283 = extractvalue { ptr, i32 } %1281, 1
  store i32 %1283, ptr %13, align 4
  br label %1298

1284:                                             ; preds = %1229
  %1285 = landingpad { ptr, i32 }
          cleanup
  %1286 = extractvalue { ptr, i32 } %1285, 0
  store ptr %1286, ptr %12, align 8
  %1287 = extractvalue { ptr, i32 } %1285, 1
  store i32 %1287, ptr %13, align 4
  br label %1297

1288:                                             ; preds = %1247, %1244, %1233
  %1289 = landingpad { ptr, i32 }
          cleanup
  %1290 = extractvalue { ptr, i32 } %1289, 0
  store ptr %1290, ptr %12, align 8
  %1291 = extractvalue { ptr, i32 } %1289, 1
  store i32 %1291, ptr %13, align 4
  br label %1296

1292:                                             ; preds = %1245
  %1293 = landingpad { ptr, i32 }
          cleanup
  %1294 = extractvalue { ptr, i32 } %1293, 0
  store ptr %1294, ptr %12, align 8
  %1295 = extractvalue { ptr, i32 } %1293, 1
  store i32 %1295, ptr %13, align 4
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  br label %1296

1296:                                             ; preds = %1292, %1288
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #9
  br label %1297

1297:                                             ; preds = %1296, %1284
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  br label %1298

1298:                                             ; preds = %1297, %1280
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  br label %3729

1299:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 488, ptr %83) #9
  %1300 = load ptr, ptr %43, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.AST::Named.382", ptr %1300, i32 0, i32 4
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %83, ptr noundef nonnull align 8 dereferenceable(488) %1301) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #9
  store i8 1, ptr %84, align 1, !tbaa !68
  br label %1302

1302:                                             ; preds = %3682, %1299
  %1303 = load i8, ptr %84, align 1, !tbaa !68, !range !64, !noundef !65
  %1304 = trunc i8 %1303 to i1
  br i1 %1304, label %1306, label %1305

1305:                                             ; preds = %1302
  store i32 106, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #9
  br label %3683

1306:                                             ; preds = %1302
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #9
  store ptr %83, ptr %85, align 8, !tbaa !5
  br label %1307

1307:                                             ; preds = %3679, %1306
  %1308 = load i8, ptr %84, align 1, !tbaa !68, !range !64, !noundef !65
  %1309 = trunc i8 %1308 to i1
  br i1 %1309, label %1311, label %1310

1310:                                             ; preds = %1307
  store i32 109, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  br label %3681

1311:                                             ; preds = %1307
  %1312 = load ptr, ptr %85, align 8, !tbaa !5
  %1313 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %1312)
          to label %1314 unwind label %1315

1314:                                             ; preds = %1311
  switch i32 %1313, label %3678 [
    i32 0, label %1319
    i32 1, label %1320
    i32 5, label %1343
    i32 2, label %1366
    i32 8, label %1601
    i32 3, label %1686
    i32 4, label %2001
    i32 6, label %2061
    i32 7, label %2115
    i32 9, label %2167
    i32 10, label %2191
    i32 12, label %2312
    i32 13, label %2579
    i32 14, label %2948
    i32 15, label %3047
    i32 11, label %3537
    i32 17, label %3566
    i32 18, label %3593
    i32 16, label %3627
  ]

1315:                                             ; preds = %1311
  %1316 = landingpad { ptr, i32 }
          cleanup
  %1317 = extractvalue { ptr, i32 } %1316, 0
  store ptr %1317, ptr %12, align 8
  %1318 = extractvalue { ptr, i32 } %1316, 1
  store i32 %1318, ptr %13, align 4
  br label %3680

1319:                                             ; preds = %1314
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2053, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

1320:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #9
  store i8 1, ptr %86, align 1, !tbaa !68
  br label %1321

1321:                                             ; preds = %1341, %1320
  %1322 = load i8, ptr %86, align 1, !tbaa !68, !range !64, !noundef !65
  %1323 = trunc i8 %1322 to i1
  br i1 %1323, label %1325, label %1324

1324:                                             ; preds = %1321
  store i32 113, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #9
  br label %1342

1325:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %1326 = load ptr, ptr %85, align 8, !tbaa !5
  %1327 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %1326)
          to label %1328 unwind label %1334

1328:                                             ; preds = %1325
  store ptr %1327, ptr %87, align 8, !tbaa !5
  br label %1329

1329:                                             ; preds = %1339, %1328
  %1330 = load ptr, ptr %87, align 8, !tbaa !5
  %1331 = load i8, ptr %86, align 1, !tbaa !68, !range !64, !noundef !65
  %1332 = trunc i8 %1331 to i1
  br i1 %1332, label %1338, label %1333

1333:                                             ; preds = %1329
  store i32 116, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %1340

1334:                                             ; preds = %1325
  %1335 = landingpad { ptr, i32 }
          cleanup
  %1336 = extractvalue { ptr, i32 } %1335, 0
  store ptr %1336, ptr %12, align 8
  %1337 = extractvalue { ptr, i32 } %1335, 1
  store i32 %1337, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #9
  br label %3680

1338:                                             ; preds = %1329
  br label %1339

1339:                                             ; preds = %1338
  store i8 0, ptr %86, align 1, !tbaa !68
  br label %1329, !llvm.loop !98

1340:                                             ; preds = %1333
  br label %1341

1341:                                             ; preds = %1340
  store i8 0, ptr %86, align 1, !tbaa !68
  br label %1321, !llvm.loop !99

1342:                                             ; preds = %1324
  br label %3678

1343:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #9
  store i8 1, ptr %88, align 1, !tbaa !68
  br label %1344

1344:                                             ; preds = %1364, %1343
  %1345 = load i8, ptr %88, align 1, !tbaa !68, !range !64, !noundef !65
  %1346 = trunc i8 %1345 to i1
  br i1 %1346, label %1348, label %1347

1347:                                             ; preds = %1344
  store i32 119, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #9
  br label %1365

1348:                                             ; preds = %1344
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %1349 = load ptr, ptr %85, align 8, !tbaa !5
  %1350 = invoke noundef nonnull align 8 dereferenceable(52) ptr @_ZN3AST4Item12as_GlobalAsmEv(ptr noundef nonnull align 8 dereferenceable(488) %1349)
          to label %1351 unwind label %1357

1351:                                             ; preds = %1348
  store ptr %1350, ptr %89, align 8, !tbaa !5
  br label %1352

1352:                                             ; preds = %1362, %1351
  %1353 = load ptr, ptr %89, align 8, !tbaa !5
  %1354 = load i8, ptr %88, align 1, !tbaa !68, !range !64, !noundef !65
  %1355 = trunc i8 %1354 to i1
  br i1 %1355, label %1361, label %1356

1356:                                             ; preds = %1352
  store i32 122, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1363

1357:                                             ; preds = %1348
  %1358 = landingpad { ptr, i32 }
          cleanup
  %1359 = extractvalue { ptr, i32 } %1358, 0
  store ptr %1359, ptr %12, align 8
  %1360 = extractvalue { ptr, i32 } %1358, 1
  store i32 %1360, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #9
  br label %3680

1361:                                             ; preds = %1352
  br label %1362

1362:                                             ; preds = %1361
  store i8 0, ptr %88, align 1, !tbaa !68
  br label %1352, !llvm.loop !100

1363:                                             ; preds = %1356
  br label %1364

1364:                                             ; preds = %1363
  store i8 0, ptr %88, align 1, !tbaa !68
  br label %1344, !llvm.loop !101

1365:                                             ; preds = %1347
  br label %3678

1366:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #9
  store i8 1, ptr %90, align 1, !tbaa !68
  br label %1367

1367:                                             ; preds = %1599, %1366
  %1368 = load i8, ptr %90, align 1, !tbaa !68, !range !64, !noundef !65
  %1369 = trunc i8 %1368 to i1
  br i1 %1369, label %1371, label %1370

1370:                                             ; preds = %1367
  store i32 125, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #9
  br label %1600

1371:                                             ; preds = %1367
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %1372 = load ptr, ptr %85, align 8, !tbaa !5
  %1373 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %1372)
          to label %1374 unwind label %1380

1374:                                             ; preds = %1371
  store ptr %1373, ptr %91, align 8, !tbaa !5
  br label %1375

1375:                                             ; preds = %1594, %1374
  %1376 = load ptr, ptr %91, align 8, !tbaa !5
  %1377 = load i8, ptr %90, align 1, !tbaa !68, !range !64, !noundef !65
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1384, label %1379

1379:                                             ; preds = %1375
  store i32 128, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1598

1380:                                             ; preds = %1394, %1371
  %1381 = landingpad { ptr, i32 }
          cleanup
  %1382 = extractvalue { ptr, i32 } %1381, 0
  store ptr %1382, ptr %12, align 8
  %1383 = extractvalue { ptr, i32 } %1381, 1
  store i32 %1383, ptr %13, align 4
  br label %1597

1384:                                             ; preds = %1375
  %1385 = call noundef i64 @_ZNKSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  %1386 = icmp ugt i64 %1385, 200
  br i1 %1386, label %1387, label %1410

1387:                                             ; preds = %1384
  br label %1388

1388:                                             ; preds = %1387
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %1389 = load ptr, ptr %43, align 8, !tbaa !5
  %1390 = getelementptr inbounds %"struct.AST::Named.382", ptr %1389, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %1390)
          to label %1391 unwind label %1395

1391:                                             ; preds = %1388
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 1 dereferenceable(1) %94) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %92, i32 noundef 0, ptr noundef %93)
          to label %1392 unwind label %1399

1392:                                             ; preds = %1391
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  %1393 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1393, ptr noundef @.str.23)
          to label %1394 unwind label %1404

1394:                                             ; preds = %1392
  invoke void @__cxa_throw(ptr %1393, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3742 unwind label %1380

1395:                                             ; preds = %1388
  %1396 = landingpad { ptr, i32 }
          cleanup
  %1397 = extractvalue { ptr, i32 } %1396, 0
  store ptr %1397, ptr %12, align 8
  %1398 = extractvalue { ptr, i32 } %1396, 1
  store i32 %1398, ptr %13, align 4
  br label %1403

1399:                                             ; preds = %1391
  %1400 = landingpad { ptr, i32 }
          cleanup
  %1401 = extractvalue { ptr, i32 } %1400, 0
  store ptr %1401, ptr %12, align 8
  %1402 = extractvalue { ptr, i32 } %1400, 1
  store i32 %1402, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  br label %1403

1403:                                             ; preds = %1399, %1395
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %1597

1404:                                             ; preds = %1392
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %12, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %13, align 4
  call void @__cxa_free_exception(ptr %1393) #9
  br label %1597

1408:                                             ; No predecessors!
  br label %1409

1409:                                             ; preds = %1408
  br label %1410

1410:                                             ; preds = %1409, %1384
  call void @llvm.lifetime.start.p0(i64 400, ptr %95) #9
  %1411 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZN3AST15MacroInvocationC2EOS0_(ptr noundef nonnull align 8 dereferenceable(393) %95, ptr noundef nonnull align 8 dereferenceable(393) %1411)
          to label %1412 unwind label %1422

1412:                                             ; preds = %1410
  %1413 = invoke noundef zeroext i1 @_ZNK3AST15MacroInvocation11is_expandedEv(ptr noundef nonnull align 8 dereferenceable(393) %95)
          to label %1414 unwind label %1426

1414:                                             ; preds = %1412
  br i1 %1413, label %1589, label %1415

1415:                                             ; preds = %1414
  %1416 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST15MacroInvocation4spanEv(ptr noundef nonnull align 8 dereferenceable(393) %95)
          to label %1417 unwind label %1426

1417:                                             ; preds = %1415
  %1418 = invoke noundef zeroext i1 @_ZNK4SpancvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1416)
          to label %1419 unwind label %1426

1419:                                             ; preds = %1417
  br i1 %1418, label %1420, label %1421

1420:                                             ; preds = %1419
  br label %1431

1421:                                             ; preds = %1419
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.21, i32 noundef 2070, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

1422:                                             ; preds = %1410
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %12, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %13, align 4
  br label %1596

1426:                                             ; preds = %1591, %1589, %1417, %1415, %1412
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %12, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %13, align 4
  br label %1595

1430:                                             ; No predecessors!
  br label %1431

1431:                                             ; preds = %1430, %1420
  call void @llvm.lifetime.start.p0(i64 40, ptr %96) #9
  %1432 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1433 unwind label %1459

1433:                                             ; preds = %1431
  %1434 = zext i1 %1432 to i64
  %1435 = select i1 %1432, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %1436 = getelementptr inbounds %class.anon.387, ptr %98, i32 0, i32 0
  store ptr %95, ptr %1436, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %96, ptr noundef %1435, ptr noundef %97)
          to label %1437 unwind label %1463

1437:                                             ; preds = %1433
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %1438 = load ptr, ptr %5, align 8, !tbaa !5
  %1439 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.273") align 8 %99, ptr noundef nonnull align 8 dereferenceable(30) %1438, ptr noundef nonnull align 8 dereferenceable(480) %1439, ptr noundef nonnull align 8 dereferenceable(393) %95)
          to label %1440 unwind label %1467

1440:                                             ; preds = %1437
  %1441 = call noundef zeroext i1 @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  br i1 %1441, label %1442, label %1568

1442:                                             ; preds = %1440
  %1443 = load ptr, ptr %5, align 8, !tbaa !5
  %1444 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %1443, ptr noundef nonnull align 8 dereferenceable(24) %76, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(480) %1444, ptr noundef nonnull align 8 dereferenceable(36) %77, ptr noundef nonnull align 8 dereferenceable(488) %83)
          to label %1445 unwind label %1471

1445:                                             ; preds = %1442
  br label %1446

1446:                                             ; preds = %1445
  %1447 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1448 unwind label %1471

1448:                                             ; preds = %1446
  br i1 %1447, label %1449, label %1475

1449:                                             ; preds = %1448
  %1450 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1450, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %1452 unwind label %1471

1452:                                             ; preds = %1449
  %1453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1451, ptr noundef @.str.44)
          to label %1454 unwind label %1471

1454:                                             ; preds = %1452
  %1455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1453, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1456 unwind label %1471

1456:                                             ; preds = %1454
  %1457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1455, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1458 unwind label %1471

1458:                                             ; preds = %1456
  br label %1475

1459:                                             ; preds = %1431
  %1460 = landingpad { ptr, i32 }
          cleanup
  %1461 = extractvalue { ptr, i32 } %1460, 0
  store ptr %1461, ptr %12, align 8
  %1462 = extractvalue { ptr, i32 } %1460, 1
  store i32 %1462, ptr %13, align 4
  br label %1588

1463:                                             ; preds = %1433
  %1464 = landingpad { ptr, i32 }
          cleanup
  %1465 = extractvalue { ptr, i32 } %1464, 0
  store ptr %1465, ptr %12, align 8
  %1466 = extractvalue { ptr, i32 } %1464, 1
  store i32 %1466, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1588

1467:                                             ; preds = %1437
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %12, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %13, align 4
  br label %1587

1471:                                             ; preds = %1579, %1577, %1575, %1572, %1569, %1456, %1454, %1452, %1449, %1446, %1442
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %12, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %13, align 4
  br label %1586

1475:                                             ; preds = %1458, %1448
  br label %1476

1476:                                             ; preds = %1475
  br label %1477

1477:                                             ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 24, ptr %100) #9
  %1478 = load ptr, ptr %7, align 8, !tbaa !5
  %1479 = getelementptr inbounds %"class.AST::Module", ptr %1478, i32 0, i32 1
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEC2EOS9_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 8 dereferenceable(24) %1479) #9
  %1480 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  %1481 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z19Parse_ModRoot_ItemsR11TokenStreamRN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(176) %1480, ptr noundef nonnull align 8 dereferenceable(480) %1481)
          to label %1482 unwind label %1549

1482:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %1483 = load ptr, ptr %7, align 8, !tbaa !5
  %1484 = getelementptr inbounds %"class.AST::Module", ptr %1483, i32 0, i32 1
  %1485 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1484) #9
  store i64 %1485, ptr %101, align 8, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #9
  %1486 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  %1487 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %105, i32 0, i32 0
  store ptr %1486, ptr %1487, align 8
  %1488 = load i32, ptr %41, align 4, !tbaa !9
  %1489 = zext i32 %1488 to i64
  %1490 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %105, i64 noundef %1489) #9
  %1491 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %104, i32 0, i32 0
  store ptr %1490, ptr %1491, align 8
  %1492 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %104, i64 noundef 1) #9
  %1493 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %103, i32 0, i32 0
  store ptr %1492, ptr %1493, 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) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #9
  %1494 = load ptr, ptr %7, align 8, !tbaa !5
  %1495 = getelementptr inbounds %"class.AST::Module", ptr %1494, i32 0, i32 1
  %1496 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1495) #9
  %1497 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %107, i32 0, i32 0
  store ptr %1496, ptr %1497, align 8
  %1498 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %107, i32 0, i32 0
  %1499 = load ptr, ptr %1498, align 8
  %1500 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %1499)
          to label %1501 unwind label %1553

1501:                                             ; preds = %1482
  %1502 = getelementptr inbounds %"class.std::move_iterator.390", ptr %106, i32 0, i32 0
  %1503 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %1502, i32 0, i32 0
  store ptr %1500, ptr %1503, align 8
  %1504 = load ptr, ptr %7, align 8, !tbaa !5
  %1505 = getelementptr inbounds %"class.AST::Module", ptr %1504, i32 0, i32 1
  %1506 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1505) #9
  %1507 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %109, i32 0, i32 0
  store ptr %1506, ptr %1507, align 8
  %1508 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %109, i32 0, i32 0
  %1509 = load ptr, ptr %1508, align 8
  %1510 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %1509)
          to label %1511 unwind label %1553

1511:                                             ; preds = %1501
  %1512 = getelementptr inbounds %"class.std::move_iterator.390", ptr %108, i32 0, i32 0
  %1513 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %1512, i32 0, i32 0
  store ptr %1510, ptr %1513, align 8
  %1514 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.389", ptr %102, i32 0, i32 0
  %1515 = load ptr, ptr %1514, align 8
  %1516 = getelementptr inbounds %"class.std::move_iterator.390", ptr %106, i32 0, i32 0
  %1517 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %1516, i32 0, i32 0
  %1518 = load ptr, ptr %1517, align 8
  %1519 = getelementptr inbounds %"class.std::move_iterator.390", ptr %108, i32 0, i32 0
  %1520 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %1519, i32 0, i32 0
  %1521 = load ptr, ptr %1520, align 8
  %1522 = 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) %100, ptr %1515, ptr %1518, ptr %1521)
          to label %1523 unwind label %1553

1523:                                             ; preds = %1511
  %1524 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.388", ptr %110, i32 0, i32 0
  store ptr %1522, ptr %1524, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  %1525 = load ptr, ptr %7, align 8, !tbaa !5
  %1526 = getelementptr inbounds %"class.AST::Module", ptr %1525, i32 0, i32 1
  %1527 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(24) %1526, ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %1528 = load i32, ptr %41, align 4, !tbaa !9
  %1529 = add i32 %1528, 1
  %1530 = zext i32 %1529 to i64
  %1531 = load i64, ptr %101, align 8, !tbaa !102
  %1532 = add i64 %1530, %1531
  store i64 %1532, ptr %111, align 8, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %1533 = load i64, ptr %111, align 8, !tbaa !102
  %1534 = load ptr, ptr %7, align 8, !tbaa !5
  %1535 = getelementptr inbounds %"class.AST::Module", ptr %1534, i32 0, i32 1
  %1536 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1535) #9
  %1537 = icmp eq i64 %1533, %1536
  br i1 %1537, label %1538, label %1539

1538:                                             ; preds = %1523
  br label %1545

1539:                                             ; preds = %1523
  %1540 = load ptr, ptr %7, align 8, !tbaa !5
  %1541 = getelementptr inbounds %"class.AST::Module", ptr %1540, i32 0, i32 1
  %1542 = load i64, ptr %111, align 8, !tbaa !102
  %1543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1541, i64 noundef %1542) #9
  %1544 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1543) #9
  br label %1545

1545:                                             ; preds = %1539, %1538
  %1546 = phi ptr [ null, %1538 ], [ %1544, %1539 ]
  store ptr %1546, ptr %112, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %1547 unwind label %1557

1547:                                             ; preds = %1545
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  invoke void @_ZN3AST15MacroInvocation12set_expandedEv(ptr noundef nonnull align 8 dereferenceable(393) %95)
          to label %1548 unwind label %1561

1548:                                             ; preds = %1547
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #9
  br label %1585

1549:                                             ; preds = %1477
  %1550 = landingpad { ptr, i32 }
          cleanup
  %1551 = extractvalue { ptr, i32 } %1550, 0
  store ptr %1551, ptr %12, align 8
  %1552 = extractvalue { ptr, i32 } %1550, 1
  store i32 %1552, ptr %13, align 4
  br label %1567

1553:                                             ; preds = %1511, %1501, %1482
  %1554 = landingpad { ptr, i32 }
          cleanup
  %1555 = extractvalue { ptr, i32 } %1554, 0
  store ptr %1555, ptr %12, align 8
  %1556 = extractvalue { ptr, i32 } %1554, 1
  store i32 %1556, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  br label %1566

1557:                                             ; preds = %1545
  %1558 = landingpad { ptr, i32 }
          cleanup
  %1559 = extractvalue { ptr, i32 } %1558, 0
  store ptr %1559, ptr %12, align 8
  %1560 = extractvalue { ptr, i32 } %1558, 1
  store i32 %1560, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %1565

1561:                                             ; preds = %1547
  %1562 = landingpad { ptr, i32 }
          cleanup
  %1563 = extractvalue { ptr, i32 } %1562, 0
  store ptr %1563, ptr %12, align 8
  %1564 = extractvalue { ptr, i32 } %1562, 1
  store i32 %1564, ptr %13, align 4
  br label %1565

1565:                                             ; preds = %1561, %1557
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1566

1566:                                             ; preds = %1565, %1553
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %1567

1567:                                             ; preds = %1566, %1549
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #9
  br label %1586

1568:                                             ; preds = %1440
  br label %1569

1569:                                             ; preds = %1568
  %1570 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1571 unwind label %1471

1571:                                             ; preds = %1569
  br i1 %1570, label %1572, label %1582

1572:                                             ; preds = %1571
  %1573 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1573, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %1575 unwind label %1471

1575:                                             ; preds = %1572
  %1576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1574, ptr noundef @.str.45)
          to label %1577 unwind label %1471

1577:                                             ; preds = %1575
  %1578 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1576, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1579 unwind label %1471

1579:                                             ; preds = %1577
  %1580 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1578, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1581 unwind label %1471

1581:                                             ; preds = %1579
  br label %1582

1582:                                             ; preds = %1581, %1571
  br label %1583

1583:                                             ; preds = %1582
  br label %1584

1584:                                             ; preds = %1583
  br label %1585

1585:                                             ; preds = %1584, %1548
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %96) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %96) #9
  br label %1589

1586:                                             ; preds = %1567, %1471
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  br label %1587

1587:                                             ; preds = %1586, %1467
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %96) #9
  br label %1588

1588:                                             ; preds = %1587, %1463, %1459
  call void @llvm.lifetime.end.p0(i64 40, ptr %96) #9
  br label %1595

1589:                                             ; preds = %1585, %1414
  %1590 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %83)
          to label %1591 unwind label %1426

1591:                                             ; preds = %1589
  %1592 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST15MacroInvocationaSEOS0_(ptr noundef nonnull align 8 dereferenceable(393) %1590, ptr noundef nonnull align 8 dereferenceable(393) %95)
          to label %1593 unwind label %1426

1593:                                             ; preds = %1591
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %95) #9
  call void @llvm.lifetime.end.p0(i64 400, ptr %95) #9
  br label %1594

1594:                                             ; preds = %1593
  store i8 0, ptr %90, align 1, !tbaa !68
  br label %1375, !llvm.loop !103

1595:                                             ; preds = %1588, %1426
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %95) #9
  br label %1596

1596:                                             ; preds = %1595, %1422
  call void @llvm.lifetime.end.p0(i64 400, ptr %95) #9
  br label %1597

1597:                                             ; preds = %1596, %1404, %1403, %1380
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #9
  br label %3680

1598:                                             ; preds = %1379
  br label %1599

1599:                                             ; preds = %1598
  store i8 0, ptr %90, align 1, !tbaa !68
  br label %1367, !llvm.loop !104

1600:                                             ; preds = %1370
  br label %3678

1601:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #9
  store i8 1, ptr %113, align 1, !tbaa !68
  br label %1602

1602:                                             ; preds = %1684, %1601
  %1603 = load i8, ptr %113, align 1, !tbaa !68, !range !64, !noundef !65
  %1604 = trunc i8 %1603 to i1
  br i1 %1604, label %1606, label %1605

1605:                                             ; preds = %1602
  store i32 137, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %1685

1606:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1607 = load ptr, ptr %85, align 8, !tbaa !5
  %1608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST4Item8as_MacroEv(ptr noundef nonnull align 8 dereferenceable(488) %1607)
          to label %1609 unwind label %1615

1609:                                             ; preds = %1606
  store ptr %1608, ptr %114, align 8, !tbaa !5
  br label %1610

1610:                                             ; preds = %1663, %1609
  %1611 = load ptr, ptr %114, align 8, !tbaa !5
  %1612 = load i8, ptr %113, align 1, !tbaa !68, !range !64, !noundef !65
  %1613 = trunc i8 %1612 to i1
  br i1 %1613, label %1619, label %1614

1614:                                             ; preds = %1610
  store i32 140, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  br label %1683

1615:                                             ; preds = %1653, %1648, %1632, %1620, %1606
  %1616 = landingpad { ptr, i32 }
          cleanup
  %1617 = extractvalue { ptr, i32 } %1616, 0
  store ptr %1617, ptr %12, align 8
  %1618 = extractvalue { ptr, i32 } %1616, 1
  store i32 %1618, ptr %13, align 4
  br label %1682

1619:                                             ; preds = %1610
  br label %1620

1620:                                             ; preds = %1619
  %1621 = load ptr, ptr %114, align 8, !tbaa !5
  %1622 = invoke noundef zeroext i1 @_ZNK13MacroRulesPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1621)
          to label %1623 unwind label %1615

1623:                                             ; preds = %1620
  br i1 %1622, label %1646, label %1624

1624:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #9
  %1625 = load ptr, ptr %43, align 8, !tbaa !5
  %1626 = getelementptr inbounds %"struct.AST::Named.382", ptr %1625, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %1626)
          to label %1627 unwind label %1633

1627:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #9
  %1628 = getelementptr inbounds %class.anon.391, ptr %117, i32 0, i32 0
  %1629 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1629, ptr %1628, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(8) %117) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %116)
          to label %1630 unwind label %1637

1630:                                             ; preds = %1627
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  %1631 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1631, ptr noundef @.str.11)
          to label %1632 unwind label %1642

1632:                                             ; preds = %1630
  invoke void @__cxa_throw(ptr %1631, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3742 unwind label %1615

1633:                                             ; preds = %1624
  %1634 = landingpad { ptr, i32 }
          cleanup
  %1635 = extractvalue { ptr, i32 } %1634, 0
  store ptr %1635, ptr %12, align 8
  %1636 = extractvalue { ptr, i32 } %1634, 1
  store i32 %1636, ptr %13, align 4
  br label %1641

1637:                                             ; preds = %1627
  %1638 = landingpad { ptr, i32 }
          cleanup
  %1639 = extractvalue { ptr, i32 } %1638, 0
  store ptr %1639, ptr %12, align 8
  %1640 = extractvalue { ptr, i32 } %1638, 1
  store i32 %1640, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #9
  br label %1641

1641:                                             ; preds = %1637, %1633
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  br label %1682

1642:                                             ; preds = %1630
  %1643 = landingpad { ptr, i32 }
          cleanup
  %1644 = extractvalue { ptr, i32 } %1643, 0
  store ptr %1644, ptr %12, align 8
  %1645 = extractvalue { ptr, i32 } %1643, 1
  store i32 %1645, ptr %13, align 4
  call void @__cxa_free_exception(ptr %1631) #9
  br label %1682

1646:                                             ; preds = %1623
  br label %1647

1647:                                             ; preds = %1646
  br label %1648

1648:                                             ; preds = %1647
  %1649 = load ptr, ptr %7, align 8, !tbaa !5
  %1650 = load ptr, ptr %43, align 8, !tbaa !5
  %1651 = getelementptr inbounds %"struct.AST::Named.382", ptr %1650, i32 0, i32 2
  %1652 = invoke noundef zeroext i1 @_ZNK3AST10Visibility9is_globalEv(ptr noundef nonnull align 8 dereferenceable(36) %1651)
          to label %1653 unwind label %1615

1653:                                             ; preds = %1648
  %1654 = load ptr, ptr %43, align 8, !tbaa !5
  %1655 = getelementptr inbounds %"struct.AST::Named.382", ptr %1654, i32 0, i32 3
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %1655)
          to label %1656 unwind label %1615

1656:                                             ; preds = %1653
  %1657 = load ptr, ptr %114, align 8, !tbaa !5
  invoke void @_ZN13MacroRulesPtrC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %1657)
          to label %1658 unwind label %1664

1658:                                             ; preds = %1656
  invoke void @_ZN3AST6Module9add_macroEb8RcString13MacroRulesPtr(ptr noundef nonnull align 8 dereferenceable(480) %1649, i1 noundef zeroext %1652, ptr noundef %118, ptr noundef %119)
          to label %1659 unwind label %1668

1659:                                             ; preds = %1658
  call void @_ZN13MacroRulesPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #9
  call void @llvm.lifetime.start.p0(i64 488, ptr %120) #9
  invoke void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind writable sret(%"class.AST::Item") align 8 %120)
          to label %1660 unwind label %1673

1660:                                             ; preds = %1659
  %1661 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %83, ptr noundef nonnull align 8 dereferenceable(488) %120)
          to label %1662 unwind label %1677

1662:                                             ; preds = %1660
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %120) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %120) #9
  br label %1663

1663:                                             ; preds = %1662
  store i8 0, ptr %113, align 1, !tbaa !68
  br label %1610, !llvm.loop !105

1664:                                             ; preds = %1656
  %1665 = landingpad { ptr, i32 }
          cleanup
  %1666 = extractvalue { ptr, i32 } %1665, 0
  store ptr %1666, ptr %12, align 8
  %1667 = extractvalue { ptr, i32 } %1665, 1
  store i32 %1667, ptr %13, align 4
  br label %1672

1668:                                             ; preds = %1658
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %12, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %13, align 4
  call void @_ZN13MacroRulesPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #9
  br label %1672

1672:                                             ; preds = %1668, %1664
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #9
  br label %1682

1673:                                             ; preds = %1659
  %1674 = landingpad { ptr, i32 }
          cleanup
  %1675 = extractvalue { ptr, i32 } %1674, 0
  store ptr %1675, ptr %12, align 8
  %1676 = extractvalue { ptr, i32 } %1674, 1
  store i32 %1676, ptr %13, align 4
  br label %1681

1677:                                             ; preds = %1660
  %1678 = landingpad { ptr, i32 }
          cleanup
  %1679 = extractvalue { ptr, i32 } %1678, 0
  store ptr %1679, ptr %12, align 8
  %1680 = extractvalue { ptr, i32 } %1678, 1
  store i32 %1680, ptr %13, align 4
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %120) #9
  br label %1681

1681:                                             ; preds = %1677, %1673
  call void @llvm.lifetime.end.p0(i64 488, ptr %120) #9
  br label %1682

1682:                                             ; preds = %1681, %1672, %1642, %1641, %1615
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %3680

1683:                                             ; preds = %1614
  br label %1684

1684:                                             ; preds = %1683
  store i8 0, ptr %113, align 1, !tbaa !68
  br label %1602, !llvm.loop !106

1685:                                             ; preds = %1605
  br label %3678

1686:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #9
  store i8 1, ptr %122, align 1, !tbaa !68
  br label %1687

1687:                                             ; preds = %1999, %1686
  %1688 = load i8, ptr %122, align 1, !tbaa !68, !range !64, !noundef !65
  %1689 = trunc i8 %1688 to i1
  br i1 %1689, label %1691, label %1690

1690:                                             ; preds = %1687
  store i32 145, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  br label %2000

1691:                                             ; preds = %1687
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1692 = load ptr, ptr %85, align 8, !tbaa !5
  %1693 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %1692)
          to label %1694 unwind label %1700

1694:                                             ; preds = %1691
  store ptr %1693, ptr %123, align 8, !tbaa !5
  br label %1695

1695:                                             ; preds = %1996, %1694
  %1696 = load ptr, ptr %123, align 8, !tbaa !5
  %1697 = load i8, ptr %122, align 1, !tbaa !68, !range !64, !noundef !65
  %1698 = trunc i8 %1697 to i1
  br i1 %1698, label %1704, label %1699

1699:                                             ; preds = %1695
  store i32 148, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %1998

1700:                                             ; preds = %1691
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %12, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %13, align 4
  br label %1997

1704:                                             ; preds = %1695
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #9
  %1705 = load ptr, ptr %123, align 8, !tbaa !5
  %1706 = getelementptr inbounds %"struct.AST::UseItem", ptr %1705, i32 0, i32 1
  store ptr %1706, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #9
  %1707 = load ptr, ptr %124, align 8, !tbaa !5
  %1708 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1707) #9
  %1709 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.392", ptr %125, i32 0, i32 0
  store ptr %1708, ptr %1709, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #9
  %1710 = load ptr, ptr %124, align 8, !tbaa !5
  %1711 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1710) #9
  %1712 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.392", ptr %126, i32 0, i32 0
  store ptr %1711, ptr %1712, align 8
  br label %1713

1713:                                             ; preds = %1992, %1704
  %1714 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull align 8 dereferenceable(8) %126) #9
  br i1 %1714, label %1716, label %1715

1715:                                             ; preds = %1713
  store i32 151, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  br label %1995

1716:                                             ; preds = %1713
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #9
  %1717 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  store ptr %1717, ptr %127, align 8, !tbaa !5
  %1718 = load ptr, ptr %127, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1718, i32 0, i32 2
  %1720 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1719, ptr noundef @.str.19)
          to label %1721 unwind label %1747

1721:                                             ; preds = %1716
  br i1 %1720, label %1722, label %1991

1722:                                             ; preds = %1721
  %1723 = load ptr, ptr %127, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1723, i32 0, i32 1
  %1725 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %1724)
          to label %1726 unwind label %1747

1726:                                             ; preds = %1722
  %1727 = call noundef i64 @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1725) #9
  %1728 = icmp uge i64 %1727, 1
  br i1 %1728, label %1729, label %1991

1729:                                             ; preds = %1726
  br label %1730

1730:                                             ; preds = %1729
  %1731 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1732 unwind label %1747

1732:                                             ; preds = %1730
  br i1 %1731, label %1733, label %1751

1733:                                             ; preds = %1732
  %1734 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1734, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %1736 unwind label %1747

1736:                                             ; preds = %1733
  %1737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1735, ptr noundef @.str.46)
          to label %1738 unwind label %1747

1738:                                             ; preds = %1736
  %1739 = load ptr, ptr %127, align 8, !tbaa !5
  %1740 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1739, i32 0, i32 1
  %1741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %1737, ptr noundef nonnull align 8 dereferenceable(240) %1740)
          to label %1742 unwind label %1747

1742:                                             ; preds = %1738
  %1743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1741, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1744 unwind label %1747

1744:                                             ; preds = %1742
  %1745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1743, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1746 unwind label %1747

1746:                                             ; preds = %1744
  br label %1751

1747:                                             ; preds = %1744, %1742, %1738, %1736, %1733, %1730, %1722, %1716
  %1748 = landingpad { ptr, i32 }
          cleanup
  %1749 = extractvalue { ptr, i32 } %1748, 0
  store ptr %1749, ptr %12, align 8
  %1750 = extractvalue { ptr, i32 } %1748, 1
  store i32 %1750, ptr %13, align 4
  br label %1994

1751:                                             ; preds = %1746, %1732
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #9
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1754 unwind label %1773

1754:                                             ; preds = %1753
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #9
  %1755 = load ptr, ptr %127, align 8, !tbaa !5
  %1756 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1755, i32 0, i32 0
  %1757 = load ptr, ptr %5, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.ExpandState, ptr %1757, i32 0, i32 0
  %1759 = load ptr, ptr %1758, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 240, ptr %130) #9
  %1760 = load ptr, ptr %7, align 8, !tbaa !5
  %1761 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %1760)
          to label %1762 unwind label %1777

1762:                                             ; preds = %1754
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %130, ptr noundef nonnull align 8 dereferenceable(32) %1761)
          to label %1763 unwind label %1777

1763:                                             ; preds = %1762
  %1764 = load ptr, ptr %127, align 8, !tbaa !5
  %1765 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1764, i32 0, i32 1
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %131, ptr noundef nonnull align 8 dereferenceable(240) %1765)
          to label %1766 unwind label %1781

1766:                                             ; preds = %1763
  invoke void @_Z20Resolve_Lookup_MacroRK4SpanRKN3AST5CrateERKNS2_4PathES6_PNS2_12AbsolutePathE(ptr dead_on_unwind writable sret(%class.ResolveItemRef_Macro) align 8 %129, ptr noundef nonnull align 8 dereferenceable(8) %1756, ptr noundef nonnull align 8 dereferenceable(1112) %1759, ptr noundef nonnull align 8 dereferenceable(240) %130, ptr noundef %131, ptr noundef %128)
          to label %1767 unwind label %1785

1767:                                             ; preds = %1766
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %131) #9
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %130) #9
  call void @llvm.lifetime.end.p0(i64 240, ptr %130) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %132) #9
  invoke void @_ZN8MacroRefC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132)
          to label %1768 unwind label %1791

1768:                                             ; preds = %1767
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #9
  store i8 1, ptr %133, align 1, !tbaa !68
  br label %1769

1769:                                             ; preds = %1935, %1768
  %1770 = load i8, ptr %133, align 1, !tbaa !68, !range !64, !noundef !65
  %1771 = trunc i8 %1770 to i1
  br i1 %1771, label %1795, label %1772

1772:                                             ; preds = %1769
  store i32 155, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #9
  br label %1936

1773:                                             ; preds = %1753
  %1774 = landingpad { ptr, i32 }
          cleanup
  %1775 = extractvalue { ptr, i32 } %1774, 0
  store ptr %1775, ptr %12, align 8
  %1776 = extractvalue { ptr, i32 } %1774, 1
  store i32 %1776, ptr %13, align 4
  br label %1990

1777:                                             ; preds = %1762, %1754
  %1778 = landingpad { ptr, i32 }
          cleanup
  %1779 = extractvalue { ptr, i32 } %1778, 0
  store ptr %1779, ptr %12, align 8
  %1780 = extractvalue { ptr, i32 } %1778, 1
  store i32 %1780, ptr %13, align 4
  br label %1790

1781:                                             ; preds = %1763
  %1782 = landingpad { ptr, i32 }
          cleanup
  %1783 = extractvalue { ptr, i32 } %1782, 0
  store ptr %1783, ptr %12, align 8
  %1784 = extractvalue { ptr, i32 } %1782, 1
  store i32 %1784, ptr %13, align 4
  br label %1789

1785:                                             ; preds = %1766
  %1786 = landingpad { ptr, i32 }
          cleanup
  %1787 = extractvalue { ptr, i32 } %1786, 0
  store ptr %1787, ptr %12, align 8
  %1788 = extractvalue { ptr, i32 } %1786, 1
  store i32 %1788, ptr %13, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %131) #9
  br label %1789

1789:                                             ; preds = %1785, %1781
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %130) #9
  br label %1790

1790:                                             ; preds = %1789, %1777
  call void @llvm.lifetime.end.p0(i64 240, ptr %130) #9
  br label %1989

1791:                                             ; preds = %1767
  %1792 = landingpad { ptr, i32 }
          cleanup
  %1793 = extractvalue { ptr, i32 } %1792, 0
  store ptr %1793, ptr %12, align 8
  %1794 = extractvalue { ptr, i32 } %1792, 1
  store i32 %1794, ptr %13, align 4
  br label %1988

1795:                                             ; preds = %1769
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  store ptr %129, ptr %134, align 8, !tbaa !5
  br label %1796

1796:                                             ; preds = %1932, %1795
  %1797 = load i8, ptr %133, align 1, !tbaa !68, !range !64, !noundef !65
  %1798 = trunc i8 %1797 to i1
  br i1 %1798, label %1800, label %1799

1799:                                             ; preds = %1796
  store i32 158, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  br label %1934

1800:                                             ; preds = %1796
  %1801 = load ptr, ptr %134, align 8, !tbaa !5
  %1802 = invoke noundef i32 @_ZNK20ResolveItemRef_Macro3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %1801)
          to label %1803 unwind label %1804

1803:                                             ; preds = %1800
  switch i32 %1802, label %1931 [
    i32 0, label %1808
    i32 1, label %1809
    i32 2, label %1832
    i32 3, label %1855
    i32 4, label %1893
  ]

1804:                                             ; preds = %1800
  %1805 = landingpad { ptr, i32 }
          cleanup
  %1806 = extractvalue { ptr, i32 } %1805, 0
  store ptr %1806, ptr %12, align 8
  %1807 = extractvalue { ptr, i32 } %1805, 1
  store i32 %1807, ptr %13, align 4
  br label %1933

1808:                                             ; preds = %1803
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2119, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

1809:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 1, ptr %135) #9
  store i8 1, ptr %135, align 1, !tbaa !68
  br label %1810

1810:                                             ; preds = %1830, %1809
  %1811 = load i8, ptr %135, align 1, !tbaa !68, !range !64, !noundef !65
  %1812 = trunc i8 %1811 to i1
  br i1 %1812, label %1814, label %1813

1813:                                             ; preds = %1810
  store i32 162, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #9
  br label %1831

1814:                                             ; preds = %1810
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #9
  %1815 = load ptr, ptr %134, align 8, !tbaa !5
  %1816 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN20ResolveItemRef_Macro7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(16) %1815)
          to label %1817 unwind label %1823

1817:                                             ; preds = %1814
  store ptr %1816, ptr %136, align 8, !tbaa !5
  br label %1818

1818:                                             ; preds = %1828, %1817
  %1819 = load ptr, ptr %136, align 8, !tbaa !5
  %1820 = load i8, ptr %135, align 1, !tbaa !68, !range !64, !noundef !65
  %1821 = trunc i8 %1820 to i1
  br i1 %1821, label %1827, label %1822

1822:                                             ; preds = %1818
  store i32 165, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  br label %1829

1823:                                             ; preds = %1814
  %1824 = landingpad { ptr, i32 }
          cleanup
  %1825 = extractvalue { ptr, i32 } %1824, 0
  store ptr %1825, ptr %12, align 8
  %1826 = extractvalue { ptr, i32 } %1824, 1
  store i32 %1826, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %135) #9
  br label %1933

1827:                                             ; preds = %1818
  br label %1828

1828:                                             ; preds = %1827
  store i8 0, ptr %135, align 1, !tbaa !68
  br label %1818, !llvm.loop !107

1829:                                             ; preds = %1822
  br label %1830

1830:                                             ; preds = %1829
  store i8 0, ptr %135, align 1, !tbaa !68
  br label %1810, !llvm.loop !108

1831:                                             ; preds = %1813
  br label %1931

1832:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #9
  store i8 1, ptr %137, align 1, !tbaa !68
  br label %1833

1833:                                             ; preds = %1853, %1832
  %1834 = load i8, ptr %137, align 1, !tbaa !68, !range !64, !noundef !65
  %1835 = trunc i8 %1834 to i1
  br i1 %1835, label %1837, label %1836

1836:                                             ; preds = %1833
  store i32 168, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #9
  br label %1854

1837:                                             ; preds = %1833
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #9
  %1838 = load ptr, ptr %134, align 8, !tbaa !5
  %1839 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro16as_InternalMacroEv(ptr noundef nonnull align 8 dereferenceable(16) %1838)
          to label %1840 unwind label %1846

1840:                                             ; preds = %1837
  store ptr %1839, ptr %138, align 8, !tbaa !5
  br label %1841

1841:                                             ; preds = %1851, %1840
  %1842 = load ptr, ptr %138, align 8, !tbaa !5
  %1843 = load i8, ptr %137, align 1, !tbaa !68, !range !64, !noundef !65
  %1844 = trunc i8 %1843 to i1
  br i1 %1844, label %1850, label %1845

1845:                                             ; preds = %1841
  store i32 171, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  br label %1852

1846:                                             ; preds = %1837
  %1847 = landingpad { ptr, i32 }
          cleanup
  %1848 = extractvalue { ptr, i32 } %1847, 0
  store ptr %1848, ptr %12, align 8
  %1849 = extractvalue { ptr, i32 } %1847, 1
  store i32 %1849, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #9
  br label %1933

1850:                                             ; preds = %1841
  br label %1851

1851:                                             ; preds = %1850
  store i8 0, ptr %137, align 1, !tbaa !68
  br label %1841, !llvm.loop !109

1852:                                             ; preds = %1845
  br label %1853

1853:                                             ; preds = %1852
  store i8 0, ptr %137, align 1, !tbaa !68
  br label %1833, !llvm.loop !110

1854:                                             ; preds = %1836
  br label %1931

1855:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 1, ptr %139) #9
  store i8 1, ptr %139, align 1, !tbaa !68
  br label %1856

1856:                                             ; preds = %1891, %1855
  %1857 = load i8, ptr %139, align 1, !tbaa !68, !range !64, !noundef !65
  %1858 = trunc i8 %1857 to i1
  br i1 %1858, label %1860, label %1859

1859:                                             ; preds = %1856
  store i32 174, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #9
  br label %1892

1860:                                             ; preds = %1856
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #9
  %1861 = load ptr, ptr %134, align 8, !tbaa !5
  %1862 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro12as_ProcMacroEv(ptr noundef nonnull align 8 dereferenceable(16) %1861)
          to label %1863 unwind label %1869

1863:                                             ; preds = %1860
  store ptr %1862, ptr %140, align 8, !tbaa !5
  br label %1864

1864:                                             ; preds = %1879, %1863
  %1865 = load ptr, ptr %140, align 8, !tbaa !5
  %1866 = load i8, ptr %139, align 1, !tbaa !68, !range !64, !noundef !65
  %1867 = trunc i8 %1866 to i1
  br i1 %1867, label %1873, label %1868

1868:                                             ; preds = %1864
  store i32 177, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #9
  br label %1890

1869:                                             ; preds = %1860
  %1870 = landingpad { ptr, i32 }
          cleanup
  %1871 = extractvalue { ptr, i32 } %1870, 0
  store ptr %1871, ptr %12, align 8
  %1872 = extractvalue { ptr, i32 } %1870, 1
  store i32 %1872, ptr %13, align 4
  br label %1889

1873:                                             ; preds = %1864
  call void @llvm.lifetime.start.p0(i64 16, ptr %141) #9
  %1874 = load ptr, ptr %140, align 8, !tbaa !5
  %1875 = load ptr, ptr %1874, align 8, !tbaa !5
  invoke void @_ZN8MacroRefC2EPKN3HIR9ProcMacroE(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef %1875)
          to label %1876 unwind label %1880

1876:                                             ; preds = %1873
  %1877 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8MacroRefaSEOS_(ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef nonnull align 8 dereferenceable(16) %141)
          to label %1878 unwind label %1884

1878:                                             ; preds = %1876
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #9
  br label %1879

1879:                                             ; preds = %1878
  store i8 0, ptr %139, align 1, !tbaa !68
  br label %1864, !llvm.loop !111

1880:                                             ; preds = %1873
  %1881 = landingpad { ptr, i32 }
          cleanup
  %1882 = extractvalue { ptr, i32 } %1881, 0
  store ptr %1882, ptr %12, align 8
  %1883 = extractvalue { ptr, i32 } %1881, 1
  store i32 %1883, ptr %13, align 4
  br label %1888

1884:                                             ; preds = %1876
  %1885 = landingpad { ptr, i32 }
          cleanup
  %1886 = extractvalue { ptr, i32 } %1885, 0
  store ptr %1886, ptr %12, align 8
  %1887 = extractvalue { ptr, i32 } %1885, 1
  store i32 %1887, ptr %13, align 4
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #9
  br label %1888

1888:                                             ; preds = %1884, %1880
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #9
  br label %1889

1889:                                             ; preds = %1888, %1869
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #9
  br label %1933

1890:                                             ; preds = %1868
  br label %1891

1891:                                             ; preds = %1890
  store i8 0, ptr %139, align 1, !tbaa !68
  br label %1856, !llvm.loop !112

1892:                                             ; preds = %1859
  br label %1931

1893:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #9
  store i8 1, ptr %142, align 1, !tbaa !68
  br label %1894

1894:                                             ; preds = %1929, %1893
  %1895 = load i8, ptr %142, align 1, !tbaa !68, !range !64, !noundef !65
  %1896 = trunc i8 %1895 to i1
  br i1 %1896, label %1898, label %1897

1897:                                             ; preds = %1894
  store i32 180, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #9
  br label %1930

1898:                                             ; preds = %1894
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #9
  %1899 = load ptr, ptr %134, align 8, !tbaa !5
  %1900 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro13as_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %1899)
          to label %1901 unwind label %1907

1901:                                             ; preds = %1898
  store ptr %1900, ptr %143, align 8, !tbaa !5
  br label %1902

1902:                                             ; preds = %1917, %1901
  %1903 = load ptr, ptr %143, align 8, !tbaa !5
  %1904 = load i8, ptr %142, align 1, !tbaa !68, !range !64, !noundef !65
  %1905 = trunc i8 %1904 to i1
  br i1 %1905, label %1911, label %1906

1906:                                             ; preds = %1902
  store i32 183, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #9
  br label %1928

1907:                                             ; preds = %1898
  %1908 = landingpad { ptr, i32 }
          cleanup
  %1909 = extractvalue { ptr, i32 } %1908, 0
  store ptr %1909, ptr %12, align 8
  %1910 = extractvalue { ptr, i32 } %1908, 1
  store i32 %1910, ptr %13, align 4
  br label %1927

1911:                                             ; preds = %1902
  call void @llvm.lifetime.start.p0(i64 16, ptr %144) #9
  %1912 = load ptr, ptr %143, align 8, !tbaa !5
  %1913 = load ptr, ptr %1912, align 8, !tbaa !5
  invoke void @_ZN8MacroRefC2EPK10MacroRules(ptr noundef nonnull align 8 dereferenceable(16) %144, ptr noundef %1913)
          to label %1914 unwind label %1918

1914:                                             ; preds = %1911
  %1915 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8MacroRefaSEOS_(ptr noundef nonnull align 8 dereferenceable(16) %132, ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %1916 unwind label %1922

1916:                                             ; preds = %1914
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #9
  br label %1917

1917:                                             ; preds = %1916
  store i8 0, ptr %142, align 1, !tbaa !68
  br label %1902, !llvm.loop !113

1918:                                             ; preds = %1911
  %1919 = landingpad { ptr, i32 }
          cleanup
  %1920 = extractvalue { ptr, i32 } %1919, 0
  store ptr %1920, ptr %12, align 8
  %1921 = extractvalue { ptr, i32 } %1919, 1
  store i32 %1921, ptr %13, align 4
  br label %1926

1922:                                             ; preds = %1914
  %1923 = landingpad { ptr, i32 }
          cleanup
  %1924 = extractvalue { ptr, i32 } %1923, 0
  store ptr %1924, ptr %12, align 8
  %1925 = extractvalue { ptr, i32 } %1923, 1
  store i32 %1925, ptr %13, align 4
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #9
  br label %1926

1926:                                             ; preds = %1922, %1918
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #9
  br label %1927

1927:                                             ; preds = %1926, %1907
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #9
  br label %1933

1928:                                             ; preds = %1906
  br label %1929

1929:                                             ; preds = %1928
  store i8 0, ptr %142, align 1, !tbaa !68
  br label %1894, !llvm.loop !114

1930:                                             ; preds = %1897
  br label %1931

1931:                                             ; preds = %1930, %1892, %1854, %1831, %1803
  br label %1932

1932:                                             ; preds = %1931
  store i8 0, ptr %133, align 1, !tbaa !68
  br label %1796, !llvm.loop !115

1933:                                             ; preds = %1927, %1889, %1846, %1823, %1804
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #9
  br label %1987

1934:                                             ; preds = %1799
  br label %1935

1935:                                             ; preds = %1934
  store i8 0, ptr %133, align 1, !tbaa !68
  br label %1769, !llvm.loop !116

1936:                                             ; preds = %1772
  %1937 = invoke noundef zeroext i1 @_ZNK8MacroRef7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(16) %132)
          to label %1938 unwind label %1955

1938:                                             ; preds = %1936
  br i1 %1937, label %1986, label %1939

1939:                                             ; preds = %1938
  br label %1940

1940:                                             ; preds = %1939
  %1941 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1942 unwind label %1955

1942:                                             ; preds = %1940
  br i1 %1941, label %1943, label %1959

1943:                                             ; preds = %1942
  %1944 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1945 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1944, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %1946 unwind label %1955

1946:                                             ; preds = %1943
  %1947 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1945, ptr noundef @.str.47)
          to label %1948 unwind label %1955

1948:                                             ; preds = %1946
  %1949 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %1947, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1950 unwind label %1955

1950:                                             ; preds = %1948
  %1951 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1949, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1952 unwind label %1955

1952:                                             ; preds = %1950
  %1953 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1951, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1954 unwind label %1955

1954:                                             ; preds = %1952
  br label %1959

1955:                                             ; preds = %1952, %1950, %1948, %1946, %1943, %1940, %1936
  %1956 = landingpad { ptr, i32 }
          cleanup
  %1957 = extractvalue { ptr, i32 } %1956, 0
  store ptr %1957, ptr %12, align 8
  %1958 = extractvalue { ptr, i32 } %1956, 1
  store i32 %1958, ptr %13, align 4
  br label %1987

1959:                                             ; preds = %1954, %1942
  br label %1960

1960:                                             ; preds = %1959
  br label %1961

1961:                                             ; preds = %1960
  %1962 = load ptr, ptr %7, align 8, !tbaa !5
  %1963 = getelementptr inbounds %"class.AST::Module", ptr %1962, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 64, ptr %145) #9
  %1964 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %145, i32 0, i32 0
  store i8 0, ptr %1964, align 8, !tbaa !18
  %1965 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %145, i32 0, i32 1
  %1966 = load ptr, ptr %127, align 8, !tbaa !5
  %1967 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %1966, i32 0, i32 2
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %1965, ptr noundef nonnull align 8 dereferenceable(8) %1967)
          to label %1968 unwind label %1973

1968:                                             ; preds = %1961
  %1969 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %145, i32 0, i32 2
  invoke void @_ZN3AST12AbsolutePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1969, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %1970 unwind label %1977

1970:                                             ; preds = %1968
  %1971 = getelementptr inbounds %"struct.AST::Module::MacroImport", ptr %145, i32 0, i32 3
  call void @_ZN8MacroRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(16) %1971, ptr noundef nonnull align 8 dereferenceable(16) %132) #9
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %1963, ptr noundef nonnull align 8 dereferenceable(64) %145)
          to label %1972 unwind label %1981

1972:                                             ; preds = %1970
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %145) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %145) #9
  br label %1986

1973:                                             ; preds = %1961
  %1974 = landingpad { ptr, i32 }
          cleanup
  %1975 = extractvalue { ptr, i32 } %1974, 0
  store ptr %1975, ptr %12, align 8
  %1976 = extractvalue { ptr, i32 } %1974, 1
  store i32 %1976, ptr %13, align 4
  br label %1985

1977:                                             ; preds = %1968
  %1978 = landingpad { ptr, i32 }
          cleanup
  %1979 = extractvalue { ptr, i32 } %1978, 0
  store ptr %1979, ptr %12, align 8
  %1980 = extractvalue { ptr, i32 } %1978, 1
  store i32 %1980, ptr %13, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %1965) #9
  br label %1985

1981:                                             ; preds = %1970
  %1982 = landingpad { ptr, i32 }
          cleanup
  %1983 = extractvalue { ptr, i32 } %1982, 0
  store ptr %1983, ptr %12, align 8
  %1984 = extractvalue { ptr, i32 } %1982, 1
  store i32 %1984, ptr %13, align 4
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %145) #9
  br label %1985

1985:                                             ; preds = %1981, %1977, %1973
  call void @llvm.lifetime.end.p0(i64 64, ptr %145) #9
  br label %1987

1986:                                             ; preds = %1972, %1938
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #9
  call void @_ZN20ResolveItemRef_MacroD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #9
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  br label %1991

1987:                                             ; preds = %1985, %1955, %1933
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #9
  br label %1988

1988:                                             ; preds = %1987, %1791
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #9
  call void @_ZN20ResolveItemRef_MacroD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #9
  br label %1989

1989:                                             ; preds = %1988, %1790
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #9
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  br label %1990

1990:                                             ; preds = %1989, %1773
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #9
  br label %1994

1991:                                             ; preds = %1986, %1726, %1721
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  br label %1992

1992:                                             ; preds = %1991
  %1993 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  br label %1713

1994:                                             ; preds = %1990, %1747
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  br label %1997

1995:                                             ; preds = %1715
  br label %1996

1996:                                             ; preds = %1995
  store i8 0, ptr %122, align 1, !tbaa !68
  br label %1695, !llvm.loop !117

1997:                                             ; preds = %1994, %1700
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  br label %3680

1998:                                             ; preds = %1699
  br label %1999

1999:                                             ; preds = %1998
  store i8 0, ptr %122, align 1, !tbaa !68
  br label %1687, !llvm.loop !118

2000:                                             ; preds = %1690
  br label %3678

2001:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %146) #9
  store i8 1, ptr %146, align 1, !tbaa !68
  br label %2002

2002:                                             ; preds = %2059, %2001
  %2003 = load i8, ptr %146, align 1, !tbaa !68, !range !64, !noundef !65
  %2004 = trunc i8 %2003 to i1
  br i1 %2004, label %2006, label %2005

2005:                                             ; preds = %2002
  store i32 188, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #9
  br label %2060

2006:                                             ; preds = %2002
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #9
  %2007 = load ptr, ptr %85, align 8, !tbaa !5
  %2008 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item14as_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %2007)
          to label %2009 unwind label %2015

2009:                                             ; preds = %2006
  store ptr %2008, ptr %147, align 8, !tbaa !5
  br label %2010

2010:                                             ; preds = %2055, %2009
  %2011 = load ptr, ptr %147, align 8, !tbaa !5
  %2012 = load i8, ptr %146, align 1, !tbaa !68, !range !64, !noundef !65
  %2013 = trunc i8 %2012 to i1
  br i1 %2013, label %2019, label %2014

2014:                                             ; preds = %2010
  store i32 191, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  br label %2058

2015:                                             ; preds = %2006
  %2016 = landingpad { ptr, i32 }
          cleanup
  %2017 = extractvalue { ptr, i32 } %2016, 0
  store ptr %2017, ptr %12, align 8
  %2018 = extractvalue { ptr, i32 } %2016, 1
  store i32 %2018, ptr %13, align 4
  br label %2057

2019:                                             ; preds = %2010
  call void @llvm.lifetime.start.p0(i64 24, ptr %148) #9
  %2020 = load ptr, ptr %147, align 8, !tbaa !5
  %2021 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST11ExternBlock5itemsEv(ptr noundef nonnull align 8 dereferenceable(80) %2020)
          to label %2022 unwind label %2032

2022:                                             ; preds = %2019
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEC2EOS5_(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 8 dereferenceable(24) %2021) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #9
  store ptr %148, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #9
  %2023 = load ptr, ptr %149, align 8, !tbaa !5
  %2024 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2023) #9
  %2025 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.393", ptr %150, i32 0, i32 0
  store ptr %2024, ptr %2025, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #9
  %2026 = load ptr, ptr %149, align 8, !tbaa !5
  %2027 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2026) #9
  %2028 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.393", ptr %151, i32 0, i32 0
  store ptr %2027, ptr %2028, align 8
  br label %2029

2029:                                             ; preds = %2043, %2022
  %2030 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %151) #9
  br i1 %2030, label %2036, label %2031

2031:                                             ; preds = %2029
  store i32 194, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #9
  br label %2054

2032:                                             ; preds = %2019
  %2033 = landingpad { ptr, i32 }
          cleanup
  %2034 = extractvalue { ptr, i32 } %2033, 0
  store ptr %2034, ptr %12, align 8
  %2035 = extractvalue { ptr, i32 } %2033, 1
  store i32 %2035, ptr %13, align 4
  br label %2056

2036:                                             ; preds = %2029
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #9
  %2037 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %150) #9
  store ptr %2037, ptr %152, align 8, !tbaa !5
  %2038 = load ptr, ptr %7, align 8, !tbaa !5
  %2039 = getelementptr inbounds %"class.AST::Module", ptr %2038, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #9
  %2040 = load ptr, ptr %152, align 8, !tbaa !5
  invoke void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.374") align 8 %153, ptr noundef nonnull align 8 dereferenceable(568) %2040)
          to label %2041 unwind label %2045

2041:                                             ; preds = %2036
  invoke void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %2039, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %2042 unwind label %2049

2042:                                             ; preds = %2041
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #9
  br label %2043

2043:                                             ; preds = %2042
  %2044 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %150) #9
  br label %2029

2045:                                             ; preds = %2036
  %2046 = landingpad { ptr, i32 }
          cleanup
  %2047 = extractvalue { ptr, i32 } %2046, 0
  store ptr %2047, ptr %12, align 8
  %2048 = extractvalue { ptr, i32 } %2046, 1
  store i32 %2048, ptr %13, align 4
  br label %2053

2049:                                             ; preds = %2041
  %2050 = landingpad { ptr, i32 }
          cleanup
  %2051 = extractvalue { ptr, i32 } %2050, 0
  store ptr %2051, ptr %12, align 8
  %2052 = extractvalue { ptr, i32 } %2050, 1
  store i32 %2052, ptr %13, align 4
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  br label %2053

2053:                                             ; preds = %2049, %2045
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #9
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #9
  br label %2056

2054:                                             ; preds = %2031
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %148) #9
  br label %2055

2055:                                             ; preds = %2054
  store i8 0, ptr %146, align 1, !tbaa !68
  br label %2010, !llvm.loop !119

2056:                                             ; preds = %2053, %2032
  call void @llvm.lifetime.end.p0(i64 24, ptr %148) #9
  br label %2057

2057:                                             ; preds = %2056, %2015
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #9
  br label %3680

2058:                                             ; preds = %2014
  br label %2059

2059:                                             ; preds = %2058
  store i8 0, ptr %146, align 1, !tbaa !68
  br label %2002, !llvm.loop !120

2060:                                             ; preds = %2005
  br label %3678

2061:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %154) #9
  store i8 1, ptr %154, align 1, !tbaa !68
  br label %2062

2062:                                             ; preds = %2113, %2061
  %2063 = load i8, ptr %154, align 1, !tbaa !68, !range !64, !noundef !65
  %2064 = trunc i8 %2063 to i1
  br i1 %2064, label %2066, label %2065

2065:                                             ; preds = %2062
  store i32 196, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #9
  br label %2114

2066:                                             ; preds = %2062
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #9
  %2067 = load ptr, ptr %85, align 8, !tbaa !5
  %2068 = invoke noundef nonnull align 8 dereferenceable(472) ptr @_ZN3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %2067)
          to label %2069 unwind label %2075

2069:                                             ; preds = %2066
  store ptr %2068, ptr %155, align 8, !tbaa !5
  br label %2070

2070:                                             ; preds = %2110, %2069
  %2071 = load ptr, ptr %155, align 8, !tbaa !5
  %2072 = load i8, ptr %154, align 1, !tbaa !68, !range !64, !noundef !65
  %2073 = trunc i8 %2072 to i1
  br i1 %2073, label %2079, label %2074

2074:                                             ; preds = %2070
  store i32 199, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #9
  br label %2112

2075:                                             ; preds = %2089, %2087, %2084, %2079, %2066
  %2076 = landingpad { ptr, i32 }
          cleanup
  %2077 = extractvalue { ptr, i32 } %2076, 0
  store ptr %2077, ptr %12, align 8
  %2078 = extractvalue { ptr, i32 } %2076, 1
  store i32 %2078, ptr %13, align 4
  br label %2111

2079:                                             ; preds = %2070
  %2080 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %156, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %2081 unwind label %2075

2081:                                             ; preds = %2079
  %2082 = load ptr, ptr %7, align 8, !tbaa !5
  %2083 = load ptr, ptr %155, align 8, !tbaa !5
  invoke void @_Z11Expand_ImplRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_4ImplE(ptr noundef nonnull align 8 dereferenceable(30) %2080, ptr noundef %156, ptr noundef nonnull align 8 dereferenceable(480) %2082, ptr noundef nonnull align 8 dereferenceable(472) %2083)
          to label %2084 unwind label %2096

2084:                                             ; preds = %2081
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %156) #9
  %2085 = load ptr, ptr %155, align 8, !tbaa !5
  %2086 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %2085)
          to label %2087 unwind label %2075

2087:                                             ; preds = %2084
  %2088 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %2086)
          to label %2089 unwind label %2075

2089:                                             ; preds = %2087
  %2090 = invoke noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120) %2088)
          to label %2091 unwind label %2075

2091:                                             ; preds = %2089
  br i1 %2090, label %2092, label %2109

2092:                                             ; preds = %2091
  call void @llvm.lifetime.start.p0(i64 488, ptr %157) #9
  invoke void @_ZN3AST4ItemC2Ev(ptr noundef nonnull align 8 dereferenceable(488) %157)
          to label %2093 unwind label %2100

2093:                                             ; preds = %2092
  %2094 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %83, ptr noundef nonnull align 8 dereferenceable(488) %157)
          to label %2095 unwind label %2104

2095:                                             ; preds = %2093
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %157) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %157) #9
  br label %2109

2096:                                             ; preds = %2081
  %2097 = landingpad { ptr, i32 }
          cleanup
  %2098 = extractvalue { ptr, i32 } %2097, 0
  store ptr %2098, ptr %12, align 8
  %2099 = extractvalue { ptr, i32 } %2097, 1
  store i32 %2099, ptr %13, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %156) #9
  br label %2111

2100:                                             ; preds = %2092
  %2101 = landingpad { ptr, i32 }
          cleanup
  %2102 = extractvalue { ptr, i32 } %2101, 0
  store ptr %2102, ptr %12, align 8
  %2103 = extractvalue { ptr, i32 } %2101, 1
  store i32 %2103, ptr %13, align 4
  br label %2108

2104:                                             ; preds = %2093
  %2105 = landingpad { ptr, i32 }
          cleanup
  %2106 = extractvalue { ptr, i32 } %2105, 0
  store ptr %2106, ptr %12, align 8
  %2107 = extractvalue { ptr, i32 } %2105, 1
  store i32 %2107, ptr %13, align 4
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %157) #9
  br label %2108

2108:                                             ; preds = %2104, %2100
  call void @llvm.lifetime.end.p0(i64 488, ptr %157) #9
  br label %2111

2109:                                             ; preds = %2095, %2091
  br label %2110

2110:                                             ; preds = %2109
  store i8 0, ptr %154, align 1, !tbaa !68
  br label %2070, !llvm.loop !121

2111:                                             ; preds = %2108, %2096, %2075
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #9
  br label %3680

2112:                                             ; preds = %2074
  br label %2113

2113:                                             ; preds = %2112
  store i8 0, ptr %154, align 1, !tbaa !68
  br label %2062, !llvm.loop !122

2114:                                             ; preds = %2065
  br label %3678

2115:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %158) #9
  store i8 1, ptr %158, align 1, !tbaa !68
  br label %2116

2116:                                             ; preds = %2165, %2115
  %2117 = load i8, ptr %158, align 1, !tbaa !68, !range !64, !noundef !65
  %2118 = trunc i8 %2117 to i1
  br i1 %2118, label %2120, label %2119

2119:                                             ; preds = %2116
  store i32 202, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  br label %2166

2120:                                             ; preds = %2116
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #9
  %2121 = load ptr, ptr %85, align 8, !tbaa !5
  %2122 = invoke noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Item10as_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %2121)
          to label %2123 unwind label %2129

2123:                                             ; preds = %2120
  store ptr %2122, ptr %159, align 8, !tbaa !5
  br label %2124

2124:                                             ; preds = %2162, %2123
  %2125 = load ptr, ptr %159, align 8, !tbaa !5
  %2126 = load i8, ptr %158, align 1, !tbaa !68, !range !64, !noundef !65
  %2127 = trunc i8 %2126 to i1
  br i1 %2127, label %2133, label %2128

2128:                                             ; preds = %2124
  store i32 205, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  br label %2164

2129:                                             ; preds = %2141, %2138, %2133, %2120
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %12, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %13, align 4
  br label %2163

2133:                                             ; preds = %2124
  %2134 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %160, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %2135 unwind label %2129

2135:                                             ; preds = %2133
  %2136 = load ptr, ptr %7, align 8, !tbaa !5
  %2137 = load ptr, ptr %159, align 8, !tbaa !5
  invoke void @_Z14Expand_ImplDefRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_7ImplDefE(ptr noundef nonnull align 8 dereferenceable(30) %2134, ptr noundef %160, ptr noundef nonnull align 8 dereferenceable(480) %2136, ptr noundef nonnull align 8 dereferenceable(448) %2137)
          to label %2138 unwind label %2148

2138:                                             ; preds = %2135
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %160) #9
  %2139 = load ptr, ptr %159, align 8, !tbaa !5
  %2140 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %2139)
          to label %2141 unwind label %2129

2141:                                             ; preds = %2138
  %2142 = invoke noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120) %2140)
          to label %2143 unwind label %2129

2143:                                             ; preds = %2141
  br i1 %2142, label %2144, label %2161

2144:                                             ; preds = %2143
  call void @llvm.lifetime.start.p0(i64 488, ptr %161) #9
  invoke void @_ZN3AST4ItemC2Ev(ptr noundef nonnull align 8 dereferenceable(488) %161)
          to label %2145 unwind label %2152

2145:                                             ; preds = %2144
  %2146 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %83, ptr noundef nonnull align 8 dereferenceable(488) %161)
          to label %2147 unwind label %2156

2147:                                             ; preds = %2145
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %161) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %161) #9
  br label %2161

2148:                                             ; preds = %2135
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %12, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %13, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %160) #9
  br label %2163

2152:                                             ; preds = %2144
  %2153 = landingpad { ptr, i32 }
          cleanup
  %2154 = extractvalue { ptr, i32 } %2153, 0
  store ptr %2154, ptr %12, align 8
  %2155 = extractvalue { ptr, i32 } %2153, 1
  store i32 %2155, ptr %13, align 4
  br label %2160

2156:                                             ; preds = %2145
  %2157 = landingpad { ptr, i32 }
          cleanup
  %2158 = extractvalue { ptr, i32 } %2157, 0
  store ptr %2158, ptr %12, align 8
  %2159 = extractvalue { ptr, i32 } %2157, 1
  store i32 %2159, ptr %13, align 4
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %161) #9
  br label %2160

2160:                                             ; preds = %2156, %2152
  call void @llvm.lifetime.end.p0(i64 488, ptr %161) #9
  br label %2163

2161:                                             ; preds = %2147, %2143
  br label %2162

2162:                                             ; preds = %2161
  store i8 0, ptr %158, align 1, !tbaa !68
  br label %2124, !llvm.loop !123

2163:                                             ; preds = %2160, %2148, %2129
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  br label %3680

2164:                                             ; preds = %2128
  br label %2165

2165:                                             ; preds = %2164
  store i8 0, ptr %158, align 1, !tbaa !68
  br label %2116, !llvm.loop !124

2166:                                             ; preds = %2119
  br label %3678

2167:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %162) #9
  store i8 1, ptr %162, align 1, !tbaa !68
  br label %2168

2168:                                             ; preds = %2189, %2167
  %2169 = load i8, ptr %162, align 1, !tbaa !68, !range !64, !noundef !65
  %2170 = trunc i8 %2169 to i1
  br i1 %2170, label %2172, label %2171

2171:                                             ; preds = %2168
  store i32 208, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #9
  br label %2190

2172:                                             ; preds = %2168
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #9
  %2173 = load ptr, ptr %85, align 8, !tbaa !5
  %2174 = invoke noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %2173)
          to label %2175 unwind label %2181

2175:                                             ; preds = %2172
  store ptr %2174, ptr %163, align 8, !tbaa !5
  br label %2176

2176:                                             ; preds = %2187, %2175
  %2177 = load ptr, ptr %163, align 8, !tbaa !5
  %2178 = load i8, ptr %162, align 1, !tbaa !68, !range !64, !noundef !65
  %2179 = trunc i8 %2178 to i1
  br i1 %2179, label %2185, label %2180

2180:                                             ; preds = %2176
  store i32 211, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #9
  br label %2188

2181:                                             ; preds = %2185, %2172
  %2182 = landingpad { ptr, i32 }
          cleanup
  %2183 = extractvalue { ptr, i32 } %2182, 0
  store ptr %2183, ptr %12, align 8
  %2184 = extractvalue { ptr, i32 } %2182, 1
  store i32 %2184, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #9
  br label %3680

2185:                                             ; preds = %2176
  %2186 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.19, ptr %2186, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2186, ptr @_ZTIPKc, ptr null) #11
          to label %3742 unwind label %2181

2187:                                             ; No predecessors!
  store i8 0, ptr %162, align 1, !tbaa !68
  br label %2176, !llvm.loop !125

2188:                                             ; preds = %2180
  br label %2189

2189:                                             ; preds = %2188
  store i8 0, ptr %162, align 1, !tbaa !68
  br label %2168, !llvm.loop !126

2190:                                             ; preds = %2171
  br label %3678

2191:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #9
  store i8 1, ptr %164, align 1, !tbaa !68
  br label %2192

2192:                                             ; preds = %2310, %2191
  %2193 = load i8, ptr %164, align 1, !tbaa !68, !range !64, !noundef !65
  %2194 = trunc i8 %2193 to i1
  br i1 %2194, label %2196, label %2195

2195:                                             ; preds = %2192
  store i32 214, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #9
  br label %2311

2196:                                             ; preds = %2192
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #9
  %2197 = load ptr, ptr %85, align 8, !tbaa !5
  %2198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST4Item8as_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %2197)
          to label %2199 unwind label %2205

2199:                                             ; preds = %2196
  store ptr %2198, ptr %165, align 8, !tbaa !5
  br label %2200

2200:                                             ; preds = %2307, %2199
  %2201 = load ptr, ptr %165, align 8, !tbaa !5
  %2202 = load i8, ptr %164, align 1, !tbaa !68, !range !64, !noundef !65
  %2203 = trunc i8 %2202 to i1
  br i1 %2203, label %2209, label %2204

2204:                                             ; preds = %2200
  store i32 217, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #9
  br label %2309

2205:                                             ; preds = %2214, %2209, %2196
  %2206 = landingpad { ptr, i32 }
          cleanup
  %2207 = extractvalue { ptr, i32 } %2206, 0
  store ptr %2207, ptr %12, align 8
  %2208 = extractvalue { ptr, i32 } %2206, 1
  store i32 %2208, ptr %13, align 4
  br label %2308

2209:                                             ; preds = %2200
  %2210 = load ptr, ptr %165, align 8, !tbaa !5
  %2211 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %2210, i32 0, i32 0
  %2212 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2211, ptr noundef @.str.19)
          to label %2213 unwind label %2205

2213:                                             ; preds = %2209
  br i1 %2212, label %2214, label %2283

2214:                                             ; preds = %2213
  %2215 = load ptr, ptr %5, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.ExpandState, ptr %2215, i32 0, i32 0
  %2217 = load ptr, ptr %2216, align 8, !tbaa !28
  %2218 = getelementptr inbounds %"class.AST::Crate", ptr %2217, i32 0, i32 4
  %2219 = load ptr, ptr %165, align 8, !tbaa !5
  %2220 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %2219, i32 0, i32 0
  %2221 = invoke noundef i64 @_ZNKSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE5countERS6_(ptr noundef nonnull align 8 dereferenceable(48) %2218, ptr noundef nonnull align 8 dereferenceable(8) %2220)
          to label %2222 unwind label %2205

2222:                                             ; preds = %2214
  %2223 = icmp eq i64 %2221, 0
  br i1 %2223, label %2224, label %2258

2224:                                             ; preds = %2222
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #9
  %2225 = load ptr, ptr %5, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ExpandState, ptr %2225, i32 0, i32 0
  %2227 = load ptr, ptr %2226, align 8, !tbaa !28
  %2228 = load ptr, ptr %43, align 8, !tbaa !5
  %2229 = getelementptr inbounds %"struct.AST::Named.382", ptr %2228, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %2229)
          to label %2230 unwind label %2239

2230:                                             ; preds = %2224
  %2231 = load ptr, ptr %165, align 8, !tbaa !5
  %2232 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %2231, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %168) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %169) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %169)
          to label %2233 unwind label %2243

2233:                                             ; preds = %2230
  invoke void @_ZN3AST5Crate17load_extern_crateE4SpanRK8RcStringRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %166, ptr noundef nonnull align 8 dereferenceable(1112) %2227, ptr noundef %167, ptr noundef nonnull align 8 dereferenceable(8) %2232, ptr noundef nonnull align 8 dereferenceable(32) %168)
          to label %2234 unwind label %2247

2234:                                             ; preds = %2233
  %2235 = load ptr, ptr %165, align 8, !tbaa !5
  %2236 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %2235, i32 0, i32 0
  %2237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %2236, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %2238 unwind label %2251

2238:                                             ; preds = %2234
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #9
  br label %2258

2239:                                             ; preds = %2224
  %2240 = landingpad { ptr, i32 }
          cleanup
  %2241 = extractvalue { ptr, i32 } %2240, 0
  store ptr %2241, ptr %12, align 8
  %2242 = extractvalue { ptr, i32 } %2240, 1
  store i32 %2242, ptr %13, align 4
  br label %2257

2243:                                             ; preds = %2230
  %2244 = landingpad { ptr, i32 }
          cleanup
  %2245 = extractvalue { ptr, i32 } %2244, 0
  store ptr %2245, ptr %12, align 8
  %2246 = extractvalue { ptr, i32 } %2244, 1
  store i32 %2246, ptr %13, align 4
  br label %2256

2247:                                             ; preds = %2233
  %2248 = landingpad { ptr, i32 }
          cleanup
  %2249 = extractvalue { ptr, i32 } %2248, 0
  store ptr %2249, ptr %12, align 8
  %2250 = extractvalue { ptr, i32 } %2248, 1
  store i32 %2250, ptr %13, align 4
  br label %2255

2251:                                             ; preds = %2234
  %2252 = landingpad { ptr, i32 }
          cleanup
  %2253 = extractvalue { ptr, i32 } %2252, 0
  store ptr %2253, ptr %12, align 8
  %2254 = extractvalue { ptr, i32 } %2252, 1
  store i32 %2254, ptr %13, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #9
  br label %2255

2255:                                             ; preds = %2251, %2247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  br label %2256

2256:                                             ; preds = %2255, %2243
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %169) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  br label %2257

2257:                                             ; preds = %2256, %2239
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #9
  br label %2308

2258:                                             ; preds = %2238, %2222
  %2259 = getelementptr inbounds %"struct.AST::AbsolutePath", ptr %1, i32 0, i32 1
  %2260 = call noundef zeroext i1 @_ZNKSt6vectorI8RcStringSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %2259) #9
  br i1 %2260, label %2261, label %2282

2261:                                             ; preds = %2258
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #9
  %2262 = load ptr, ptr %43, align 8, !tbaa !5
  %2263 = getelementptr inbounds %"struct.AST::Named.382", ptr %2262, i32 0, i32 3
  %2264 = load ptr, ptr %165, align 8, !tbaa !5
  %2265 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %2264, i32 0, i32 0
  invoke void @_ZSt9make_pairIR8RcStringS1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind writable sret(%"struct.std::pair.403") align 8 %170, ptr noundef nonnull align 8 dereferenceable(8) %2263, ptr noundef nonnull align 8 dereferenceable(8) %2265)
          to label %2266 unwind label %2273

2266:                                             ; preds = %2261
  %2267 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringS0_St4lessIS0_ESaISt4pairIKS0_S0_EEE6insertIS3_IS0_S0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) @_ZN3AST17g_implicit_cratesE, ptr noundef nonnull align 8 dereferenceable(16) %170)
          to label %2268 unwind label %2277

2268:                                             ; preds = %2266
  %2269 = getelementptr inbounds { ptr, i8 }, ptr %171, i32 0, i32 0
  %2270 = extractvalue { ptr, i8 } %2267, 0
  store ptr %2270, ptr %2269, align 8
  %2271 = getelementptr inbounds { ptr, i8 }, ptr %171, i32 0, i32 1
  %2272 = extractvalue { ptr, i8 } %2267, 1
  store i8 %2272, ptr %2271, align 8
  call void @_ZNSt4pairI8RcStringS0_ED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #9
  br label %2282

2273:                                             ; preds = %2261
  %2274 = landingpad { ptr, i32 }
          cleanup
  %2275 = extractvalue { ptr, i32 } %2274, 0
  store ptr %2275, ptr %12, align 8
  %2276 = extractvalue { ptr, i32 } %2274, 1
  store i32 %2276, ptr %13, align 4
  br label %2281

2277:                                             ; preds = %2266
  %2278 = landingpad { ptr, i32 }
          cleanup
  %2279 = extractvalue { ptr, i32 } %2278, 0
  store ptr %2279, ptr %12, align 8
  %2280 = extractvalue { ptr, i32 } %2278, 1
  store i32 %2280, ptr %13, align 4
  call void @_ZNSt4pairI8RcStringS0_ED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %170) #9
  br label %2281

2281:                                             ; preds = %2277, %2273
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #9
  br label %2308

2282:                                             ; preds = %2268, %2258
  br label %2306

2283:                                             ; preds = %2213
  %2284 = getelementptr inbounds %"struct.AST::AbsolutePath", ptr %1, i32 0, i32 1
  %2285 = call noundef zeroext i1 @_ZNKSt6vectorI8RcStringSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %2284) #9
  br i1 %2285, label %2286, label %2305

2286:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 16, ptr %172) #9
  %2287 = load ptr, ptr %43, align 8, !tbaa !5
  %2288 = getelementptr inbounds %"struct.AST::Named.382", ptr %2287, i32 0, i32 3
  invoke void @_ZSt9make_pairIR8RcStringRA1_KcESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.405") align 8 %172, ptr noundef nonnull align 8 dereferenceable(8) %2288, ptr noundef nonnull align 1 dereferenceable(1) @.str.19)
          to label %2289 unwind label %2296

2289:                                             ; preds = %2286
  %2290 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringS0_St4lessIS0_ESaISt4pairIKS0_S0_EEE6insertIS3_IS0_PKcEEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) @_ZN3AST17g_implicit_cratesE, ptr noundef nonnull align 8 dereferenceable(16) %172)
          to label %2291 unwind label %2300

2291:                                             ; preds = %2289
  %2292 = getelementptr inbounds { ptr, i8 }, ptr %173, i32 0, i32 0
  %2293 = extractvalue { ptr, i8 } %2290, 0
  store ptr %2293, ptr %2292, align 8
  %2294 = getelementptr inbounds { ptr, i8 }, ptr %173, i32 0, i32 1
  %2295 = extractvalue { ptr, i8 } %2290, 1
  store i8 %2295, ptr %2294, align 8
  call void @_ZNSt4pairI8RcStringPKcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #9
  br label %2305

2296:                                             ; preds = %2286
  %2297 = landingpad { ptr, i32 }
          cleanup
  %2298 = extractvalue { ptr, i32 } %2297, 0
  store ptr %2298, ptr %12, align 8
  %2299 = extractvalue { ptr, i32 } %2297, 1
  store i32 %2299, ptr %13, align 4
  br label %2304

2300:                                             ; preds = %2289
  %2301 = landingpad { ptr, i32 }
          cleanup
  %2302 = extractvalue { ptr, i32 } %2301, 0
  store ptr %2302, ptr %12, align 8
  %2303 = extractvalue { ptr, i32 } %2301, 1
  store i32 %2303, ptr %13, align 4
  call void @_ZNSt4pairI8RcStringPKcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #9
  br label %2304

2304:                                             ; preds = %2300, %2296
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #9
  br label %2308

2305:                                             ; preds = %2291, %2283
  br label %2306

2306:                                             ; preds = %2305, %2282
  br label %2307

2307:                                             ; preds = %2306
  store i8 0, ptr %164, align 1, !tbaa !68
  br label %2200, !llvm.loop !127

2308:                                             ; preds = %2304, %2281, %2257, %2205
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #9
  br label %3680

2309:                                             ; preds = %2204
  br label %2310

2310:                                             ; preds = %2309
  store i8 0, ptr %164, align 1, !tbaa !68
  br label %2192, !llvm.loop !128

2311:                                             ; preds = %2195
  br label %3678

2312:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #9
  store i8 1, ptr %174, align 1, !tbaa !68
  br label %2313

2313:                                             ; preds = %2577, %2312
  %2314 = load i8, ptr %174, align 1, !tbaa !68, !range !64, !noundef !65
  %2315 = trunc i8 %2314 to i1
  br i1 %2315, label %2317, label %2316

2316:                                             ; preds = %2313
  store i32 220, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #9
  br label %2578

2317:                                             ; preds = %2313
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #9
  %2318 = load ptr, ptr %85, align 8, !tbaa !5
  %2319 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %2318)
          to label %2320 unwind label %2326

2320:                                             ; preds = %2317
  store ptr %2319, ptr %175, align 8, !tbaa !5
  br label %2321

2321:                                             ; preds = %2574, %2320
  %2322 = load ptr, ptr %175, align 8, !tbaa !5
  %2323 = load i8, ptr %174, align 1, !tbaa !68, !range !64, !noundef !65
  %2324 = trunc i8 %2323 to i1
  br i1 %2324, label %2330, label %2325

2325:                                             ; preds = %2321
  store i32 223, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  br label %2576

2326:                                             ; preds = %2335, %2330, %2317
  %2327 = landingpad { ptr, i32 }
          cleanup
  %2328 = extractvalue { ptr, i32 } %2327, 0
  store ptr %2328, ptr %12, align 8
  %2329 = extractvalue { ptr, i32 } %2327, 1
  store i32 %2329, ptr %13, align 4
  br label %2575

2330:                                             ; preds = %2321
  %2331 = load ptr, ptr %5, align 8, !tbaa !5
  %2332 = load ptr, ptr %7, align 8, !tbaa !5
  %2333 = load ptr, ptr %175, align 8, !tbaa !5
  %2334 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST6Struct6paramsEv(ptr noundef nonnull align 8 dereferenceable(152) %2333)
          to label %2335 unwind label %2326

2335:                                             ; preds = %2330
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %2331, ptr noundef nonnull align 8 dereferenceable(480) %2332, ptr noundef nonnull align 8 dereferenceable(48) %2334)
          to label %2336 unwind label %2326

2336:                                             ; preds = %2335
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #9
  store i8 1, ptr %176, align 1, !tbaa !68
  br label %2337

2337:                                             ; preds = %2572, %2336
  %2338 = load i8, ptr %176, align 1, !tbaa !68, !range !64, !noundef !65
  %2339 = trunc i8 %2338 to i1
  br i1 %2339, label %2341, label %2340

2340:                                             ; preds = %2337
  store i32 226, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #9
  br label %2573

2341:                                             ; preds = %2337
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #9
  %2342 = load ptr, ptr %175, align 8, !tbaa !5
  %2343 = getelementptr inbounds %"class.AST::Struct", ptr %2342, i32 0, i32 1
  store ptr %2343, ptr %177, align 8, !tbaa !5
  br label %2344

2344:                                             ; preds = %2569, %2341
  %2345 = load i8, ptr %176, align 1, !tbaa !68, !range !64, !noundef !65
  %2346 = trunc i8 %2345 to i1
  br i1 %2346, label %2348, label %2347

2347:                                             ; preds = %2344
  store i32 229, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #9
  br label %2571

2348:                                             ; preds = %2344
  %2349 = load ptr, ptr %177, align 8, !tbaa !5
  %2350 = invoke noundef i32 @_ZNK3AST10StructData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %2349)
          to label %2351 unwind label %2352

2351:                                             ; preds = %2348
  switch i32 %2350, label %2568 [
    i32 0, label %2356
    i32 1, label %2357
    i32 3, label %2380
    i32 2, label %2474
  ]

2352:                                             ; preds = %2348
  %2353 = landingpad { ptr, i32 }
          cleanup
  %2354 = extractvalue { ptr, i32 } %2353, 0
  store ptr %2354, ptr %12, align 8
  %2355 = extractvalue { ptr, i32 } %2353, 1
  store i32 %2355, ptr %13, align 4
  br label %2570

2356:                                             ; preds = %2351
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2188, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

2357:                                             ; preds = %2351
  call void @llvm.lifetime.start.p0(i64 1, ptr %178) #9
  store i8 1, ptr %178, align 1, !tbaa !68
  br label %2358

2358:                                             ; preds = %2378, %2357
  %2359 = load i8, ptr %178, align 1, !tbaa !68, !range !64, !noundef !65
  %2360 = trunc i8 %2359 to i1
  br i1 %2360, label %2362, label %2361

2361:                                             ; preds = %2358
  store i32 233, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %178) #9
  br label %2379

2362:                                             ; preds = %2358
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #9
  %2363 = load ptr, ptr %177, align 8, !tbaa !5
  %2364 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST10StructData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %2363)
          to label %2365 unwind label %2371

2365:                                             ; preds = %2362
  store ptr %2364, ptr %179, align 8, !tbaa !5
  br label %2366

2366:                                             ; preds = %2376, %2365
  %2367 = load ptr, ptr %179, align 8, !tbaa !5
  %2368 = load i8, ptr %178, align 1, !tbaa !68, !range !64, !noundef !65
  %2369 = trunc i8 %2368 to i1
  br i1 %2369, label %2375, label %2370

2370:                                             ; preds = %2366
  store i32 236, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #9
  br label %2377

2371:                                             ; preds = %2362
  %2372 = landingpad { ptr, i32 }
          cleanup
  %2373 = extractvalue { ptr, i32 } %2372, 0
  store ptr %2373, ptr %12, align 8
  %2374 = extractvalue { ptr, i32 } %2372, 1
  store i32 %2374, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %178) #9
  br label %2570

2375:                                             ; preds = %2366
  br label %2376

2376:                                             ; preds = %2375
  store i8 0, ptr %178, align 1, !tbaa !68
  br label %2366, !llvm.loop !129

2377:                                             ; preds = %2370
  br label %2378

2378:                                             ; preds = %2377
  store i8 0, ptr %178, align 1, !tbaa !68
  br label %2358, !llvm.loop !130

2379:                                             ; preds = %2361
  br label %2568

2380:                                             ; preds = %2351
  call void @llvm.lifetime.start.p0(i64 1, ptr %180) #9
  store i8 1, ptr %180, align 1, !tbaa !68
  br label %2381

2381:                                             ; preds = %2472, %2380
  %2382 = load i8, ptr %180, align 1, !tbaa !68, !range !64, !noundef !65
  %2383 = trunc i8 %2382 to i1
  br i1 %2383, label %2385, label %2384

2384:                                             ; preds = %2381
  store i32 239, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  br label %2473

2385:                                             ; preds = %2381
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #9
  %2386 = load ptr, ptr %177, align 8, !tbaa !5
  %2387 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %2386)
          to label %2388 unwind label %2394

2388:                                             ; preds = %2385
  store ptr %2387, ptr %181, align 8, !tbaa !5
  br label %2389

2389:                                             ; preds = %2469, %2388
  %2390 = load ptr, ptr %181, align 8, !tbaa !5
  %2391 = load i8, ptr %180, align 1, !tbaa !68, !range !64, !noundef !65
  %2392 = trunc i8 %2391 to i1
  br i1 %2392, label %2398, label %2393

2393:                                             ; preds = %2389
  store i32 242, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #9
  br label %2471

2394:                                             ; preds = %2385
  %2395 = landingpad { ptr, i32 }
          cleanup
  %2396 = extractvalue { ptr, i32 } %2395, 0
  store ptr %2396, ptr %12, align 8
  %2397 = extractvalue { ptr, i32 } %2395, 1
  store i32 %2397, ptr %13, align 4
  br label %2470

2398:                                             ; preds = %2389
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #9
  %2399 = load ptr, ptr %181, align 8, !tbaa !5
  %2400 = getelementptr inbounds %"struct.AST::StructData::Data_Struct", ptr %2399, i32 0, i32 0
  %2401 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2400) #9
  %2402 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %182, i32 0, i32 0
  store ptr %2401, ptr %2402, align 8
  br label %2403

2403:                                             ; preds = %2466, %2398
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #9
  %2404 = load ptr, ptr %181, align 8, !tbaa !5
  %2405 = getelementptr inbounds %"struct.AST::StructData::Data_Struct", ptr %2404, i32 0, i32 0
  %2406 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2405) #9
  %2407 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %183, i32 0, i32 0
  store ptr %2406, ptr %2407, align 8
  %2408 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %183) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #9
  br i1 %2408, label %2410, label %2409

2409:                                             ; preds = %2403
  store i32 245, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #9
  br label %2468

2410:                                             ; preds = %2403
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #9
  %2411 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  store ptr %2411, ptr %184, align 8, !tbaa !5
  %2412 = load ptr, ptr %184, align 8, !tbaa !5
  %2413 = getelementptr inbounds %"struct.AST::StructItem", ptr %2412, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2413)
          to label %2414 unwind label %2448

2414:                                             ; preds = %2410
  %2415 = load ptr, ptr %5, align 8, !tbaa !5
  %2416 = load ptr, ptr %184, align 8, !tbaa !5
  %2417 = getelementptr inbounds %"struct.AST::StructItem", ptr %2416, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %186) #9
  %2418 = getelementptr inbounds %class.anon.408, ptr %186, i32 0, i32 0
  %2419 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2419, ptr %2418, align 8, !tbaa !5
  %2420 = getelementptr inbounds %class.anon.408, ptr %186, i32 0, i32 1
  %2421 = load ptr, ptr %184, align 8, !tbaa !5
  store ptr %2421, ptr %2420, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull align 8 dereferenceable(16) %186) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2415, ptr noundef nonnull align 8 dereferenceable(24) %2417, i32 noundef 0, ptr noundef %185)
          to label %2422 unwind label %2452

2422:                                             ; preds = %2414
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %186) #9
  %2423 = load ptr, ptr %5, align 8, !tbaa !5
  %2424 = load ptr, ptr %7, align 8, !tbaa !5
  %2425 = load ptr, ptr %184, align 8, !tbaa !5
  %2426 = getelementptr inbounds %"struct.AST::StructItem", ptr %2425, i32 0, i32 3
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %2423, ptr noundef nonnull align 8 dereferenceable(480) %2424, ptr noundef nonnull align 8 dereferenceable(120) %2426)
          to label %2427 unwind label %2448

2427:                                             ; preds = %2422
  %2428 = load ptr, ptr %5, align 8, !tbaa !5
  %2429 = load ptr, ptr %184, align 8, !tbaa !5
  %2430 = getelementptr inbounds %"struct.AST::StructItem", ptr %2429, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %188) #9
  %2431 = getelementptr inbounds %class.anon.409, ptr %188, i32 0, i32 0
  %2432 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2432, ptr %2431, align 8, !tbaa !5
  %2433 = getelementptr inbounds %class.anon.409, ptr %188, i32 0, i32 1
  %2434 = load ptr, ptr %184, align 8, !tbaa !5
  store ptr %2434, ptr %2433, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %187, ptr noundef nonnull align 8 dereferenceable(16) %188) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2428, ptr noundef nonnull align 8 dereferenceable(24) %2430, i32 noundef 1, ptr noundef %187)
          to label %2435 unwind label %2456

2435:                                             ; preds = %2427
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #9
  %2436 = load ptr, ptr %184, align 8, !tbaa !5
  %2437 = getelementptr inbounds %"struct.AST::StructItem", ptr %2436, i32 0, i32 2
  %2438 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2437, ptr noundef @.str.19)
          to label %2439 unwind label %2448

2439:                                             ; preds = %2435
  br i1 %2438, label %2440, label %2464

2440:                                             ; preds = %2439
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #9
  %2441 = load ptr, ptr %181, align 8, !tbaa !5
  %2442 = getelementptr inbounds %"struct.AST::StructData::Data_Struct", ptr %2441, i32 0, i32 0
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  %2443 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.410", ptr %190, i32 0, i32 0
  %2444 = load ptr, ptr %2443, align 8
  %2445 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2442, ptr %2444)
          to label %2446 unwind label %2460

2446:                                             ; preds = %2440
  %2447 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %189, i32 0, i32 0
  store ptr %2445, ptr %2447, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %182, ptr align 8 %189, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #9
  br label %2466

2448:                                             ; preds = %2435, %2422, %2410
  %2449 = landingpad { ptr, i32 }
          cleanup
  %2450 = extractvalue { ptr, i32 } %2449, 0
  store ptr %2450, ptr %12, align 8
  %2451 = extractvalue { ptr, i32 } %2449, 1
  store i32 %2451, ptr %13, align 4
  br label %2467

2452:                                             ; preds = %2414
  %2453 = landingpad { ptr, i32 }
          cleanup
  %2454 = extractvalue { ptr, i32 } %2453, 0
  store ptr %2454, ptr %12, align 8
  %2455 = extractvalue { ptr, i32 } %2453, 1
  store i32 %2455, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %186) #9
  br label %2467

2456:                                             ; preds = %2427
  %2457 = landingpad { ptr, i32 }
          cleanup
  %2458 = extractvalue { ptr, i32 } %2457, 0
  store ptr %2458, ptr %12, align 8
  %2459 = extractvalue { ptr, i32 } %2457, 1
  store i32 %2459, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #9
  br label %2467

2460:                                             ; preds = %2440
  %2461 = landingpad { ptr, i32 }
          cleanup
  %2462 = extractvalue { ptr, i32 } %2461, 0
  store ptr %2462, ptr %12, align 8
  %2463 = extractvalue { ptr, i32 } %2461, 1
  store i32 %2463, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #9
  br label %2467

2464:                                             ; preds = %2439
  %2465 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  br label %2466

2466:                                             ; preds = %2464, %2446
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #9
  br label %2403, !llvm.loop !131

2467:                                             ; preds = %2460, %2456, %2452, %2448
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #9
  br label %2470

2468:                                             ; preds = %2409
  br label %2469

2469:                                             ; preds = %2468
  store i8 0, ptr %180, align 1, !tbaa !68
  br label %2389, !llvm.loop !132

2470:                                             ; preds = %2467, %2394
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  br label %2570

2471:                                             ; preds = %2393
  br label %2472

2472:                                             ; preds = %2471
  store i8 0, ptr %180, align 1, !tbaa !68
  br label %2381, !llvm.loop !133

2473:                                             ; preds = %2384
  br label %2568

2474:                                             ; preds = %2351
  call void @llvm.lifetime.start.p0(i64 1, ptr %191) #9
  store i8 1, ptr %191, align 1, !tbaa !68
  br label %2475

2475:                                             ; preds = %2566, %2474
  %2476 = load i8, ptr %191, align 1, !tbaa !68, !range !64, !noundef !65
  %2477 = trunc i8 %2476 to i1
  br i1 %2477, label %2479, label %2478

2478:                                             ; preds = %2475
  store i32 247, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #9
  br label %2567

2479:                                             ; preds = %2475
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #9
  %2480 = load ptr, ptr %177, align 8, !tbaa !5
  %2481 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %2480)
          to label %2482 unwind label %2488

2482:                                             ; preds = %2479
  store ptr %2481, ptr %192, align 8, !tbaa !5
  br label %2483

2483:                                             ; preds = %2563, %2482
  %2484 = load ptr, ptr %192, align 8, !tbaa !5
  %2485 = load i8, ptr %191, align 1, !tbaa !68, !range !64, !noundef !65
  %2486 = trunc i8 %2485 to i1
  br i1 %2486, label %2492, label %2487

2487:                                             ; preds = %2483
  store i32 250, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #9
  br label %2565

2488:                                             ; preds = %2479
  %2489 = landingpad { ptr, i32 }
          cleanup
  %2490 = extractvalue { ptr, i32 } %2489, 0
  store ptr %2490, ptr %12, align 8
  %2491 = extractvalue { ptr, i32 } %2489, 1
  store i32 %2491, ptr %13, align 4
  br label %2564

2492:                                             ; preds = %2483
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #9
  %2493 = load ptr, ptr %192, align 8, !tbaa !5
  %2494 = getelementptr inbounds %"struct.AST::StructData::Data_Tuple", ptr %2493, i32 0, i32 0
  %2495 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2494) #9
  %2496 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %193, i32 0, i32 0
  store ptr %2495, ptr %2496, align 8
  br label %2497

2497:                                             ; preds = %2560, %2492
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #9
  %2498 = load ptr, ptr %192, align 8, !tbaa !5
  %2499 = getelementptr inbounds %"struct.AST::StructData::Data_Tuple", ptr %2498, i32 0, i32 0
  %2500 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2499) #9
  %2501 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %194, i32 0, i32 0
  store ptr %2500, ptr %2501, align 8
  %2502 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull align 8 dereferenceable(8) %194) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #9
  br i1 %2502, label %2504, label %2503

2503:                                             ; preds = %2497
  store i32 253, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #9
  br label %2562

2504:                                             ; preds = %2497
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #9
  %2505 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %193) #9
  store ptr %2505, ptr %195, align 8, !tbaa !5
  %2506 = load ptr, ptr %195, align 8, !tbaa !5
  %2507 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2506, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2507)
          to label %2508 unwind label %2542

2508:                                             ; preds = %2504
  %2509 = load ptr, ptr %5, align 8, !tbaa !5
  %2510 = load ptr, ptr %195, align 8, !tbaa !5
  %2511 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2510, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %197) #9
  %2512 = getelementptr inbounds %class.anon.412, ptr %197, i32 0, i32 0
  %2513 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2513, ptr %2512, align 8, !tbaa !5
  %2514 = getelementptr inbounds %class.anon.412, ptr %197, i32 0, i32 1
  %2515 = load ptr, ptr %195, align 8, !tbaa !5
  store ptr %2515, ptr %2514, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull align 8 dereferenceable(16) %197) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2509, ptr noundef nonnull align 8 dereferenceable(24) %2511, i32 noundef 0, ptr noundef %196)
          to label %2516 unwind label %2546

2516:                                             ; preds = %2508
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #9
  %2517 = load ptr, ptr %5, align 8, !tbaa !5
  %2518 = load ptr, ptr %7, align 8, !tbaa !5
  %2519 = load ptr, ptr %195, align 8, !tbaa !5
  %2520 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2519, i32 0, i32 2
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %2517, ptr noundef nonnull align 8 dereferenceable(480) %2518, ptr noundef nonnull align 8 dereferenceable(120) %2520)
          to label %2521 unwind label %2542

2521:                                             ; preds = %2516
  %2522 = load ptr, ptr %5, align 8, !tbaa !5
  %2523 = load ptr, ptr %195, align 8, !tbaa !5
  %2524 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2523, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %199) #9
  %2525 = getelementptr inbounds %class.anon.413, ptr %199, i32 0, i32 0
  %2526 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2526, ptr %2525, align 8, !tbaa !5
  %2527 = getelementptr inbounds %class.anon.413, ptr %199, i32 0, i32 1
  %2528 = load ptr, ptr %195, align 8, !tbaa !5
  store ptr %2528, ptr %2527, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull align 8 dereferenceable(16) %199) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2522, ptr noundef nonnull align 8 dereferenceable(24) %2524, i32 noundef 1, ptr noundef %198)
          to label %2529 unwind label %2550

2529:                                             ; preds = %2521
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #9
  %2530 = load ptr, ptr %195, align 8, !tbaa !5
  %2531 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2530, i32 0, i32 2
  %2532 = invoke noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120) %2531)
          to label %2533 unwind label %2542

2533:                                             ; preds = %2529
  br i1 %2532, label %2558, label %2534

2534:                                             ; preds = %2533
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #9
  %2535 = load ptr, ptr %192, align 8, !tbaa !5
  %2536 = getelementptr inbounds %"struct.AST::StructData::Data_Tuple", ptr %2535, i32 0, i32 0
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST9TupleItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %193) #9
  %2537 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.414", ptr %201, i32 0, i32 0
  %2538 = load ptr, ptr %2537, align 8
  %2539 = invoke ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2536, ptr %2538)
          to label %2540 unwind label %2554

2540:                                             ; preds = %2534
  %2541 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %200, i32 0, i32 0
  store ptr %2539, ptr %2541, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %193, ptr align 8 %200, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  br label %2560

2542:                                             ; preds = %2529, %2516, %2504
  %2543 = landingpad { ptr, i32 }
          cleanup
  %2544 = extractvalue { ptr, i32 } %2543, 0
  store ptr %2544, ptr %12, align 8
  %2545 = extractvalue { ptr, i32 } %2543, 1
  store i32 %2545, ptr %13, align 4
  br label %2561

2546:                                             ; preds = %2508
  %2547 = landingpad { ptr, i32 }
          cleanup
  %2548 = extractvalue { ptr, i32 } %2547, 0
  store ptr %2548, ptr %12, align 8
  %2549 = extractvalue { ptr, i32 } %2547, 1
  store i32 %2549, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #9
  br label %2561

2550:                                             ; preds = %2521
  %2551 = landingpad { ptr, i32 }
          cleanup
  %2552 = extractvalue { ptr, i32 } %2551, 0
  store ptr %2552, ptr %12, align 8
  %2553 = extractvalue { ptr, i32 } %2551, 1
  store i32 %2553, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %198) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #9
  br label %2561

2554:                                             ; preds = %2534
  %2555 = landingpad { ptr, i32 }
          cleanup
  %2556 = extractvalue { ptr, i32 } %2555, 0
  store ptr %2556, ptr %12, align 8
  %2557 = extractvalue { ptr, i32 } %2555, 1
  store i32 %2557, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  br label %2561

2558:                                             ; preds = %2533
  %2559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %193) #9
  br label %2560

2560:                                             ; preds = %2558, %2540
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #9
  br label %2497, !llvm.loop !134

2561:                                             ; preds = %2554, %2550, %2546, %2542
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #9
  br label %2564

2562:                                             ; preds = %2503
  br label %2563

2563:                                             ; preds = %2562
  store i8 0, ptr %191, align 1, !tbaa !68
  br label %2483, !llvm.loop !135

2564:                                             ; preds = %2561, %2488
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #9
  br label %2570

2565:                                             ; preds = %2487
  br label %2566

2566:                                             ; preds = %2565
  store i8 0, ptr %191, align 1, !tbaa !68
  br label %2475, !llvm.loop !136

2567:                                             ; preds = %2478
  br label %2568

2568:                                             ; preds = %2567, %2473, %2379, %2351
  br label %2569

2569:                                             ; preds = %2568
  store i8 0, ptr %176, align 1, !tbaa !68
  br label %2344, !llvm.loop !137

2570:                                             ; preds = %2564, %2470, %2371, %2352
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #9
  br label %2575

2571:                                             ; preds = %2347
  br label %2572

2572:                                             ; preds = %2571
  store i8 0, ptr %176, align 1, !tbaa !68
  br label %2337, !llvm.loop !138

2573:                                             ; preds = %2340
  br label %2574

2574:                                             ; preds = %2573
  store i8 0, ptr %174, align 1, !tbaa !68
  br label %2321, !llvm.loop !139

2575:                                             ; preds = %2570, %2326
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #9
  br label %3680

2576:                                             ; preds = %2325
  br label %2577

2577:                                             ; preds = %2576
  store i8 0, ptr %174, align 1, !tbaa !68
  br label %2313, !llvm.loop !140

2578:                                             ; preds = %2316
  br label %3678

2579:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #9
  store i8 1, ptr %202, align 1, !tbaa !68
  br label %2580

2580:                                             ; preds = %2946, %2579
  %2581 = load i8, ptr %202, align 1, !tbaa !68, !range !64, !noundef !65
  %2582 = trunc i8 %2581 to i1
  br i1 %2582, label %2584, label %2583

2583:                                             ; preds = %2580
  store i32 255, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #9
  br label %2947

2584:                                             ; preds = %2580
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #9
  %2585 = load ptr, ptr %85, align 8, !tbaa !5
  %2586 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %2585)
          to label %2587 unwind label %2593

2587:                                             ; preds = %2584
  store ptr %2586, ptr %203, align 8, !tbaa !5
  br label %2588

2588:                                             ; preds = %2943, %2587
  %2589 = load ptr, ptr %203, align 8, !tbaa !5
  %2590 = load i8, ptr %202, align 1, !tbaa !68, !range !64, !noundef !65
  %2591 = trunc i8 %2590 to i1
  br i1 %2591, label %2597, label %2592

2592:                                             ; preds = %2588
  store i32 258, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #9
  br label %2945

2593:                                             ; preds = %2602, %2597, %2584
  %2594 = landingpad { ptr, i32 }
          cleanup
  %2595 = extractvalue { ptr, i32 } %2594, 0
  store ptr %2595, ptr %12, align 8
  %2596 = extractvalue { ptr, i32 } %2594, 1
  store i32 %2596, ptr %13, align 4
  br label %2944

2597:                                             ; preds = %2588
  %2598 = load ptr, ptr %5, align 8, !tbaa !5
  %2599 = load ptr, ptr %7, align 8, !tbaa !5
  %2600 = load ptr, ptr %203, align 8, !tbaa !5
  %2601 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST4Enum6paramsEv(ptr noundef nonnull align 8 dereferenceable(80) %2600)
          to label %2602 unwind label %2593

2602:                                             ; preds = %2597
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %2598, ptr noundef nonnull align 8 dereferenceable(480) %2599, ptr noundef nonnull align 8 dereferenceable(48) %2601)
          to label %2603 unwind label %2593

2603:                                             ; preds = %2602
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #9
  %2604 = load ptr, ptr %203, align 8, !tbaa !5
  %2605 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %2604)
          to label %2606 unwind label %2616

2606:                                             ; preds = %2603
  store ptr %2605, ptr %204, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #9
  %2607 = load ptr, ptr %204, align 8, !tbaa !5
  %2608 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2607) #9
  %2609 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %205, i32 0, i32 0
  store ptr %2608, ptr %2609, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #9
  %2610 = load ptr, ptr %204, align 8, !tbaa !5
  %2611 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2610) #9
  %2612 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %206, i32 0, i32 0
  store ptr %2611, ptr %2612, align 8
  br label %2613

2613:                                             ; preds = %2890, %2606
  %2614 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull align 8 dereferenceable(8) %206) #9
  br i1 %2614, label %2620, label %2615

2615:                                             ; preds = %2613
  store i32 261, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #9
  br label %2898

2616:                                             ; preds = %2603
  %2617 = landingpad { ptr, i32 }
          cleanup
  %2618 = extractvalue { ptr, i32 } %2617, 0
  store ptr %2618, ptr %12, align 8
  %2619 = extractvalue { ptr, i32 } %2617, 1
  store i32 %2619, ptr %13, align 4
  br label %2897

2620:                                             ; preds = %2613
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #9
  %2621 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %205) #9
  store ptr %2621, ptr %207, align 8, !tbaa !5
  %2622 = load ptr, ptr %207, align 8, !tbaa !5
  %2623 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %2622, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2623)
          to label %2624 unwind label %2637

2624:                                             ; preds = %2620
  %2625 = load ptr, ptr %5, align 8, !tbaa !5
  %2626 = load ptr, ptr %207, align 8, !tbaa !5
  %2627 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %2626, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %209) #9
  %2628 = getelementptr inbounds %class.anon.415, ptr %209, i32 0, i32 0
  %2629 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2629, ptr %2628, align 8, !tbaa !5
  %2630 = getelementptr inbounds %class.anon.415, ptr %209, i32 0, i32 1
  %2631 = load ptr, ptr %207, align 8, !tbaa !5
  store ptr %2631, ptr %2630, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull align 8 dereferenceable(16) %209) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2625, ptr noundef nonnull align 8 dereferenceable(24) %2627, i32 noundef 0, ptr noundef %208)
          to label %2632 unwind label %2641

2632:                                             ; preds = %2624
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %210) #9
  store i8 1, ptr %210, align 1, !tbaa !68
  br label %2633

2633:                                             ; preds = %2880, %2632
  %2634 = load i8, ptr %210, align 1, !tbaa !68, !range !64, !noundef !65
  %2635 = trunc i8 %2634 to i1
  br i1 %2635, label %2645, label %2636

2636:                                             ; preds = %2633
  store i32 263, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #9
  br label %2881

2637:                                             ; preds = %2620
  %2638 = landingpad { ptr, i32 }
          cleanup
  %2639 = extractvalue { ptr, i32 } %2638, 0
  store ptr %2639, ptr %12, align 8
  %2640 = extractvalue { ptr, i32 } %2638, 1
  store i32 %2640, ptr %13, align 4
  br label %2896

2641:                                             ; preds = %2624
  %2642 = landingpad { ptr, i32 }
          cleanup
  %2643 = extractvalue { ptr, i32 } %2642, 0
  store ptr %2643, ptr %12, align 8
  %2644 = extractvalue { ptr, i32 } %2642, 1
  store i32 %2644, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #9
  br label %2896

2645:                                             ; preds = %2633
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #9
  %2646 = load ptr, ptr %207, align 8, !tbaa !5
  %2647 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %2646, i32 0, i32 2
  store ptr %2647, ptr %211, align 8, !tbaa !5
  br label %2648

2648:                                             ; preds = %2877, %2645
  %2649 = load i8, ptr %210, align 1, !tbaa !68, !range !64, !noundef !65
  %2650 = trunc i8 %2649 to i1
  br i1 %2650, label %2652, label %2651

2651:                                             ; preds = %2648
  store i32 266, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #9
  br label %2879

2652:                                             ; preds = %2648
  %2653 = load ptr, ptr %211, align 8, !tbaa !5
  %2654 = invoke noundef i32 @_ZNK3AST15EnumVariantData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %2653)
          to label %2655 unwind label %2656

2655:                                             ; preds = %2652
  switch i32 %2654, label %2876 [
    i32 0, label %2660
    i32 1, label %2661
    i32 2, label %2688
    i32 3, label %2782
  ]

2656:                                             ; preds = %2652
  %2657 = landingpad { ptr, i32 }
          cleanup
  %2658 = extractvalue { ptr, i32 } %2657, 0
  store ptr %2658, ptr %12, align 8
  %2659 = extractvalue { ptr, i32 } %2657, 1
  store i32 %2659, ptr %13, align 4
  br label %2878

2660:                                             ; preds = %2655
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2226, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

2661:                                             ; preds = %2655
  call void @llvm.lifetime.start.p0(i64 1, ptr %212) #9
  store i8 1, ptr %212, align 1, !tbaa !68
  br label %2662

2662:                                             ; preds = %2686, %2661
  %2663 = load i8, ptr %212, align 1, !tbaa !68, !range !64, !noundef !65
  %2664 = trunc i8 %2663 to i1
  br i1 %2664, label %2666, label %2665

2665:                                             ; preds = %2662
  store i32 270, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #9
  br label %2687

2666:                                             ; preds = %2662
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #9
  %2667 = load ptr, ptr %211, align 8, !tbaa !5
  %2668 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST15EnumVariantData8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(32) %2667)
          to label %2669 unwind label %2675

2669:                                             ; preds = %2666
  store ptr %2668, ptr %213, align 8, !tbaa !5
  br label %2670

2670:                                             ; preds = %2684, %2669
  %2671 = load ptr, ptr %213, align 8, !tbaa !5
  %2672 = load i8, ptr %212, align 1, !tbaa !68, !range !64, !noundef !65
  %2673 = trunc i8 %2672 to i1
  br i1 %2673, label %2679, label %2674

2674:                                             ; preds = %2670
  store i32 273, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #9
  br label %2685

2675:                                             ; preds = %2679, %2666
  %2676 = landingpad { ptr, i32 }
          cleanup
  %2677 = extractvalue { ptr, i32 } %2676, 0
  store ptr %2677, ptr %12, align 8
  %2678 = extractvalue { ptr, i32 } %2676, 1
  store i32 %2678, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #9
  br label %2878

2679:                                             ; preds = %2670
  %2680 = load ptr, ptr %5, align 8, !tbaa !5
  %2681 = load ptr, ptr %213, align 8, !tbaa !5
  %2682 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Value", ptr %2681, i32 0, i32 0
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %2680, ptr noundef nonnull align 8 dereferenceable(16) %2682)
          to label %2683 unwind label %2675

2683:                                             ; preds = %2679
  br label %2684

2684:                                             ; preds = %2683
  store i8 0, ptr %212, align 1, !tbaa !68
  br label %2670, !llvm.loop !141

2685:                                             ; preds = %2674
  br label %2686

2686:                                             ; preds = %2685
  store i8 0, ptr %212, align 1, !tbaa !68
  br label %2662, !llvm.loop !142

2687:                                             ; preds = %2665
  br label %2876

2688:                                             ; preds = %2655
  call void @llvm.lifetime.start.p0(i64 1, ptr %214) #9
  store i8 1, ptr %214, align 1, !tbaa !68
  br label %2689

2689:                                             ; preds = %2780, %2688
  %2690 = load i8, ptr %214, align 1, !tbaa !68, !range !64, !noundef !65
  %2691 = trunc i8 %2690 to i1
  br i1 %2691, label %2693, label %2692

2692:                                             ; preds = %2689
  store i32 276, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #9
  br label %2781

2693:                                             ; preds = %2689
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #9
  %2694 = load ptr, ptr %211, align 8, !tbaa !5
  %2695 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %2694)
          to label %2696 unwind label %2702

2696:                                             ; preds = %2693
  store ptr %2695, ptr %215, align 8, !tbaa !5
  br label %2697

2697:                                             ; preds = %2777, %2696
  %2698 = load ptr, ptr %215, align 8, !tbaa !5
  %2699 = load i8, ptr %214, align 1, !tbaa !68, !range !64, !noundef !65
  %2700 = trunc i8 %2699 to i1
  br i1 %2700, label %2706, label %2701

2701:                                             ; preds = %2697
  store i32 279, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #9
  br label %2779

2702:                                             ; preds = %2693
  %2703 = landingpad { ptr, i32 }
          cleanup
  %2704 = extractvalue { ptr, i32 } %2703, 0
  store ptr %2704, ptr %12, align 8
  %2705 = extractvalue { ptr, i32 } %2703, 1
  store i32 %2705, ptr %13, align 4
  br label %2778

2706:                                             ; preds = %2697
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #9
  %2707 = load ptr, ptr %215, align 8, !tbaa !5
  %2708 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Tuple", ptr %2707, i32 0, i32 0
  %2709 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2708) #9
  %2710 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %216, i32 0, i32 0
  store ptr %2709, ptr %2710, align 8
  br label %2711

2711:                                             ; preds = %2774, %2706
  call void @llvm.lifetime.start.p0(i64 8, ptr %217) #9
  %2712 = load ptr, ptr %215, align 8, !tbaa !5
  %2713 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Tuple", ptr %2712, i32 0, i32 0
  %2714 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2713) #9
  %2715 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %217, i32 0, i32 0
  store ptr %2714, ptr %2715, align 8
  %2716 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(8) %217) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #9
  br i1 %2716, label %2718, label %2717

2717:                                             ; preds = %2711
  store i32 282, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #9
  br label %2776

2718:                                             ; preds = %2711
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #9
  %2719 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %216) #9
  store ptr %2719, ptr %218, align 8, !tbaa !5
  %2720 = load ptr, ptr %218, align 8, !tbaa !5
  %2721 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2720, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2721)
          to label %2722 unwind label %2756

2722:                                             ; preds = %2718
  %2723 = load ptr, ptr %5, align 8, !tbaa !5
  %2724 = load ptr, ptr %218, align 8, !tbaa !5
  %2725 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2724, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %220) #9
  %2726 = getelementptr inbounds %class.anon.416, ptr %220, i32 0, i32 0
  %2727 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2727, ptr %2726, align 8, !tbaa !5
  %2728 = getelementptr inbounds %class.anon.416, ptr %220, i32 0, i32 1
  %2729 = load ptr, ptr %218, align 8, !tbaa !5
  store ptr %2729, ptr %2728, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull align 8 dereferenceable(16) %220) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2723, ptr noundef nonnull align 8 dereferenceable(24) %2725, i32 noundef 0, ptr noundef %219)
          to label %2730 unwind label %2760

2730:                                             ; preds = %2722
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #9
  %2731 = load ptr, ptr %5, align 8, !tbaa !5
  %2732 = load ptr, ptr %7, align 8, !tbaa !5
  %2733 = load ptr, ptr %218, align 8, !tbaa !5
  %2734 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2733, i32 0, i32 2
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %2731, ptr noundef nonnull align 8 dereferenceable(480) %2732, ptr noundef nonnull align 8 dereferenceable(120) %2734)
          to label %2735 unwind label %2756

2735:                                             ; preds = %2730
  %2736 = load ptr, ptr %5, align 8, !tbaa !5
  %2737 = load ptr, ptr %218, align 8, !tbaa !5
  %2738 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2737, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #9
  %2739 = getelementptr inbounds %class.anon.417, ptr %222, i32 0, i32 0
  %2740 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2740, ptr %2739, align 8, !tbaa !5
  %2741 = getelementptr inbounds %class.anon.417, ptr %222, i32 0, i32 1
  %2742 = load ptr, ptr %218, align 8, !tbaa !5
  store ptr %2742, ptr %2741, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef nonnull align 8 dereferenceable(16) %222) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2736, ptr noundef nonnull align 8 dereferenceable(24) %2738, i32 noundef 0, ptr noundef %221)
          to label %2743 unwind label %2764

2743:                                             ; preds = %2735
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  %2744 = load ptr, ptr %218, align 8, !tbaa !5
  %2745 = getelementptr inbounds %"struct.AST::TupleItem", ptr %2744, i32 0, i32 2
  %2746 = invoke noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120) %2745)
          to label %2747 unwind label %2756

2747:                                             ; preds = %2743
  br i1 %2746, label %2772, label %2748

2748:                                             ; preds = %2747
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #9
  %2749 = load ptr, ptr %215, align 8, !tbaa !5
  %2750 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Tuple", ptr %2749, i32 0, i32 0
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST9TupleItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(8) %216) #9
  %2751 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.414", ptr %224, i32 0, i32 0
  %2752 = load ptr, ptr %2751, align 8
  %2753 = invoke ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2750, ptr %2752)
          to label %2754 unwind label %2768

2754:                                             ; preds = %2748
  %2755 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.411", ptr %223, i32 0, i32 0
  store ptr %2753, ptr %2755, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %216, ptr align 8 %223, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #9
  br label %2774

2756:                                             ; preds = %2743, %2730, %2718
  %2757 = landingpad { ptr, i32 }
          cleanup
  %2758 = extractvalue { ptr, i32 } %2757, 0
  store ptr %2758, ptr %12, align 8
  %2759 = extractvalue { ptr, i32 } %2757, 1
  store i32 %2759, ptr %13, align 4
  br label %2775

2760:                                             ; preds = %2722
  %2761 = landingpad { ptr, i32 }
          cleanup
  %2762 = extractvalue { ptr, i32 } %2761, 0
  store ptr %2762, ptr %12, align 8
  %2763 = extractvalue { ptr, i32 } %2761, 1
  store i32 %2763, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #9
  br label %2775

2764:                                             ; preds = %2735
  %2765 = landingpad { ptr, i32 }
          cleanup
  %2766 = extractvalue { ptr, i32 } %2765, 0
  store ptr %2766, ptr %12, align 8
  %2767 = extractvalue { ptr, i32 } %2765, 1
  store i32 %2767, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  br label %2775

2768:                                             ; preds = %2748
  %2769 = landingpad { ptr, i32 }
          cleanup
  %2770 = extractvalue { ptr, i32 } %2769, 0
  store ptr %2770, ptr %12, align 8
  %2771 = extractvalue { ptr, i32 } %2769, 1
  store i32 %2771, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #9
  br label %2775

2772:                                             ; preds = %2747
  %2773 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %216) #9
  br label %2774

2774:                                             ; preds = %2772, %2754
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #9
  br label %2711, !llvm.loop !143

2775:                                             ; preds = %2768, %2764, %2760, %2756
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #9
  br label %2778

2776:                                             ; preds = %2717
  br label %2777

2777:                                             ; preds = %2776
  store i8 0, ptr %214, align 1, !tbaa !68
  br label %2697, !llvm.loop !144

2778:                                             ; preds = %2775, %2702
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #9
  br label %2878

2779:                                             ; preds = %2701
  br label %2780

2780:                                             ; preds = %2779
  store i8 0, ptr %214, align 1, !tbaa !68
  br label %2689, !llvm.loop !145

2781:                                             ; preds = %2692
  br label %2876

2782:                                             ; preds = %2655
  call void @llvm.lifetime.start.p0(i64 1, ptr %225) #9
  store i8 1, ptr %225, align 1, !tbaa !68
  br label %2783

2783:                                             ; preds = %2874, %2782
  %2784 = load i8, ptr %225, align 1, !tbaa !68, !range !64, !noundef !65
  %2785 = trunc i8 %2784 to i1
  br i1 %2785, label %2787, label %2786

2786:                                             ; preds = %2783
  store i32 284, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %225) #9
  br label %2875

2787:                                             ; preds = %2783
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #9
  %2788 = load ptr, ptr %211, align 8, !tbaa !5
  %2789 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %2788)
          to label %2790 unwind label %2796

2790:                                             ; preds = %2787
  store ptr %2789, ptr %226, align 8, !tbaa !5
  br label %2791

2791:                                             ; preds = %2871, %2790
  %2792 = load ptr, ptr %226, align 8, !tbaa !5
  %2793 = load i8, ptr %225, align 1, !tbaa !68, !range !64, !noundef !65
  %2794 = trunc i8 %2793 to i1
  br i1 %2794, label %2800, label %2795

2795:                                             ; preds = %2791
  store i32 287, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #9
  br label %2873

2796:                                             ; preds = %2787
  %2797 = landingpad { ptr, i32 }
          cleanup
  %2798 = extractvalue { ptr, i32 } %2797, 0
  store ptr %2798, ptr %12, align 8
  %2799 = extractvalue { ptr, i32 } %2797, 1
  store i32 %2799, ptr %13, align 4
  br label %2872

2800:                                             ; preds = %2791
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #9
  %2801 = load ptr, ptr %226, align 8, !tbaa !5
  %2802 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Struct", ptr %2801, i32 0, i32 0
  %2803 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2802) #9
  %2804 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %227, i32 0, i32 0
  store ptr %2803, ptr %2804, align 8
  br label %2805

2805:                                             ; preds = %2868, %2800
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #9
  %2806 = load ptr, ptr %226, align 8, !tbaa !5
  %2807 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Struct", ptr %2806, i32 0, i32 0
  %2808 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2807) #9
  %2809 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %228, i32 0, i32 0
  store ptr %2808, ptr %2809, align 8
  %2810 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #9
  br i1 %2810, label %2812, label %2811

2811:                                             ; preds = %2805
  store i32 290, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #9
  br label %2870

2812:                                             ; preds = %2805
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #9
  %2813 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %227) #9
  store ptr %2813, ptr %229, align 8, !tbaa !5
  %2814 = load ptr, ptr %229, align 8, !tbaa !5
  %2815 = getelementptr inbounds %"struct.AST::StructItem", ptr %2814, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2815)
          to label %2816 unwind label %2850

2816:                                             ; preds = %2812
  %2817 = load ptr, ptr %5, align 8, !tbaa !5
  %2818 = load ptr, ptr %229, align 8, !tbaa !5
  %2819 = getelementptr inbounds %"struct.AST::StructItem", ptr %2818, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %231) #9
  %2820 = getelementptr inbounds %class.anon.418, ptr %231, i32 0, i32 0
  %2821 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2821, ptr %2820, align 8, !tbaa !5
  %2822 = getelementptr inbounds %class.anon.418, ptr %231, i32 0, i32 1
  %2823 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %2823, ptr %2822, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef nonnull align 8 dereferenceable(16) %231) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2817, ptr noundef nonnull align 8 dereferenceable(24) %2819, i32 noundef 0, ptr noundef %230)
          to label %2824 unwind label %2854

2824:                                             ; preds = %2816
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %231) #9
  %2825 = load ptr, ptr %5, align 8, !tbaa !5
  %2826 = load ptr, ptr %7, align 8, !tbaa !5
  %2827 = load ptr, ptr %229, align 8, !tbaa !5
  %2828 = getelementptr inbounds %"struct.AST::StructItem", ptr %2827, i32 0, i32 3
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %2825, ptr noundef nonnull align 8 dereferenceable(480) %2826, ptr noundef nonnull align 8 dereferenceable(120) %2828)
          to label %2829 unwind label %2850

2829:                                             ; preds = %2824
  %2830 = load ptr, ptr %5, align 8, !tbaa !5
  %2831 = load ptr, ptr %229, align 8, !tbaa !5
  %2832 = getelementptr inbounds %"struct.AST::StructItem", ptr %2831, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %233) #9
  %2833 = getelementptr inbounds %class.anon.419, ptr %233, i32 0, i32 0
  %2834 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2834, ptr %2833, align 8, !tbaa !5
  %2835 = getelementptr inbounds %class.anon.419, ptr %233, i32 0, i32 1
  %2836 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %2836, ptr %2835, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef nonnull align 8 dereferenceable(16) %233) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2830, ptr noundef nonnull align 8 dereferenceable(24) %2832, i32 noundef 1, ptr noundef %232)
          to label %2837 unwind label %2858

2837:                                             ; preds = %2829
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #9
  %2838 = load ptr, ptr %229, align 8, !tbaa !5
  %2839 = getelementptr inbounds %"struct.AST::StructItem", ptr %2838, i32 0, i32 2
  %2840 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2839, ptr noundef @.str.19)
          to label %2841 unwind label %2850

2841:                                             ; preds = %2837
  br i1 %2840, label %2842, label %2866

2842:                                             ; preds = %2841
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #9
  %2843 = load ptr, ptr %226, align 8, !tbaa !5
  %2844 = getelementptr inbounds %"struct.AST::EnumVariantData::Data_Struct", ptr %2843, i32 0, i32 0
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %227) #9
  %2845 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.410", ptr %235, i32 0, i32 0
  %2846 = load ptr, ptr %2845, align 8
  %2847 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2844, ptr %2846)
          to label %2848 unwind label %2862

2848:                                             ; preds = %2842
  %2849 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %234, i32 0, i32 0
  store ptr %2847, ptr %2849, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %227, ptr align 8 %234, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #9
  br label %2868

2850:                                             ; preds = %2837, %2824, %2812
  %2851 = landingpad { ptr, i32 }
          cleanup
  %2852 = extractvalue { ptr, i32 } %2851, 0
  store ptr %2852, ptr %12, align 8
  %2853 = extractvalue { ptr, i32 } %2851, 1
  store i32 %2853, ptr %13, align 4
  br label %2869

2854:                                             ; preds = %2816
  %2855 = landingpad { ptr, i32 }
          cleanup
  %2856 = extractvalue { ptr, i32 } %2855, 0
  store ptr %2856, ptr %12, align 8
  %2857 = extractvalue { ptr, i32 } %2855, 1
  store i32 %2857, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %231) #9
  br label %2869

2858:                                             ; preds = %2829
  %2859 = landingpad { ptr, i32 }
          cleanup
  %2860 = extractvalue { ptr, i32 } %2859, 0
  store ptr %2860, ptr %12, align 8
  %2861 = extractvalue { ptr, i32 } %2859, 1
  store i32 %2861, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %233) #9
  br label %2869

2862:                                             ; preds = %2842
  %2863 = landingpad { ptr, i32 }
          cleanup
  %2864 = extractvalue { ptr, i32 } %2863, 0
  store ptr %2864, ptr %12, align 8
  %2865 = extractvalue { ptr, i32 } %2863, 1
  store i32 %2865, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #9
  br label %2869

2866:                                             ; preds = %2841
  %2867 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %227) #9
  br label %2868

2868:                                             ; preds = %2866, %2848
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #9
  br label %2805, !llvm.loop !146

2869:                                             ; preds = %2862, %2858, %2854, %2850
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #9
  br label %2872

2870:                                             ; preds = %2811
  br label %2871

2871:                                             ; preds = %2870
  store i8 0, ptr %225, align 1, !tbaa !68
  br label %2791, !llvm.loop !147

2872:                                             ; preds = %2869, %2796
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %225) #9
  br label %2878

2873:                                             ; preds = %2795
  br label %2874

2874:                                             ; preds = %2873
  store i8 0, ptr %225, align 1, !tbaa !68
  br label %2783, !llvm.loop !148

2875:                                             ; preds = %2786
  br label %2876

2876:                                             ; preds = %2875, %2781, %2687, %2655
  br label %2877

2877:                                             ; preds = %2876
  store i8 0, ptr %210, align 1, !tbaa !68
  br label %2648, !llvm.loop !149

2878:                                             ; preds = %2872, %2778, %2675, %2656
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #9
  br label %2896

2879:                                             ; preds = %2651
  br label %2880

2880:                                             ; preds = %2879
  store i8 0, ptr %210, align 1, !tbaa !68
  br label %2633, !llvm.loop !150

2881:                                             ; preds = %2636
  %2882 = load ptr, ptr %5, align 8, !tbaa !5
  %2883 = load ptr, ptr %207, align 8, !tbaa !5
  %2884 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %2883, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %237) #9
  %2885 = getelementptr inbounds %class.anon.420, ptr %237, i32 0, i32 0
  %2886 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2886, ptr %2885, align 8, !tbaa !5
  %2887 = getelementptr inbounds %class.anon.420, ptr %237, i32 0, i32 1
  %2888 = load ptr, ptr %207, align 8, !tbaa !5
  store ptr %2888, ptr %2887, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %236, ptr noundef nonnull align 8 dereferenceable(16) %237) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2882, ptr noundef nonnull align 8 dereferenceable(24) %2884, i32 noundef 1, ptr noundef %236)
          to label %2889 unwind label %2892

2889:                                             ; preds = %2881
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %237) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #9
  br label %2890

2890:                                             ; preds = %2889
  %2891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %205) #9
  br label %2613

2892:                                             ; preds = %2881
  %2893 = landingpad { ptr, i32 }
          cleanup
  %2894 = extractvalue { ptr, i32 } %2893, 0
  store ptr %2894, ptr %12, align 8
  %2895 = extractvalue { ptr, i32 } %2893, 1
  store i32 %2895, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %237) #9
  br label %2896

2896:                                             ; preds = %2892, %2878, %2641, %2637
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #9
  br label %2897

2897:                                             ; preds = %2896, %2616
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #9
  br label %2944

2898:                                             ; preds = %2615
  call void @llvm.lifetime.start.p0(i64 8, ptr %238) #9
  %2899 = load ptr, ptr %203, align 8, !tbaa !5
  %2900 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %2899)
          to label %2901 unwind label %2912

2901:                                             ; preds = %2898
  %2902 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2900) #9
  %2903 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %238, i32 0, i32 0
  store ptr %2902, ptr %2903, align 8
  br label %2904

2904:                                             ; preds = %2940, %2901
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #9
  %2905 = load ptr, ptr %203, align 8, !tbaa !5
  %2906 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %2905)
          to label %2907 unwind label %2916

2907:                                             ; preds = %2904
  %2908 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2906) #9
  %2909 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %239, i32 0, i32 0
  store ptr %2908, ptr %2909, align 8
  %2910 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(8) %239) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #9
  br i1 %2910, label %2920, label %2911

2911:                                             ; preds = %2907
  store i32 292, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #9
  br label %2942

2912:                                             ; preds = %2920, %2898
  %2913 = landingpad { ptr, i32 }
          cleanup
  %2914 = extractvalue { ptr, i32 } %2913, 0
  store ptr %2914, ptr %12, align 8
  %2915 = extractvalue { ptr, i32 } %2913, 1
  store i32 %2915, ptr %13, align 4
  br label %2941

2916:                                             ; preds = %2904
  %2917 = landingpad { ptr, i32 }
          cleanup
  %2918 = extractvalue { ptr, i32 } %2917, 0
  store ptr %2918, ptr %12, align 8
  %2919 = extractvalue { ptr, i32 } %2917, 1
  store i32 %2919, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #9
  br label %2941

2920:                                             ; preds = %2907
  %2921 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %238) #9
  %2922 = getelementptr inbounds %"struct.AST::EnumVariant", ptr %2921, i32 0, i32 1
  %2923 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %2922, ptr noundef @.str.19)
          to label %2924 unwind label %2912

2924:                                             ; preds = %2920
  br i1 %2923, label %2925, label %2938

2925:                                             ; preds = %2924
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #9
  %2926 = load ptr, ptr %203, align 8, !tbaa !5
  %2927 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %2926)
          to label %2928 unwind label %2934

2928:                                             ; preds = %2925
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull align 8 dereferenceable(8) %238) #9
  %2929 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.384", ptr %241, i32 0, i32 0
  %2930 = load ptr, ptr %2929, align 8
  %2931 = invoke ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2927, ptr %2930)
          to label %2932 unwind label %2934

2932:                                             ; preds = %2928
  %2933 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.383", ptr %240, i32 0, i32 0
  store ptr %2931, ptr %2933, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %238, ptr align 8 %240, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #9
  br label %2940

2934:                                             ; preds = %2928, %2925
  %2935 = landingpad { ptr, i32 }
          cleanup
  %2936 = extractvalue { ptr, i32 } %2935, 0
  store ptr %2936, ptr %12, align 8
  %2937 = extractvalue { ptr, i32 } %2935, 1
  store i32 %2937, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #9
  br label %2941

2938:                                             ; preds = %2924
  %2939 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %238) #9
  br label %2940

2940:                                             ; preds = %2938, %2932
  br label %2904, !llvm.loop !151

2941:                                             ; preds = %2934, %2916, %2912
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #9
  br label %2944

2942:                                             ; preds = %2911
  br label %2943

2943:                                             ; preds = %2942
  store i8 0, ptr %202, align 1, !tbaa !68
  br label %2588, !llvm.loop !152

2944:                                             ; preds = %2941, %2897, %2593
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #9
  br label %3680

2945:                                             ; preds = %2592
  br label %2946

2946:                                             ; preds = %2945
  store i8 0, ptr %202, align 1, !tbaa !68
  br label %2580, !llvm.loop !153

2947:                                             ; preds = %2583
  br label %3678

2948:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %242) #9
  store i8 1, ptr %242, align 1, !tbaa !68
  br label %2949

2949:                                             ; preds = %3045, %2948
  %2950 = load i8, ptr %242, align 1, !tbaa !68, !range !64, !noundef !65
  %2951 = trunc i8 %2950 to i1
  br i1 %2951, label %2953, label %2952

2952:                                             ; preds = %2949
  store i32 294, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #9
  br label %3046

2953:                                             ; preds = %2949
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #9
  %2954 = load ptr, ptr %85, align 8, !tbaa !5
  %2955 = invoke noundef nonnull align 8 dereferenceable(76) ptr @_ZN3AST4Item8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(488) %2954)
          to label %2956 unwind label %2962

2956:                                             ; preds = %2953
  store ptr %2955, ptr %243, align 8, !tbaa !5
  br label %2957

2957:                                             ; preds = %3042, %2956
  %2958 = load ptr, ptr %243, align 8, !tbaa !5
  %2959 = load i8, ptr %242, align 1, !tbaa !68, !range !64, !noundef !65
  %2960 = trunc i8 %2959 to i1
  br i1 %2960, label %2966, label %2961

2961:                                             ; preds = %2957
  store i32 297, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  br label %3044

2962:                                             ; preds = %2966, %2953
  %2963 = landingpad { ptr, i32 }
          cleanup
  %2964 = extractvalue { ptr, i32 } %2963, 0
  store ptr %2964, ptr %12, align 8
  %2965 = extractvalue { ptr, i32 } %2963, 1
  store i32 %2965, ptr %13, align 4
  br label %3043

2966:                                             ; preds = %2957
  %2967 = load ptr, ptr %5, align 8, !tbaa !5
  %2968 = load ptr, ptr %7, align 8, !tbaa !5
  %2969 = load ptr, ptr %243, align 8, !tbaa !5
  %2970 = getelementptr inbounds %"class.AST::Union", ptr %2969, i32 0, i32 0
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %2967, ptr noundef nonnull align 8 dereferenceable(480) %2968, ptr noundef nonnull align 8 dereferenceable(48) %2970)
          to label %2971 unwind label %2962

2971:                                             ; preds = %2966
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #9
  %2972 = load ptr, ptr %243, align 8, !tbaa !5
  %2973 = getelementptr inbounds %"class.AST::Union", ptr %2972, i32 0, i32 1
  %2974 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2973) #9
  %2975 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %244, i32 0, i32 0
  store ptr %2974, ptr %2975, align 8
  br label %2976

2976:                                             ; preds = %3039, %2971
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #9
  %2977 = load ptr, ptr %243, align 8, !tbaa !5
  %2978 = getelementptr inbounds %"class.AST::Union", ptr %2977, i32 0, i32 1
  %2979 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2978) #9
  %2980 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %245, i32 0, i32 0
  store ptr %2979, ptr %2980, align 8
  %2981 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %245) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #9
  br i1 %2981, label %2983, label %2982

2982:                                             ; preds = %2976
  store i32 300, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #9
  br label %3041

2983:                                             ; preds = %2976
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #9
  %2984 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  store ptr %2984, ptr %246, align 8, !tbaa !5
  %2985 = load ptr, ptr %246, align 8, !tbaa !5
  %2986 = getelementptr inbounds %"struct.AST::StructItem", ptr %2985, i32 0, i32 0
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %2986)
          to label %2987 unwind label %3021

2987:                                             ; preds = %2983
  %2988 = load ptr, ptr %5, align 8, !tbaa !5
  %2989 = load ptr, ptr %246, align 8, !tbaa !5
  %2990 = getelementptr inbounds %"struct.AST::StructItem", ptr %2989, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %248) #9
  %2991 = getelementptr inbounds %class.anon.421, ptr %248, i32 0, i32 0
  %2992 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %2992, ptr %2991, align 8, !tbaa !5
  %2993 = getelementptr inbounds %class.anon.421, ptr %248, i32 0, i32 1
  %2994 = load ptr, ptr %246, align 8, !tbaa !5
  store ptr %2994, ptr %2993, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(16) %248) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %2988, ptr noundef nonnull align 8 dereferenceable(24) %2990, i32 noundef 0, ptr noundef %247)
          to label %2995 unwind label %3025

2995:                                             ; preds = %2987
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #9
  %2996 = load ptr, ptr %5, align 8, !tbaa !5
  %2997 = load ptr, ptr %7, align 8, !tbaa !5
  %2998 = load ptr, ptr %246, align 8, !tbaa !5
  %2999 = getelementptr inbounds %"struct.AST::StructItem", ptr %2998, i32 0, i32 3
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %2996, ptr noundef nonnull align 8 dereferenceable(480) %2997, ptr noundef nonnull align 8 dereferenceable(120) %2999)
          to label %3000 unwind label %3021

3000:                                             ; preds = %2995
  %3001 = load ptr, ptr %5, align 8, !tbaa !5
  %3002 = load ptr, ptr %246, align 8, !tbaa !5
  %3003 = getelementptr inbounds %"struct.AST::StructItem", ptr %3002, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %250) #9
  %3004 = getelementptr inbounds %class.anon.422, ptr %250, i32 0, i32 0
  %3005 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %3005, ptr %3004, align 8, !tbaa !5
  %3006 = getelementptr inbounds %class.anon.422, ptr %250, i32 0, i32 1
  %3007 = load ptr, ptr %246, align 8, !tbaa !5
  store ptr %3007, ptr %3006, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %249, ptr noundef nonnull align 8 dereferenceable(16) %250) #9
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %3001, ptr noundef nonnull align 8 dereferenceable(24) %3003, i32 noundef 1, ptr noundef %249)
          to label %3008 unwind label %3029

3008:                                             ; preds = %3000
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #9
  %3009 = load ptr, ptr %246, align 8, !tbaa !5
  %3010 = getelementptr inbounds %"struct.AST::StructItem", ptr %3009, i32 0, i32 2
  %3011 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %3010, ptr noundef @.str.19)
          to label %3012 unwind label %3021

3012:                                             ; preds = %3008
  br i1 %3011, label %3013, label %3037

3013:                                             ; preds = %3012
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #9
  %3014 = load ptr, ptr %243, align 8, !tbaa !5
  %3015 = getelementptr inbounds %"class.AST::Union", ptr %3014, i32 0, i32 1
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  %3016 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.410", ptr %252, i32 0, i32 0
  %3017 = load ptr, ptr %3016, align 8
  %3018 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %3015, ptr %3017)
          to label %3019 unwind label %3033

3019:                                             ; preds = %3013
  %3020 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %251, i32 0, i32 0
  store ptr %3018, ptr %3020, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %244, ptr align 8 %251, i64 8, i1 false), !tbaa.struct !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #9
  br label %3039

3021:                                             ; preds = %3008, %2995, %2983
  %3022 = landingpad { ptr, i32 }
          cleanup
  %3023 = extractvalue { ptr, i32 } %3022, 0
  store ptr %3023, ptr %12, align 8
  %3024 = extractvalue { ptr, i32 } %3022, 1
  store i32 %3024, ptr %13, align 4
  br label %3040

3025:                                             ; preds = %2987
  %3026 = landingpad { ptr, i32 }
          cleanup
  %3027 = extractvalue { ptr, i32 } %3026, 0
  store ptr %3027, ptr %12, align 8
  %3028 = extractvalue { ptr, i32 } %3026, 1
  store i32 %3028, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #9
  br label %3040

3029:                                             ; preds = %3000
  %3030 = landingpad { ptr, i32 }
          cleanup
  %3031 = extractvalue { ptr, i32 } %3030, 0
  store ptr %3031, ptr %12, align 8
  %3032 = extractvalue { ptr, i32 } %3030, 1
  store i32 %3032, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %250) #9
  br label %3040

3033:                                             ; preds = %3013
  %3034 = landingpad { ptr, i32 }
          cleanup
  %3035 = extractvalue { ptr, i32 } %3034, 0
  store ptr %3035, ptr %12, align 8
  %3036 = extractvalue { ptr, i32 } %3034, 1
  store i32 %3036, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #9
  br label %3040

3037:                                             ; preds = %3012
  %3038 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  br label %3039

3039:                                             ; preds = %3037, %3019
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #9
  br label %2976, !llvm.loop !154

3040:                                             ; preds = %3033, %3029, %3025, %3021
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #9
  br label %3043

3041:                                             ; preds = %2982
  br label %3042

3042:                                             ; preds = %3041
  store i8 0, ptr %242, align 1, !tbaa !68
  br label %2957, !llvm.loop !155

3043:                                             ; preds = %3040, %2962
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #9
  br label %3680

3044:                                             ; preds = %2961
  br label %3045

3045:                                             ; preds = %3044
  store i8 0, ptr %242, align 1, !tbaa !68
  br label %2949, !llvm.loop !156

3046:                                             ; preds = %2952
  br label %3678

3047:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %253) #9
  store i8 1, ptr %253, align 1, !tbaa !68
  br label %3048

3048:                                             ; preds = %3535, %3047
  %3049 = load i8, ptr %253, align 1, !tbaa !68, !range !64, !noundef !65
  %3050 = trunc i8 %3049 to i1
  br i1 %3050, label %3052, label %3051

3051:                                             ; preds = %3048
  store i32 302, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #9
  br label %3536

3052:                                             ; preds = %3048
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #9
  %3053 = load ptr, ptr %85, align 8, !tbaa !5
  %3054 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN3AST4Item8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %3053)
          to label %3055 unwind label %3061

3055:                                             ; preds = %3052
  store ptr %3054, ptr %254, align 8, !tbaa !5
  br label %3056

3056:                                             ; preds = %3531, %3055
  %3057 = load ptr, ptr %254, align 8, !tbaa !5
  %3058 = load i8, ptr %253, align 1, !tbaa !68, !range !64, !noundef !65
  %3059 = trunc i8 %3058 to i1
  br i1 %3059, label %3065, label %3060

3060:                                             ; preds = %3056
  store i32 305, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #9
  br label %3534

3061:                                             ; preds = %3070, %3065, %3052
  %3062 = landingpad { ptr, i32 }
          cleanup
  %3063 = extractvalue { ptr, i32 } %3062, 0
  store ptr %3063, ptr %12, align 8
  %3064 = extractvalue { ptr, i32 } %3062, 1
  store i32 %3064, ptr %13, align 4
  br label %3533

3065:                                             ; preds = %3056
  %3066 = load ptr, ptr %5, align 8, !tbaa !5
  %3067 = load ptr, ptr %7, align 8, !tbaa !5
  %3068 = load ptr, ptr %254, align 8, !tbaa !5
  %3069 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128) %3068)
          to label %3070 unwind label %3061

3070:                                             ; preds = %3065
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %3066, ptr noundef nonnull align 8 dereferenceable(480) %3067, ptr noundef nonnull align 8 dereferenceable(48) %3069)
          to label %3071 unwind label %3061

3071:                                             ; preds = %3070
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #9
  %3072 = load ptr, ptr %254, align 8, !tbaa !5
  %3073 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST5Trait11supertraitsEv(ptr noundef nonnull align 8 dereferenceable(128) %3072)
          to label %3074 unwind label %3084

3074:                                             ; preds = %3071
  store ptr %3073, ptr %255, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #9
  %3075 = load ptr, ptr %255, align 8, !tbaa !5
  %3076 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3075) #9
  %3077 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.423", ptr %256, i32 0, i32 0
  store ptr %3076, ptr %3077, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #9
  %3078 = load ptr, ptr %255, align 8, !tbaa !5
  %3079 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3078) #9
  %3080 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.423", ptr %257, i32 0, i32 0
  store ptr %3079, ptr %3080, align 8
  br label %3081

3081:                                             ; preds = %3097, %3074
  %3082 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  br i1 %3082, label %3088, label %3083

3083:                                             ; preds = %3081
  store i32 308, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  br label %3104

3084:                                             ; preds = %3071
  %3085 = landingpad { ptr, i32 }
          cleanup
  %3086 = extractvalue { ptr, i32 } %3085, 0
  store ptr %3086, ptr %12, align 8
  %3087 = extractvalue { ptr, i32 } %3085, 1
  store i32 %3087, ptr %13, align 4
  br label %3103

3088:                                             ; preds = %3081
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #9
  %3089 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %256) #9
  store ptr %3089, ptr %258, align 8, !tbaa !5
  %3090 = load ptr, ptr %5, align 8, !tbaa !5
  %3091 = load ptr, ptr %7, align 8, !tbaa !5
  %3092 = load ptr, ptr %258, align 8, !tbaa !5
  %3093 = getelementptr inbounds %struct.Spanned.424, ptr %3092, i32 0, i32 1
  %3094 = getelementptr inbounds %struct.Type_TraitPath, ptr %3093, i32 0, i32 1
  %3095 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3094) #9
  invoke void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30) %3090, ptr noundef nonnull align 8 dereferenceable(480) %3091, ptr noundef nonnull align 8 dereferenceable(240) %3095)
          to label %3096 unwind label %3099

3096:                                             ; preds = %3088
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #9
  br label %3097

3097:                                             ; preds = %3096
  %3098 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %256) #9
  br label %3081

3099:                                             ; preds = %3088
  %3100 = landingpad { ptr, i32 }
          cleanup
  %3101 = extractvalue { ptr, i32 } %3100, 0
  store ptr %3101, ptr %12, align 8
  %3102 = extractvalue { ptr, i32 } %3100, 1
  store i32 %3102, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #9
  br label %3103

3103:                                             ; preds = %3099, %3084
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  br label %3533

3104:                                             ; preds = %3083
  call void @llvm.lifetime.start.p0(i64 8, ptr %259) #9
  %3105 = load ptr, ptr %254, align 8, !tbaa !5
  %3106 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST5Trait5itemsEv(ptr noundef nonnull align 8 dereferenceable(128) %3105)
          to label %3107 unwind label %3114

3107:                                             ; preds = %3104
  store ptr %3106, ptr %259, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #9
  store i64 0, ptr %260, align 8, !tbaa !102
  br label %3108

3108:                                             ; preds = %3524, %3107
  %3109 = load i64, ptr %260, align 8, !tbaa !102
  %3110 = load ptr, ptr %259, align 8, !tbaa !5
  %3111 = call noundef i64 @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3110) #9
  %3112 = icmp ult i64 %3109, %3111
  br i1 %3112, label %3118, label %3113

3113:                                             ; preds = %3108
  store i32 310, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  br label %3530

3114:                                             ; preds = %3104
  %3115 = landingpad { ptr, i32 }
          cleanup
  %3116 = extractvalue { ptr, i32 } %3115, 0
  store ptr %3116, ptr %12, align 8
  %3117 = extractvalue { ptr, i32 } %3115, 1
  store i32 %3117, ptr %13, align 4
  br label %3532

3118:                                             ; preds = %3108
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #9
  %3119 = load ptr, ptr %259, align 8, !tbaa !5
  %3120 = load i64, ptr %260, align 8, !tbaa !102
  %3121 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3119, i64 noundef %3120) #9
  store ptr %3121, ptr %261, align 8, !tbaa !5
  br label %3122

3122:                                             ; preds = %3118
  %3123 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3124 unwind label %3147

3124:                                             ; preds = %3122
  br i1 %3123, label %3125, label %3151

3125:                                             ; preds = %3124
  %3126 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %3127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3126, ptr noundef @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %3128 unwind label %3147

3128:                                             ; preds = %3125
  %3129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3127, ptr noundef @.str.48)
          to label %3130 unwind label %3147

3130:                                             ; preds = %3128
  %3131 = load ptr, ptr %261, align 8, !tbaa !5
  %3132 = getelementptr inbounds %"struct.AST::Named.382", ptr %3131, i32 0, i32 3
  %3133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %3129, ptr noundef nonnull align 8 dereferenceable(8) %3132)
          to label %3134 unwind label %3147

3134:                                             ; preds = %3130
  %3135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3133, ptr noundef @.str.25)
          to label %3136 unwind label %3147

3136:                                             ; preds = %3134
  %3137 = load ptr, ptr %261, align 8, !tbaa !5
  %3138 = getelementptr inbounds %"struct.AST::Named.382", ptr %3137, i32 0, i32 4
  %3139 = invoke noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %3138)
          to label %3140 unwind label %3147

3140:                                             ; preds = %3136
  %3141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3135, ptr noundef %3139)
          to label %3142 unwind label %3147

3142:                                             ; preds = %3140
  %3143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3141, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3144 unwind label %3147

3144:                                             ; preds = %3142
  %3145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3143, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3146 unwind label %3147

3146:                                             ; preds = %3144
  br label %3151

3147:                                             ; preds = %3144, %3142, %3140, %3136, %3134, %3130, %3128, %3125, %3122
  %3148 = landingpad { ptr, i32 }
          cleanup
  %3149 = extractvalue { ptr, i32 } %3148, 0
  store ptr %3149, ptr %12, align 8
  %3150 = extractvalue { ptr, i32 } %3148, 1
  store i32 %3150, ptr %13, align 4
  br label %3529

3151:                                             ; preds = %3146, %3124
  br label %3152

3152:                                             ; preds = %3151
  br label %3153

3153:                                             ; preds = %3152
  call void @llvm.lifetime.start.p0(i64 24, ptr %262) #9
  %3154 = load ptr, ptr %261, align 8, !tbaa !5
  %3155 = getelementptr inbounds %"struct.AST::Named.382", ptr %3154, i32 0, i32 1
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %262, ptr noundef nonnull align 8 dereferenceable(24) %3155) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %263) #9
  %3156 = load ptr, ptr %261, align 8, !tbaa !5
  %3157 = getelementptr inbounds %"struct.AST::Named.382", ptr %3156, i32 0, i32 3
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull align 8 dereferenceable(8) %3157)
          to label %3158 unwind label %3171

3158:                                             ; preds = %3153
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind writable sret(%"struct.AST::AbsolutePath") align 8 %263, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef %264)
          to label %3159 unwind label %3175

3159:                                             ; preds = %3158
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #9
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %262)
          to label %3160 unwind label %3179

3160:                                             ; preds = %3159
  %3161 = load ptr, ptr %5, align 8, !tbaa !5
  %3162 = load ptr, ptr %7, align 8, !tbaa !5
  %3163 = load ptr, ptr %254, align 8, !tbaa !5
  %3164 = load ptr, ptr %261, align 8, !tbaa !5
  %3165 = getelementptr inbounds %"struct.AST::Named.382", ptr %3164, i32 0, i32 4
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %3161, ptr noundef nonnull align 8 dereferenceable(24) %262, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull align 8 dereferenceable(480) %3162, ptr noundef nonnull align 8 dereferenceable(128) %3163, ptr noundef nonnull align 8 dereferenceable(488) %3165)
          to label %3166 unwind label %3179

3166:                                             ; preds = %3160
  call void @llvm.lifetime.start.p0(i64 1, ptr %265) #9
  store i8 1, ptr %265, align 1, !tbaa !68
  br label %3167

3167:                                             ; preds = %3499, %3166
  %3168 = load i8, ptr %265, align 1, !tbaa !68, !range !64, !noundef !65
  %3169 = trunc i8 %3168 to i1
  br i1 %3169, label %3183, label %3170

3170:                                             ; preds = %3167
  store i32 315, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #9
  br label %3500

3171:                                             ; preds = %3153
  %3172 = landingpad { ptr, i32 }
          cleanup
  %3173 = extractvalue { ptr, i32 } %3172, 0
  store ptr %3173, ptr %12, align 8
  %3174 = extractvalue { ptr, i32 } %3172, 1
  store i32 %3174, ptr %13, align 4
  br label %3528

3175:                                             ; preds = %3158
  %3176 = landingpad { ptr, i32 }
          cleanup
  %3177 = extractvalue { ptr, i32 } %3176, 0
  store ptr %3177, ptr %12, align 8
  %3178 = extractvalue { ptr, i32 } %3176, 1
  store i32 %3178, ptr %13, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %264) #9
  br label %3528

3179:                                             ; preds = %3160, %3159
  %3180 = landingpad { ptr, i32 }
          cleanup
  %3181 = extractvalue { ptr, i32 } %3180, 0
  store ptr %3181, ptr %12, align 8
  %3182 = extractvalue { ptr, i32 } %3180, 1
  store i32 %3182, ptr %13, align 4
  br label %3527

3183:                                             ; preds = %3167
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #9
  %3184 = load ptr, ptr %261, align 8, !tbaa !5
  %3185 = getelementptr inbounds %"struct.AST::Named.382", ptr %3184, i32 0, i32 4
  store ptr %3185, ptr %266, align 8, !tbaa !5
  br label %3186

3186:                                             ; preds = %3496, %3183
  %3187 = load i8, ptr %265, align 1, !tbaa !68, !range !64, !noundef !65
  %3188 = trunc i8 %3187 to i1
  br i1 %3188, label %3190, label %3189

3189:                                             ; preds = %3186
  store i32 318, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #9
  br label %3498

3190:                                             ; preds = %3186
  %3191 = load ptr, ptr %266, align 8, !tbaa !5
  %3192 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %3191)
          to label %3193 unwind label %3194

3193:                                             ; preds = %3190
  switch i32 %3192, label %3199 [
    i32 0, label %3198
    i32 1, label %3222
    i32 2, label %3245
    i32 17, label %3405
    i32 18, label %3432
    i32 11, label %3466
  ]

3194:                                             ; preds = %3206, %3190
  %3195 = landingpad { ptr, i32 }
          cleanup
  %3196 = extractvalue { ptr, i32 } %3195, 0
  store ptr %3196, ptr %12, align 8
  %3197 = extractvalue { ptr, i32 } %3195, 1
  store i32 %3197, ptr %13, align 4
  br label %3497

3198:                                             ; preds = %3193
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.21, i32 noundef 2300, ptr noundef @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #10
  unreachable

3199:                                             ; preds = %3193
  br label %3200

3200:                                             ; preds = %3199
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #9
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %3201 unwind label %3207

3201:                                             ; preds = %3200
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #9
  %3202 = getelementptr inbounds %class.anon.425, ptr %269, i32 0, i32 0
  %3203 = load ptr, ptr %261, align 8, !tbaa !5
  store ptr %3203, ptr %3202, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef %268)
          to label %3204 unwind label %3211

3204:                                             ; preds = %3201
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #9
  %3205 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3205, ptr noundef @.str.11)
          to label %3206 unwind label %3216

3206:                                             ; preds = %3204
  invoke void @__cxa_throw(ptr %3205, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3742 unwind label %3194

3207:                                             ; preds = %3200
  %3208 = landingpad { ptr, i32 }
          cleanup
  %3209 = extractvalue { ptr, i32 } %3208, 0
  store ptr %3209, ptr %12, align 8
  %3210 = extractvalue { ptr, i32 } %3208, 1
  store i32 %3210, ptr %13, align 4
  br label %3215

3211:                                             ; preds = %3201
  %3212 = landingpad { ptr, i32 }
          cleanup
  %3213 = extractvalue { ptr, i32 } %3212, 0
  store ptr %3213, ptr %12, align 8
  %3214 = extractvalue { ptr, i32 } %3212, 1
  store i32 %3214, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #9
  br label %3215

3215:                                             ; preds = %3211, %3207
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #9
  br label %3497

3216:                                             ; preds = %3204
  %3217 = landingpad { ptr, i32 }
          cleanup
  %3218 = extractvalue { ptr, i32 } %3217, 0
  store ptr %3218, ptr %12, align 8
  %3219 = extractvalue { ptr, i32 } %3217, 1
  store i32 %3219, ptr %13, align 4
  call void @__cxa_free_exception(ptr %3205) #9
  br label %3497

3220:                                             ; No predecessors!
  br label %3221

3221:                                             ; preds = %3220
  br label %3495

3222:                                             ; preds = %3193
  call void @llvm.lifetime.start.p0(i64 1, ptr %270) #9
  store i8 1, ptr %270, align 1, !tbaa !68
  br label %3223

3223:                                             ; preds = %3243, %3222
  %3224 = load i8, ptr %270, align 1, !tbaa !68, !range !64, !noundef !65
  %3225 = trunc i8 %3224 to i1
  br i1 %3225, label %3227, label %3226

3226:                                             ; preds = %3223
  store i32 324, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #9
  br label %3244

3227:                                             ; preds = %3223
  call void @llvm.lifetime.start.p0(i64 8, ptr %271) #9
  %3228 = load ptr, ptr %266, align 8, !tbaa !5
  %3229 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %3228)
          to label %3230 unwind label %3236

3230:                                             ; preds = %3227
  store ptr %3229, ptr %271, align 8, !tbaa !5
  br label %3231

3231:                                             ; preds = %3241, %3230
  %3232 = load ptr, ptr %271, align 8, !tbaa !5
  %3233 = load i8, ptr %270, align 1, !tbaa !68, !range !64, !noundef !65
  %3234 = trunc i8 %3233 to i1
  br i1 %3234, label %3240, label %3235

3235:                                             ; preds = %3231
  store i32 327, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  br label %3242

3236:                                             ; preds = %3227
  %3237 = landingpad { ptr, i32 }
          cleanup
  %3238 = extractvalue { ptr, i32 } %3237, 0
  store ptr %3238, ptr %12, align 8
  %3239 = extractvalue { ptr, i32 } %3237, 1
  store i32 %3239, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #9
  br label %3497

3240:                                             ; preds = %3231
  br label %3241

3241:                                             ; preds = %3240
  store i8 0, ptr %270, align 1, !tbaa !68
  br label %3231, !llvm.loop !157

3242:                                             ; preds = %3235
  br label %3243

3243:                                             ; preds = %3242
  store i8 0, ptr %270, align 1, !tbaa !68
  br label %3223, !llvm.loop !158

3244:                                             ; preds = %3226
  br label %3495

3245:                                             ; preds = %3193
  call void @llvm.lifetime.start.p0(i64 1, ptr %272) #9
  store i8 1, ptr %272, align 1, !tbaa !68
  br label %3246

3246:                                             ; preds = %3403, %3245
  %3247 = load i8, ptr %272, align 1, !tbaa !68, !range !64, !noundef !65
  %3248 = trunc i8 %3247 to i1
  br i1 %3248, label %3250, label %3249

3249:                                             ; preds = %3246
  store i32 330, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #9
  br label %3404

3250:                                             ; preds = %3246
  call void @llvm.lifetime.start.p0(i64 8, ptr %273) #9
  %3251 = load ptr, ptr %266, align 8, !tbaa !5
  %3252 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %3251)
          to label %3253 unwind label %3259

3253:                                             ; preds = %3250
  store ptr %3252, ptr %273, align 8, !tbaa !5
  br label %3254

3254:                                             ; preds = %3400, %3253
  %3255 = load ptr, ptr %273, align 8, !tbaa !5
  %3256 = load i8, ptr %272, align 1, !tbaa !68, !range !64, !noundef !65
  %3257 = trunc i8 %3256 to i1
  br i1 %3257, label %3263, label %3258

3258:                                             ; preds = %3254
  store i32 333, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #9
  br label %3402

3259:                                             ; preds = %3266, %3263, %3250
  %3260 = landingpad { ptr, i32 }
          cleanup
  %3261 = extractvalue { ptr, i32 } %3260, 0
  store ptr %3261, ptr %12, align 8
  %3262 = extractvalue { ptr, i32 } %3260, 1
  store i32 %3262, ptr %13, align 4
  br label %3401

3263:                                             ; preds = %3254
  %3264 = load ptr, ptr %273, align 8, !tbaa !5
  %3265 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %3264)
          to label %3266 unwind label %3259

3266:                                             ; preds = %3263
  %3267 = invoke noundef zeroext i1 @_ZNK3AST4Path8is_validEv(ptr noundef nonnull align 8 dereferenceable(240) %3265)
          to label %3268 unwind label %3259

3268:                                             ; preds = %3266
  br i1 %3267, label %3269, label %3399

3269:                                             ; preds = %3268
  call void @llvm.lifetime.start.p0(i64 40, ptr %274) #9
  %3270 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3271 unwind label %3291

3271:                                             ; preds = %3269
  %3272 = zext i1 %3270 to i64
  %3273 = select i1 %3270, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %276) #9
  %3274 = getelementptr inbounds %class.anon.426, ptr %276, i32 0, i32 0
  %3275 = load ptr, ptr %273, align 8, !tbaa !5
  store ptr %3275, ptr %3274, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %275, ptr noundef nonnull align 8 dereferenceable(8) %276) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %274, ptr noundef %3273, ptr noundef %275)
          to label %3276 unwind label %3295

3276:                                             ; preds = %3271
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %275) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #9
  call void @llvm.lifetime.start.p0(i64 400, ptr %277) #9
  %3277 = load ptr, ptr %273, align 8, !tbaa !5
  invoke void @_ZN3AST15MacroInvocationC2EOS0_(ptr noundef nonnull align 8 dereferenceable(393) %277, ptr noundef nonnull align 8 dereferenceable(393) %3277)
          to label %3278 unwind label %3299

3278:                                             ; preds = %3276
  call void @llvm.lifetime.start.p0(i64 8, ptr %278) #9
  %3279 = load ptr, ptr %5, align 8, !tbaa !5
  %3280 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.273") align 8 %278, ptr noundef nonnull align 8 dereferenceable(30) %3279, ptr noundef nonnull align 8 dereferenceable(480) %3280, ptr noundef nonnull align 8 dereferenceable(393) %277)
          to label %3281 unwind label %3303

3281:                                             ; preds = %3278
  br label %3282

3282:                                             ; preds = %3281
  %3283 = call noundef zeroext i1 @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  br i1 %3283, label %3324, label %3284

3284:                                             ; preds = %3282
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #9
  %3285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST15MacroInvocation4spanEv(ptr noundef nonnull align 8 dereferenceable(393) %277)
          to label %3286 unwind label %3307

3286:                                             ; preds = %3284
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %3285)
          to label %3287 unwind label %3307

3287:                                             ; preds = %3286
  call void @llvm.lifetime.start.p0(i64 1, ptr %281) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull align 1 dereferenceable(1) %281) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef %280)
          to label %3288 unwind label %3311

3288:                                             ; preds = %3287
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #9
  %3289 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3289, ptr noundef @.str.11)
          to label %3290 unwind label %3316

3290:                                             ; preds = %3288
  invoke void @__cxa_throw(ptr %3289, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3742 unwind label %3320

3291:                                             ; preds = %3269
  %3292 = landingpad { ptr, i32 }
          cleanup
  %3293 = extractvalue { ptr, i32 } %3292, 0
  store ptr %3293, ptr %12, align 8
  %3294 = extractvalue { ptr, i32 } %3292, 1
  store i32 %3294, ptr %13, align 4
  br label %3398

3295:                                             ; preds = %3271
  %3296 = landingpad { ptr, i32 }
          cleanup
  %3297 = extractvalue { ptr, i32 } %3296, 0
  store ptr %3297, ptr %12, align 8
  %3298 = extractvalue { ptr, i32 } %3296, 1
  store i32 %3298, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %275) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #9
  br label %3398

3299:                                             ; preds = %3276
  %3300 = landingpad { ptr, i32 }
          cleanup
  %3301 = extractvalue { ptr, i32 } %3300, 0
  store ptr %3301, ptr %12, align 8
  %3302 = extractvalue { ptr, i32 } %3300, 1
  store i32 %3302, ptr %13, align 4
  br label %3397

3303:                                             ; preds = %3278
  %3304 = landingpad { ptr, i32 }
          cleanup
  %3305 = extractvalue { ptr, i32 } %3304, 0
  store ptr %3305, ptr %12, align 8
  %3306 = extractvalue { ptr, i32 } %3304, 1
  store i32 %3306, ptr %13, align 4
  br label %3396

3307:                                             ; preds = %3286, %3284
  %3308 = landingpad { ptr, i32 }
          cleanup
  %3309 = extractvalue { ptr, i32 } %3308, 0
  store ptr %3309, ptr %12, align 8
  %3310 = extractvalue { ptr, i32 } %3308, 1
  store i32 %3310, ptr %13, align 4
  br label %3315

3311:                                             ; preds = %3287
  %3312 = landingpad { ptr, i32 }
          cleanup
  %3313 = extractvalue { ptr, i32 } %3312, 0
  store ptr %3313, ptr %12, align 8
  %3314 = extractvalue { ptr, i32 } %3312, 1
  store i32 %3314, ptr %13, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %281) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #9
  br label %3315

3315:                                             ; preds = %3311, %3307
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #9
  br label %3395

3316:                                             ; preds = %3288
  %3317 = landingpad { ptr, i32 }
          cleanup
  %3318 = extractvalue { ptr, i32 } %3317, 0
  store ptr %3318, ptr %12, align 8
  %3319 = extractvalue { ptr, i32 } %3317, 1
  store i32 %3319, ptr %13, align 4
  call void @__cxa_free_exception(ptr %3289) #9
  br label %3395

3320:                                             ; preds = %3391, %3385, %3290
  %3321 = landingpad { ptr, i32 }
          cleanup
  %3322 = extractvalue { ptr, i32 } %3321, 0
  store ptr %3322, ptr %12, align 8
  %3323 = extractvalue { ptr, i32 } %3321, 1
  store i32 %3323, ptr %13, align 4
  br label %3395

3324:                                             ; preds = %3282
  br label %3325

3325:                                             ; preds = %3324
  br label %3326

3326:                                             ; preds = %3325
  %3327 = call noundef ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  %3328 = icmp ne ptr %3327, null
  br i1 %3328, label %3329, label %3385

3329:                                             ; preds = %3326
  call void @llvm.lifetime.start.p0(i64 8, ptr %282) #9
  %3330 = load i64, ptr %260, align 8, !tbaa !102
  %3331 = add i64 %3330, 1
  store i64 %3331, ptr %282, align 8, !tbaa !102
  br label %3332

3332:                                             ; preds = %3350, %3329
  %3333 = call noundef ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  %3334 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %3333, i32 noundef 0)
          to label %3335 unwind label %3354

3335:                                             ; preds = %3332
  %3336 = icmp ne i32 %3334, 1
  br i1 %3336, label %3337, label %3367

3337:                                             ; preds = %3335
  call void @llvm.lifetime.start.p0(i64 568, ptr %283) #9
  %3338 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  invoke void @_Z16Parse_Trait_ItemR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::Named.382") align 8 %283, ptr noundef nonnull align 8 dereferenceable(176) %3338)
          to label %3339 unwind label %3358

3339:                                             ; preds = %3337
  %3340 = load ptr, ptr %259, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %286) #9
  %3341 = load ptr, ptr %259, align 8, !tbaa !5
  %3342 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3341) #9
  %3343 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.393", ptr %286, i32 0, i32 0
  store ptr %3342, ptr %3343, align 8
  %3344 = load i64, ptr %282, align 8, !tbaa !102
  %3345 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %286, i64 noundef %3344) #9
  %3346 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.393", ptr %285, i32 0, i32 0
  store ptr %3345, ptr %3346, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %285) #9
  %3347 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %284, i32 0, i32 0
  %3348 = load ptr, ptr %3347, align 8
  %3349 = invoke ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %3340, ptr %3348, ptr noundef nonnull align 8 dereferenceable(568) %283)
          to label %3350 unwind label %3362

3350:                                             ; preds = %3339
  %3351 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.393", ptr %287, i32 0, i32 0
  store ptr %3349, ptr %3351, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  %3352 = load i64, ptr %282, align 8, !tbaa !102
  %3353 = add i64 %3352, 1
  store i64 %3353, ptr %282, align 8, !tbaa !102
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %283) #9
  call void @llvm.lifetime.end.p0(i64 568, ptr %283) #9
  br label %3332, !llvm.loop !159

3354:                                             ; preds = %3332
  %3355 = landingpad { ptr, i32 }
          cleanup
  %3356 = extractvalue { ptr, i32 } %3355, 0
  store ptr %3356, ptr %12, align 8
  %3357 = extractvalue { ptr, i32 } %3355, 1
  store i32 %3357, ptr %13, align 4
  br label %3384

3358:                                             ; preds = %3337
  %3359 = landingpad { ptr, i32 }
          cleanup
  %3360 = extractvalue { ptr, i32 } %3359, 0
  store ptr %3360, ptr %12, align 8
  %3361 = extractvalue { ptr, i32 } %3359, 1
  store i32 %3361, ptr %13, align 4
  br label %3366

3362:                                             ; preds = %3339
  %3363 = landingpad { ptr, i32 }
          cleanup
  %3364 = extractvalue { ptr, i32 } %3363, 0
  store ptr %3364, ptr %12, align 8
  %3365 = extractvalue { ptr, i32 } %3363, 1
  store i32 %3365, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %283) #9
  br label %3366

3366:                                             ; preds = %3362, %3358
  call void @llvm.lifetime.end.p0(i64 568, ptr %283) #9
  br label %3384

3367:                                             ; preds = %3335
  call void @llvm.lifetime.start.p0(i64 488, ptr %288) #9
  invoke void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind writable sret(%"class.AST::Item") align 8 %288)
          to label %3368 unwind label %3375

3368:                                             ; preds = %3367
  %3369 = load ptr, ptr %259, align 8, !tbaa !5
  %3370 = load i64, ptr %260, align 8, !tbaa !102
  %3371 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3369, i64 noundef %3370) #9
  %3372 = getelementptr inbounds %"struct.AST::Named.382", ptr %3371, i32 0, i32 4
  %3373 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %3372, ptr noundef nonnull align 8 dereferenceable(488) %288)
          to label %3374 unwind label %3379

3374:                                             ; preds = %3368
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %288) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %288) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #9
  br label %3394

3375:                                             ; preds = %3367
  %3376 = landingpad { ptr, i32 }
          cleanup
  %3377 = extractvalue { ptr, i32 } %3376, 0
  store ptr %3377, ptr %12, align 8
  %3378 = extractvalue { ptr, i32 } %3376, 1
  store i32 %3378, ptr %13, align 4
  br label %3383

3379:                                             ; preds = %3368
  %3380 = landingpad { ptr, i32 }
          cleanup
  %3381 = extractvalue { ptr, i32 } %3380, 0
  store ptr %3381, ptr %12, align 8
  %3382 = extractvalue { ptr, i32 } %3380, 1
  store i32 %3382, ptr %13, align 4
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %288) #9
  br label %3383

3383:                                             ; preds = %3379, %3375
  call void @llvm.lifetime.end.p0(i64 488, ptr %288) #9
  br label %3384

3384:                                             ; preds = %3383, %3366, %3354
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #9
  br label %3395

3385:                                             ; preds = %3326
  %3386 = load ptr, ptr %259, align 8, !tbaa !5
  %3387 = load i64, ptr %260, align 8, !tbaa !102
  %3388 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3386, i64 noundef %3387) #9
  %3389 = getelementptr inbounds %"struct.AST::Named.382", ptr %3388, i32 0, i32 4
  %3390 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %3389)
          to label %3391 unwind label %3320

3391:                                             ; preds = %3385
  %3392 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST15MacroInvocationaSEOS0_(ptr noundef nonnull align 8 dereferenceable(393) %3390, ptr noundef nonnull align 8 dereferenceable(393) %277)
          to label %3393 unwind label %3320

3393:                                             ; preds = %3391
  br label %3394

3394:                                             ; preds = %3393, %3374
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #9
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %277) #9
  call void @llvm.lifetime.end.p0(i64 400, ptr %277) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %274) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %274) #9
  br label %3399

3395:                                             ; preds = %3384, %3320, %3316, %3315
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %278) #9
  br label %3396

3396:                                             ; preds = %3395, %3303
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #9
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %277) #9
  br label %3397

3397:                                             ; preds = %3396, %3299
  call void @llvm.lifetime.end.p0(i64 400, ptr %277) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %274) #9
  br label %3398

3398:                                             ; preds = %3397, %3295, %3291
  call void @llvm.lifetime.end.p0(i64 40, ptr %274) #9
  br label %3401

3399:                                             ; preds = %3394, %3268
  br label %3400

3400:                                             ; preds = %3399
  store i8 0, ptr %272, align 1, !tbaa !68
  br label %3254, !llvm.loop !160

3401:                                             ; preds = %3398, %3259
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %272) #9
  br label %3497

3402:                                             ; preds = %3258
  br label %3403

3403:                                             ; preds = %3402
  store i8 0, ptr %272, align 1, !tbaa !68
  br label %3246, !llvm.loop !161

3404:                                             ; preds = %3249
  br label %3495

3405:                                             ; preds = %3193
  call void @llvm.lifetime.start.p0(i64 1, ptr %290) #9
  store i8 1, ptr %290, align 1, !tbaa !68
  br label %3406

3406:                                             ; preds = %3430, %3405
  %3407 = load i8, ptr %290, align 1, !tbaa !68, !range !64, !noundef !65
  %3408 = trunc i8 %3407 to i1
  br i1 %3408, label %3410, label %3409

3409:                                             ; preds = %3406
  store i32 340, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %290) #9
  br label %3431

3410:                                             ; preds = %3406
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #9
  %3411 = load ptr, ptr %266, align 8, !tbaa !5
  %3412 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %3411)
          to label %3413 unwind label %3419

3413:                                             ; preds = %3410
  store ptr %3412, ptr %291, align 8, !tbaa !5
  br label %3414

3414:                                             ; preds = %3428, %3413
  %3415 = load ptr, ptr %291, align 8, !tbaa !5
  %3416 = load i8, ptr %290, align 1, !tbaa !68, !range !64, !noundef !65
  %3417 = trunc i8 %3416 to i1
  br i1 %3417, label %3423, label %3418

3418:                                             ; preds = %3414
  store i32 343, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #9
  br label %3429

3419:                                             ; preds = %3423, %3410
  %3420 = landingpad { ptr, i32 }
          cleanup
  %3421 = extractvalue { ptr, i32 } %3420, 0
  store ptr %3421, ptr %12, align 8
  %3422 = extractvalue { ptr, i32 } %3420, 1
  store i32 %3422, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %290) #9
  br label %3497

3423:                                             ; preds = %3414
  %3424 = load ptr, ptr %5, align 8, !tbaa !5
  %3425 = load ptr, ptr %7, align 8, !tbaa !5
  %3426 = load ptr, ptr %291, align 8, !tbaa !5
  invoke void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30) %3424, ptr noundef nonnull align 8 dereferenceable(480) %3425, ptr noundef nonnull align 8 dereferenceable(368) %3426)
          to label %3427 unwind label %3419

3427:                                             ; preds = %3423
  br label %3428

3428:                                             ; preds = %3427
  store i8 0, ptr %290, align 1, !tbaa !68
  br label %3414, !llvm.loop !162

3429:                                             ; preds = %3418
  br label %3430

3430:                                             ; preds = %3429
  store i8 0, ptr %290, align 1, !tbaa !68
  br label %3406, !llvm.loop !163

3431:                                             ; preds = %3409
  br label %3495

3432:                                             ; preds = %3193
  call void @llvm.lifetime.start.p0(i64 1, ptr %292) #9
  store i8 1, ptr %292, align 1, !tbaa !68
  br label %3433

3433:                                             ; preds = %3464, %3432
  %3434 = load i8, ptr %292, align 1, !tbaa !68, !range !64, !noundef !65
  %3435 = trunc i8 %3434 to i1
  br i1 %3435, label %3437, label %3436

3436:                                             ; preds = %3433
  store i32 346, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #9
  br label %3465

3437:                                             ; preds = %3433
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #9
  %3438 = load ptr, ptr %266, align 8, !tbaa !5
  %3439 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %3438)
          to label %3440 unwind label %3446

3440:                                             ; preds = %3437
  store ptr %3439, ptr %293, align 8, !tbaa !5
  br label %3441

3441:                                             ; preds = %3462, %3440
  %3442 = load ptr, ptr %293, align 8, !tbaa !5
  %3443 = load i8, ptr %292, align 1, !tbaa !68, !range !64, !noundef !65
  %3444 = trunc i8 %3443 to i1
  br i1 %3444, label %3450, label %3445

3445:                                             ; preds = %3441
  store i32 349, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #9
  br label %3463

3446:                                             ; preds = %3460, %3455, %3454, %3450, %3437
  %3447 = landingpad { ptr, i32 }
          cleanup
  %3448 = extractvalue { ptr, i32 } %3447, 0
  store ptr %3448, ptr %12, align 8
  %3449 = extractvalue { ptr, i32 } %3447, 1
  store i32 %3449, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #9
  br label %3497

3450:                                             ; preds = %3441
  %3451 = load ptr, ptr %5, align 8, !tbaa !5
  %3452 = load ptr, ptr %293, align 8, !tbaa !5
  %3453 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %3452)
          to label %3454 unwind label %3446

3454:                                             ; preds = %3450
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %3451, ptr noundef nonnull align 8 dereferenceable(16) %3453)
          to label %3455 unwind label %3446

3455:                                             ; preds = %3454
  %3456 = load ptr, ptr %5, align 8, !tbaa !5
  %3457 = load ptr, ptr %7, align 8, !tbaa !5
  %3458 = load ptr, ptr %293, align 8, !tbaa !5
  %3459 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %3458)
          to label %3460 unwind label %3446

3460:                                             ; preds = %3455
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %3456, ptr noundef nonnull align 8 dereferenceable(480) %3457, ptr noundef nonnull align 8 dereferenceable(120) %3459)
          to label %3461 unwind label %3446

3461:                                             ; preds = %3460
  br label %3462

3462:                                             ; preds = %3461
  store i8 0, ptr %292, align 1, !tbaa !68
  br label %3441, !llvm.loop !164

3463:                                             ; preds = %3445
  br label %3464

3464:                                             ; preds = %3463
  store i8 0, ptr %292, align 1, !tbaa !68
  br label %3433, !llvm.loop !165

3465:                                             ; preds = %3436
  br label %3495

3466:                                             ; preds = %3193
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #9
  store i8 1, ptr %294, align 1, !tbaa !68
  br label %3467

3467:                                             ; preds = %3493, %3466
  %3468 = load i8, ptr %294, align 1, !tbaa !68, !range !64, !noundef !65
  %3469 = trunc i8 %3468 to i1
  br i1 %3469, label %3471, label %3470

3470:                                             ; preds = %3467
  store i32 352, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  br label %3494

3471:                                             ; preds = %3467
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #9
  %3472 = load ptr, ptr %266, align 8, !tbaa !5
  %3473 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %3472)
          to label %3474 unwind label %3480

3474:                                             ; preds = %3471
  store ptr %3473, ptr %295, align 8, !tbaa !5
  br label %3475

3475:                                             ; preds = %3491, %3474
  %3476 = load ptr, ptr %295, align 8, !tbaa !5
  %3477 = load i8, ptr %294, align 1, !tbaa !68, !range !64, !noundef !65
  %3478 = trunc i8 %3477 to i1
  br i1 %3478, label %3484, label %3479

3479:                                             ; preds = %3475
  store i32 355, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  br label %3492

3480:                                             ; preds = %3489, %3484, %3471
  %3481 = landingpad { ptr, i32 }
          cleanup
  %3482 = extractvalue { ptr, i32 } %3481, 0
  store ptr %3482, ptr %12, align 8
  %3483 = extractvalue { ptr, i32 } %3481, 1
  store i32 %3483, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  br label %3497

3484:                                             ; preds = %3475
  %3485 = load ptr, ptr %5, align 8, !tbaa !5
  %3486 = load ptr, ptr %7, align 8, !tbaa !5
  %3487 = load ptr, ptr %295, align 8, !tbaa !5
  %3488 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %3487)
          to label %3489 unwind label %3480

3489:                                             ; preds = %3484
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %3485, ptr noundef nonnull align 8 dereferenceable(480) %3486, ptr noundef nonnull align 8 dereferenceable(120) %3488)
          to label %3490 unwind label %3480

3490:                                             ; preds = %3489
  br label %3491

3491:                                             ; preds = %3490
  store i8 0, ptr %294, align 1, !tbaa !68
  br label %3475, !llvm.loop !166

3492:                                             ; preds = %3479
  br label %3493

3493:                                             ; preds = %3492
  store i8 0, ptr %294, align 1, !tbaa !68
  br label %3467, !llvm.loop !167

3494:                                             ; preds = %3470
  br label %3495

3495:                                             ; preds = %3494, %3465, %3431, %3404, %3244, %3221
  br label %3496

3496:                                             ; preds = %3495
  store i8 0, ptr %265, align 1, !tbaa !68
  br label %3186, !llvm.loop !168

3497:                                             ; preds = %3480, %3446, %3419, %3401, %3236, %3216, %3215, %3194
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #9
  br label %3527

3498:                                             ; preds = %3189
  br label %3499

3499:                                             ; preds = %3498
  store i8 0, ptr %265, align 1, !tbaa !68
  br label %3167, !llvm.loop !169

3500:                                             ; preds = %3170
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #9
  %3501 = load ptr, ptr %259, align 8, !tbaa !5
  %3502 = load i64, ptr %260, align 8, !tbaa !102
  %3503 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3501, i64 noundef %3502) #9
  store ptr %3503, ptr %296, align 8, !tbaa !5
  %3504 = load ptr, ptr %5, align 8, !tbaa !5
  %3505 = load ptr, ptr %7, align 8, !tbaa !5
  %3506 = load ptr, ptr %254, align 8, !tbaa !5
  %3507 = load ptr, ptr %296, align 8, !tbaa !5
  %3508 = getelementptr inbounds %"struct.AST::Named.382", ptr %3507, i32 0, i32 4
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %3504, ptr noundef nonnull align 8 dereferenceable(24) %262, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull align 8 dereferenceable(480) %3505, ptr noundef nonnull align 8 dereferenceable(128) %3506, ptr noundef nonnull align 8 dereferenceable(488) %3508)
          to label %3509 unwind label %3519

3509:                                             ; preds = %3500
  %3510 = load ptr, ptr %296, align 8, !tbaa !5
  %3511 = getelementptr inbounds %"struct.AST::Named.382", ptr %3510, i32 0, i32 1
  %3512 = getelementptr inbounds %"class.AST::AttributeList", ptr %3511, i32 0, i32 0
  %3513 = call noundef i64 @_ZNKSt6vectorIN3AST9AttributeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3512) #9
  %3514 = icmp eq i64 %3513, 0
  br i1 %3514, label %3515, label %3523

3515:                                             ; preds = %3509
  %3516 = load ptr, ptr %296, align 8, !tbaa !5
  %3517 = getelementptr inbounds %"struct.AST::Named.382", ptr %3516, i32 0, i32 1
  %3518 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %3517, ptr noundef nonnull align 8 dereferenceable(24) %262) #9
  br label %3523

3519:                                             ; preds = %3500
  %3520 = landingpad { ptr, i32 }
          cleanup
  %3521 = extractvalue { ptr, i32 } %3520, 0
  store ptr %3521, ptr %12, align 8
  %3522 = extractvalue { ptr, i32 } %3520, 1
  store i32 %3522, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  br label %3527

3523:                                             ; preds = %3515, %3509
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %263) #9
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %262) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %262) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #9
  br label %3524

3524:                                             ; preds = %3523
  %3525 = load i64, ptr %260, align 8, !tbaa !102
  %3526 = add i64 %3525, 1
  store i64 %3526, ptr %260, align 8, !tbaa !102
  br label %3108, !llvm.loop !170

3527:                                             ; preds = %3519, %3497, %3179
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  br label %3528

3528:                                             ; preds = %3527, %3175, %3171
  call void @llvm.lifetime.end.p0(i64 32, ptr %263) #9
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %262) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %262) #9
  br label %3529

3529:                                             ; preds = %3528, %3147
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  br label %3532

3530:                                             ; preds = %3113
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #9
  br label %3531

3531:                                             ; preds = %3530
  store i8 0, ptr %253, align 1, !tbaa !68
  br label %3056, !llvm.loop !171

3532:                                             ; preds = %3529, %3114
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #9
  br label %3533

3533:                                             ; preds = %3532, %3103, %3061
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #9
  br label %3680

3534:                                             ; preds = %3060
  br label %3535

3535:                                             ; preds = %3534
  store i8 0, ptr %253, align 1, !tbaa !68
  br label %3048, !llvm.loop !172

3536:                                             ; preds = %3051
  br label %3678

3537:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %297) #9
  store i8 1, ptr %297, align 1, !tbaa !68
  br label %3538

3538:                                             ; preds = %3564, %3537
  %3539 = load i8, ptr %297, align 1, !tbaa !68, !range !64, !noundef !65
  %3540 = trunc i8 %3539 to i1
  br i1 %3540, label %3542, label %3541

3541:                                             ; preds = %3538
  store i32 358, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  br label %3565

3542:                                             ; preds = %3538
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #9
  %3543 = load ptr, ptr %85, align 8, !tbaa !5
  %3544 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %3543)
          to label %3545 unwind label %3551

3545:                                             ; preds = %3542
  store ptr %3544, ptr %298, align 8, !tbaa !5
  br label %3546

3546:                                             ; preds = %3562, %3545
  %3547 = load ptr, ptr %298, align 8, !tbaa !5
  %3548 = load i8, ptr %297, align 1, !tbaa !68, !range !64, !noundef !65
  %3549 = trunc i8 %3548 to i1
  br i1 %3549, label %3555, label %3550

3550:                                             ; preds = %3546
  store i32 361, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #9
  br label %3563

3551:                                             ; preds = %3560, %3555, %3542
  %3552 = landingpad { ptr, i32 }
          cleanup
  %3553 = extractvalue { ptr, i32 } %3552, 0
  store ptr %3553, ptr %12, align 8
  %3554 = extractvalue { ptr, i32 } %3552, 1
  store i32 %3554, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %297) #9
  br label %3680

3555:                                             ; preds = %3546
  %3556 = load ptr, ptr %5, align 8, !tbaa !5
  %3557 = load ptr, ptr %7, align 8, !tbaa !5
  %3558 = load ptr, ptr %298, align 8, !tbaa !5
  %3559 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %3558)
          to label %3560 unwind label %3551

3560:                                             ; preds = %3555
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %3556, ptr noundef nonnull align 8 dereferenceable(480) %3557, ptr noundef nonnull align 8 dereferenceable(120) %3559)
          to label %3561 unwind label %3551

3561:                                             ; preds = %3560
  br label %3562

3562:                                             ; preds = %3561
  store i8 0, ptr %297, align 1, !tbaa !68
  br label %3546, !llvm.loop !173

3563:                                             ; preds = %3550
  br label %3564

3564:                                             ; preds = %3563
  store i8 0, ptr %297, align 1, !tbaa !68
  br label %3538, !llvm.loop !174

3565:                                             ; preds = %3541
  br label %3678

3566:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %299) #9
  store i8 1, ptr %299, align 1, !tbaa !68
  br label %3567

3567:                                             ; preds = %3591, %3566
  %3568 = load i8, ptr %299, align 1, !tbaa !68, !range !64, !noundef !65
  %3569 = trunc i8 %3568 to i1
  br i1 %3569, label %3571, label %3570

3570:                                             ; preds = %3567
  store i32 364, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #9
  br label %3592

3571:                                             ; preds = %3567
  call void @llvm.lifetime.start.p0(i64 8, ptr %300) #9
  %3572 = load ptr, ptr %85, align 8, !tbaa !5
  %3573 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %3572)
          to label %3574 unwind label %3580

3574:                                             ; preds = %3571
  store ptr %3573, ptr %300, align 8, !tbaa !5
  br label %3575

3575:                                             ; preds = %3589, %3574
  %3576 = load ptr, ptr %300, align 8, !tbaa !5
  %3577 = load i8, ptr %299, align 1, !tbaa !68, !range !64, !noundef !65
  %3578 = trunc i8 %3577 to i1
  br i1 %3578, label %3584, label %3579

3579:                                             ; preds = %3575
  store i32 367, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #9
  br label %3590

3580:                                             ; preds = %3584, %3571
  %3581 = landingpad { ptr, i32 }
          cleanup
  %3582 = extractvalue { ptr, i32 } %3581, 0
  store ptr %3582, ptr %12, align 8
  %3583 = extractvalue { ptr, i32 } %3581, 1
  store i32 %3583, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #9
  br label %3680

3584:                                             ; preds = %3575
  %3585 = load ptr, ptr %5, align 8, !tbaa !5
  %3586 = load ptr, ptr %7, align 8, !tbaa !5
  %3587 = load ptr, ptr %300, align 8, !tbaa !5
  invoke void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30) %3585, ptr noundef nonnull align 8 dereferenceable(480) %3586, ptr noundef nonnull align 8 dereferenceable(368) %3587)
          to label %3588 unwind label %3580

3588:                                             ; preds = %3584
  br label %3589

3589:                                             ; preds = %3588
  store i8 0, ptr %299, align 1, !tbaa !68
  br label %3575, !llvm.loop !175

3590:                                             ; preds = %3579
  br label %3591

3591:                                             ; preds = %3590
  store i8 0, ptr %299, align 1, !tbaa !68
  br label %3567, !llvm.loop !176

3592:                                             ; preds = %3570
  br label %3678

3593:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %301) #9
  store i8 1, ptr %301, align 1, !tbaa !68
  br label %3594

3594:                                             ; preds = %3625, %3593
  %3595 = load i8, ptr %301, align 1, !tbaa !68, !range !64, !noundef !65
  %3596 = trunc i8 %3595 to i1
  br i1 %3596, label %3598, label %3597

3597:                                             ; preds = %3594
  store i32 370, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #9
  br label %3626

3598:                                             ; preds = %3594
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #9
  %3599 = load ptr, ptr %85, align 8, !tbaa !5
  %3600 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %3599)
          to label %3601 unwind label %3607

3601:                                             ; preds = %3598
  store ptr %3600, ptr %302, align 8, !tbaa !5
  br label %3602

3602:                                             ; preds = %3623, %3601
  %3603 = load ptr, ptr %302, align 8, !tbaa !5
  %3604 = load i8, ptr %301, align 1, !tbaa !68, !range !64, !noundef !65
  %3605 = trunc i8 %3604 to i1
  br i1 %3605, label %3611, label %3606

3606:                                             ; preds = %3602
  store i32 373, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #9
  br label %3624

3607:                                             ; preds = %3621, %3616, %3615, %3611, %3598
  %3608 = landingpad { ptr, i32 }
          cleanup
  %3609 = extractvalue { ptr, i32 } %3608, 0
  store ptr %3609, ptr %12, align 8
  %3610 = extractvalue { ptr, i32 } %3608, 1
  store i32 %3610, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #9
  br label %3680

3611:                                             ; preds = %3602
  %3612 = load ptr, ptr %5, align 8, !tbaa !5
  %3613 = load ptr, ptr %302, align 8, !tbaa !5
  %3614 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %3613)
          to label %3615 unwind label %3607

3615:                                             ; preds = %3611
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %3612, ptr noundef nonnull align 8 dereferenceable(16) %3614)
          to label %3616 unwind label %3607

3616:                                             ; preds = %3615
  %3617 = load ptr, ptr %5, align 8, !tbaa !5
  %3618 = load ptr, ptr %7, align 8, !tbaa !5
  %3619 = load ptr, ptr %302, align 8, !tbaa !5
  %3620 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %3619)
          to label %3621 unwind label %3607

3621:                                             ; preds = %3616
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %3617, ptr noundef nonnull align 8 dereferenceable(480) %3618, ptr noundef nonnull align 8 dereferenceable(120) %3620)
          to label %3622 unwind label %3607

3622:                                             ; preds = %3621
  br label %3623

3623:                                             ; preds = %3622
  store i8 0, ptr %301, align 1, !tbaa !68
  br label %3602, !llvm.loop !177

3624:                                             ; preds = %3606
  br label %3625

3625:                                             ; preds = %3624
  store i8 0, ptr %301, align 1, !tbaa !68
  br label %3594, !llvm.loop !178

3626:                                             ; preds = %3597
  br label %3678

3627:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 1, ptr %303) #9
  store i8 1, ptr %303, align 1, !tbaa !68
  br label %3628

3628:                                             ; preds = %3676, %3627
  %3629 = load i8, ptr %303, align 1, !tbaa !68, !range !64, !noundef !65
  %3630 = trunc i8 %3629 to i1
  br i1 %3630, label %3632, label %3631

3631:                                             ; preds = %3628
  store i32 376, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #9
  br label %3677

3632:                                             ; preds = %3628
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #9
  %3633 = load ptr, ptr %85, align 8, !tbaa !5
  %3634 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZN3AST4Item13as_TraitAliasEv(ptr noundef nonnull align 8 dereferenceable(488) %3633)
          to label %3635 unwind label %3641

3635:                                             ; preds = %3632
  store ptr %3634, ptr %304, align 8, !tbaa !5
  br label %3636

3636:                                             ; preds = %3673, %3635
  %3637 = load ptr, ptr %304, align 8, !tbaa !5
  %3638 = load i8, ptr %303, align 1, !tbaa !68, !range !64, !noundef !65
  %3639 = trunc i8 %3638 to i1
  br i1 %3639, label %3645, label %3640

3640:                                             ; preds = %3636
  store i32 379, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #9
  br label %3675

3641:                                             ; preds = %3632
  %3642 = landingpad { ptr, i32 }
          cleanup
  %3643 = extractvalue { ptr, i32 } %3642, 0
  store ptr %3643, ptr %12, align 8
  %3644 = extractvalue { ptr, i32 } %3642, 1
  store i32 %3644, ptr %13, align 4
  br label %3674

3645:                                             ; preds = %3636
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #9
  %3646 = load ptr, ptr %304, align 8, !tbaa !5
  %3647 = getelementptr inbounds %"class.AST::TraitAlias", ptr %3646, i32 0, i32 1
  store ptr %3647, ptr %305, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #9
  %3648 = load ptr, ptr %305, align 8, !tbaa !5
  %3649 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3648) #9
  %3650 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.423", ptr %306, i32 0, i32 0
  store ptr %3649, ptr %3650, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #9
  %3651 = load ptr, ptr %305, align 8, !tbaa !5
  %3652 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3651) #9
  %3653 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.423", ptr %307, i32 0, i32 0
  store ptr %3652, ptr %3653, align 8
  br label %3654

3654:                                             ; preds = %3666, %3645
  %3655 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(8) %307) #9
  br i1 %3655, label %3657, label %3656

3656:                                             ; preds = %3654
  store i32 382, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %3672

3657:                                             ; preds = %3654
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #9
  %3658 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  store ptr %3658, ptr %308, align 8, !tbaa !5
  %3659 = load ptr, ptr %5, align 8, !tbaa !5
  %3660 = load ptr, ptr %7, align 8, !tbaa !5
  %3661 = load ptr, ptr %308, align 8, !tbaa !5
  %3662 = getelementptr inbounds %struct.Spanned.424, ptr %3661, i32 0, i32 1
  %3663 = getelementptr inbounds %struct.Type_TraitPath, ptr %3662, i32 0, i32 1
  %3664 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3663) #9
  invoke void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30) %3659, ptr noundef nonnull align 8 dereferenceable(480) %3660, ptr noundef nonnull align 8 dereferenceable(240) %3664)
          to label %3665 unwind label %3668

3665:                                             ; preds = %3657
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #9
  br label %3666

3666:                                             ; preds = %3665
  %3667 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %306) #9
  br label %3654

3668:                                             ; preds = %3657
  %3669 = landingpad { ptr, i32 }
          cleanup
  %3670 = extractvalue { ptr, i32 } %3669, 0
  store ptr %3670, ptr %12, align 8
  %3671 = extractvalue { ptr, i32 } %3669, 1
  store i32 %3671, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %3674

3672:                                             ; preds = %3656
  br label %3673

3673:                                             ; preds = %3672
  store i8 0, ptr %303, align 1, !tbaa !68
  br label %3636, !llvm.loop !179

3674:                                             ; preds = %3668, %3641
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #9
  br label %3680

3675:                                             ; preds = %3640
  br label %3676

3676:                                             ; preds = %3675
  store i8 0, ptr %303, align 1, !tbaa !68
  br label %3628, !llvm.loop !180

3677:                                             ; preds = %3631
  br label %3678

3678:                                             ; preds = %3677, %3626, %3592, %3565, %3536, %3046, %2947, %2578, %2311, %2190, %2166, %2114, %2060, %2000, %1685, %1600, %1365, %1342, %1314
  br label %3679

3679:                                             ; preds = %3678
  store i8 0, ptr %84, align 1, !tbaa !68
  br label %1307, !llvm.loop !181

3680:                                             ; preds = %3674, %3607, %3580, %3551, %3533, %3043, %2944, %2575, %2308, %2181, %2163, %2111, %2057, %1997, %1682, %1597, %1357, %1334, %1315
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #9
  br label %3728

3681:                                             ; preds = %1310
  br label %3682

3682:                                             ; preds = %3681
  store i8 0, ptr %84, align 1, !tbaa !68
  br label %1302, !llvm.loop !182

3683:                                             ; preds = %1305
  %3684 = load ptr, ptr %5, align 8, !tbaa !5
  %3685 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %3684, ptr noundef nonnull align 8 dereferenceable(24) %76, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(480) %3685, ptr noundef nonnull align 8 dereferenceable(36) %77, ptr noundef nonnull align 8 dereferenceable(488) %83)
          to label %3686 unwind label %3703

3686:                                             ; preds = %3683
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #9
  %3687 = load ptr, ptr %7, align 8, !tbaa !5
  %3688 = getelementptr inbounds %"class.AST::Module", ptr %3687, i32 0, i32 1
  %3689 = load i32, ptr %41, align 4, !tbaa !9
  %3690 = zext i32 %3689 to i64
  %3691 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3688, i64 noundef %3690) #9
  %3692 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3691) #9
  store ptr %3692, ptr %309, align 8, !tbaa !5
  %3693 = load ptr, ptr %309, align 8, !tbaa !5
  %3694 = getelementptr inbounds %"struct.AST::Named.382", ptr %3693, i32 0, i32 4
  %3695 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %3694)
          to label %3696 unwind label %3707

3696:                                             ; preds = %3686
  %3697 = icmp eq i32 %3695, 0
  br i1 %3697, label %3698, label %3711

3698:                                             ; preds = %3696
  %3699 = load ptr, ptr %309, align 8, !tbaa !5
  %3700 = getelementptr inbounds %"struct.AST::Named.382", ptr %3699, i32 0, i32 4
  %3701 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %3700, ptr noundef nonnull align 8 dereferenceable(488) %83)
          to label %3702 unwind label %3707

3702:                                             ; preds = %3698
  br label %3711

3703:                                             ; preds = %3683
  %3704 = landingpad { ptr, i32 }
          cleanup
  %3705 = extractvalue { ptr, i32 } %3704, 0
  store ptr %3705, ptr %12, align 8
  %3706 = extractvalue { ptr, i32 } %3704, 1
  store i32 %3706, ptr %13, align 4
  br label %3728

3707:                                             ; preds = %3698, %3686
  %3708 = landingpad { ptr, i32 }
          cleanup
  %3709 = extractvalue { ptr, i32 } %3708, 0
  store ptr %3709, ptr %12, align 8
  %3710 = extractvalue { ptr, i32 } %3708, 1
  store i32 %3710, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #9
  br label %3728

3711:                                             ; preds = %3702, %3696
  %3712 = load ptr, ptr %309, align 8, !tbaa !5
  %3713 = getelementptr inbounds %"struct.AST::Named.382", ptr %3712, i32 0, i32 1
  %3714 = getelementptr inbounds %"class.AST::AttributeList", ptr %3713, i32 0, i32 0
  %3715 = call noundef i64 @_ZNKSt6vectorIN3AST9AttributeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3714) #9
  %3716 = icmp eq i64 %3715, 0
  br i1 %3716, label %3717, label %3721

3717:                                             ; preds = %3711
  %3718 = load ptr, ptr %309, align 8, !tbaa !5
  %3719 = getelementptr inbounds %"struct.AST::Named.382", ptr %3718, i32 0, i32 1
  %3720 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %3719, ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  br label %3721

3721:                                             ; preds = %3717, %3711
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #9
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %83) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %83) #9
  store i32 0, ptr %42, align 4
  br label %3722

3722:                                             ; preds = %3721, %1252
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %77) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %77) #9
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  %3723 = load i32, ptr %42, align 4
  switch i32 %3723, label %3742 [
    i32 0, label %3724
    i32 18, label %3725
  ]

3724:                                             ; preds = %3722
  br label %3725

3725:                                             ; preds = %3724, %3722
  %3726 = load i32, ptr %41, align 4, !tbaa !9
  %3727 = add i32 %3726, 1
  store i32 %3727, ptr %41, align 4, !tbaa !9
  br label %667, !llvm.loop !183

3728:                                             ; preds = %3707, %3703, %3680
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %83) #9
  call void @llvm.lifetime.end.p0(i64 488, ptr %83) #9
  br label %3729

3729:                                             ; preds = %3728, %1298, %1216
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %77) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %77) #9
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  br label %3730

3730:                                             ; preds = %3729, %1197, %847, %846
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %3731

3731:                                             ; preds = %3730, %799, %795
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  br label %3732

3732:                                             ; preds = %3731, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %3734

3733:                                             ; preds = %674
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #9
  ret void

3734:                                             ; preds = %3732, %659
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #9
  br label %3735

3735:                                             ; preds = %3734, %625, %538, %537, %482, %447, %367
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #9
  br label %3736

3736:                                             ; preds = %3735, %346
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #9
  br label %3737

3737:                                             ; preds = %3736
  %3738 = load ptr, ptr %12, align 8
  %3739 = load i32, ptr %13, align 4
  %3740 = insertvalue { ptr, i32 } poison, ptr %3738, 0
  %3741 = insertvalue { ptr, i32 } %3740, i32 %3739, 1
  resume { ptr, i32 } %3741

3742:                                             ; preds = %3722, %3290, %3206, %2185, %1632, %1394
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3AST6Module11MacroImport5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.AST::Module::MacroImport") align 8, ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind noalias writable sret(%"struct.AST::AbsolutePath") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5 align 2

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

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

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

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

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

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

declare void @_ZN3AST6Module8add_itemE4SpanNS_10VisibilityE8RcStringNS_4ItemENS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9make_vec1IN3AST7UseItem3EntEESt6vectorIT_SaIS4_EEOS4_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.146") align 8, ptr noundef nonnull align 8 dereferenceable(256)) #5

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN3AST4Item10tag_to_strENS0_3TagE(i32 noundef) #3 align 2

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

declare void @_ZN3AST10Visibility11make_globalEv(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8) #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

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

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

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

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

declare noundef zeroext i1 @_Z15check_cfg_attrsRKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z19Parse_ModRoot_ItemsR11TokenStreamRN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(480)) #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) #5 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN3AST6Module9add_macroEb8RcString13MacroRulesPtr(ptr noundef nonnull align 8 dereferenceable(480), i1 noundef zeroext, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_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(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #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)) #5 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)) #5

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

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

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

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

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

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

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

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

declare void @_ZN3AST5Crate17load_extern_crateE4SpanRK8RcStringRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_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(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(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 @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

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

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

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

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

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

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

declare void @_Z16Parse_Trait_ItemR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::Named.382") align 8, ptr noundef nonnull align 8 dereferenceable(176)) #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { noreturn 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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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, !14, i64 24}
!12 = !{!"_ZTS11ExpandState", !6, i64 0, !13, i64 8, !14, i64 24, !15, i64 28, !15, i64 29}
!13 = !{!"_ZTS5LListIPKN3AST6ModuleEE", !6, i64 0, !6, i64 8}
!14 = !{!"_ZTS10ExpandMode", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!12, !6, i64 8}
!17 = !{!13, !6, i64 8}
!18 = !{!19, !15, i64 0}
!19 = !{!"_ZTSN3AST6Module11MacroImportE", !15, i64 0, !20, i64 8, !21, i64 16, !26, i64 48}
!20 = !{!"_ZTS8RcString", !6, i64 0}
!21 = !{!"_ZTSN3AST12AbsolutePathE", !20, i64 0, !22, i64 8}
!22 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTS8MacroRef", !27, i64 0, !7, i64 8}
!27 = !{!"_ZTSN8MacroRef3TagE", !7, i64 0}
!28 = !{!12, !6, i64 0}
!29 = !{!30, !15, i64 176}
!30 = !{!"_ZTSN3AST6ModuleE", !21, i64 0, !31, i64 32, !35, i64 56, !39, i64 80, !43, i64 104, !15, i64 176, !7, i64 177, !47, i64 184, !47, i64 240, !47, i64 296, !47, i64 352, !52, i64 408, !56, i64 432, !60, i64 456}
!31 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSN3AST6Module8FileInfoE", !15, i64 0, !15, i64 1, !44, i64 8, !44, i64 40}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !45, i64 0, !46, i64 8, !7, i64 16}
!45 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!46 = !{!"long", !7, i64 0}
!47 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !48, i64 0}
!48 = !{!"_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, !46, i64 8, !49, i64 16, !46, i64 24, !50, i64 32, !6, i64 48}
!49 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!50 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !51, i64 0, !46, i64 8}
!51 = !{!"float", !7, i64 0}
!52 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.mustprogress"}
!68 = !{!15, !15, i64 0}
!69 = distinct !{!69, !67}
!70 = distinct !{!70, !67}
!71 = distinct !{!71, !67}
!72 = distinct !{!72, !67}
!73 = distinct !{!73, !67}
!74 = distinct !{!74, !67}
!75 = distinct !{!75, !67}
!76 = distinct !{!76, !67}
!77 = distinct !{!77, !67}
!78 = distinct !{!78, !67}
!79 = distinct !{!79, !67}
!80 = distinct !{!80, !67}
!81 = !{i64 0, i64 8, !5}
!82 = distinct !{!82, !67}
!83 = distinct !{!83, !67}
!84 = distinct !{!84, !67}
!85 = distinct !{!85, !67}
!86 = distinct !{!86, !67}
!87 = distinct !{!87, !67}
!88 = distinct !{!88, !67}
!89 = distinct !{!89, !67}
!90 = distinct !{!90, !67}
!91 = distinct !{!91, !67}
!92 = distinct !{!92, !67}
!93 = distinct !{!93, !67}
!94 = distinct !{!94, !67}
!95 = !{i64 0, i64 8, !5, i64 8, i64 8, !5}
!96 = !{!12, !15, i64 28}
!97 = !{!12, !15, i64 29}
!98 = distinct !{!98, !67}
!99 = distinct !{!99, !67}
!100 = distinct !{!100, !67}
!101 = distinct !{!101, !67}
!102 = !{!46, !46, i64 0}
!103 = distinct !{!103, !67}
!104 = distinct !{!104, !67}
!105 = distinct !{!105, !67}
!106 = distinct !{!106, !67}
!107 = distinct !{!107, !67}
!108 = distinct !{!108, !67}
!109 = distinct !{!109, !67}
!110 = distinct !{!110, !67}
!111 = distinct !{!111, !67}
!112 = distinct !{!112, !67}
!113 = distinct !{!113, !67}
!114 = distinct !{!114, !67}
!115 = distinct !{!115, !67}
!116 = distinct !{!116, !67}
!117 = distinct !{!117, !67}
!118 = distinct !{!118, !67}
!119 = distinct !{!119, !67}
!120 = distinct !{!120, !67}
!121 = distinct !{!121, !67}
!122 = distinct !{!122, !67}
!123 = distinct !{!123, !67}
!124 = distinct !{!124, !67}
!125 = distinct !{!125, !67}
!126 = distinct !{!126, !67}
!127 = distinct !{!127, !67}
!128 = distinct !{!128, !67}
!129 = distinct !{!129, !67}
!130 = distinct !{!130, !67}
!131 = distinct !{!131, !67}
!132 = distinct !{!132, !67}
!133 = distinct !{!133, !67}
!134 = distinct !{!134, !67}
!135 = distinct !{!135, !67}
!136 = distinct !{!136, !67}
!137 = distinct !{!137, !67}
!138 = distinct !{!138, !67}
!139 = distinct !{!139, !67}
!140 = distinct !{!140, !67}
!141 = distinct !{!141, !67}
!142 = distinct !{!142, !67}
!143 = distinct !{!143, !67}
!144 = distinct !{!144, !67}
!145 = distinct !{!145, !67}
!146 = distinct !{!146, !67}
!147 = distinct !{!147, !67}
!148 = distinct !{!148, !67}
!149 = distinct !{!149, !67}
!150 = distinct !{!150, !67}
!151 = distinct !{!151, !67}
!152 = distinct !{!152, !67}
!153 = distinct !{!153, !67}
!154 = distinct !{!154, !67}
!155 = distinct !{!155, !67}
!156 = distinct !{!156, !67}
!157 = distinct !{!157, !67}
!158 = distinct !{!158, !67}
!159 = distinct !{!159, !67}
!160 = distinct !{!160, !67}
!161 = distinct !{!161, !67}
!162 = distinct !{!162, !67}
!163 = distinct !{!163, !67}
!164 = distinct !{!164, !67}
!165 = distinct !{!165, !67}
!166 = distinct !{!166, !67}
!167 = distinct !{!167, !67}
!168 = distinct !{!168, !67}
!169 = distinct !{!169, !67}
!170 = distinct !{!170, !67}
!171 = distinct !{!171, !67}
!172 = distinct !{!172, !67}
!173 = distinct !{!173, !67}
!174 = distinct !{!174, !67}
!175 = distinct !{!175, !67}
!176 = distinct !{!176, !67}
!177 = distinct !{!177, !67}
!178 = distinct !{!178, !67}
!179 = distinct !{!179, !67}
!180 = distinct !{!180, !67}
!181 = distinct !{!181, !67}
!182 = distinct !{!182, !67}
!183 = distinct !{!183, !67}


; 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.394" = type { %"class.std::_Rb_tree.395" }
%"class.std::_Rb_tree.395" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, RcString>, std::_Select1st<std::pair<const RcString, RcString>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, RcString>, std::_Select1st<std::pair<const RcString, RcString>>, 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.ResolveItemRef_Macro = type { i32, %"union.ResolveItemRef_Macro::DataUnion" }
%"union.ResolveItemRef_Macro::DataUnion" = type { ptr }
%"class.std::unique_ptr.273" = type { %"struct.std::__uniq_ptr_data.274" }
%"struct.std::__uniq_ptr_data.274" = type { %"class.std::__uniq_ptr_impl.275" }
%"class.std::__uniq_ptr_impl.275" = type { %"class.std::tuple.276" }
%"class.std::tuple.276" = type { %"struct.std::_Tuple_impl.277" }
%"struct.std::_Tuple_impl.277" = type { %"struct.std::_Head_base.280" }
%"struct.std::_Head_base.280" = type { ptr }
%"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" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%class.RcString = type { ptr }
%"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.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.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::__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.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 }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.367 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.272" = type { 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 }
%"class.__gnu_cxx::__normal_iterator.266" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.368" = 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" }
%"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 }
%struct.Span = 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" }
%"struct.AST::UseItem" = type { %struct.Span, %"class.std::vector.146" }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::UseItem::Ent, std::allocator<AST::UseItem::Ent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::UseItem::Ent" = type { %struct.Span, %"class.AST::Path", %class.RcString }
%"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 }
%"class.std::vector.369" = type { %"struct.std::_Vector_base.370" }
%"struct.std::_Vector_base.370" = type { %"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl" }
%"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const AST::Named<AST::Item> *, std::allocator<const AST::Named<AST::Item> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.383" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.384" = type { ptr }
%struct.LList = type { ptr, ptr }
%struct.ExpandState = type <{ ptr, %struct.LList, i32, i8, i8, [2 x i8] }>
%class.anon.385 = type { i8 }
%"class.AST::MacroInvocation" = type <{ %struct.Span, %"class.AST::Path", %class.RcString, %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.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 }
%class.anon.387 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.389" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.388" = type { ptr }
%class.anon.391 = type { ptr }
%class.MacroRulesPtr = type { ptr }
%"class.__gnu_cxx::__normal_iterator.392" = type { ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<AST::Item>, std::allocator<AST::Named<AST::Item>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.393" = type { ptr }
%"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 }
%"class.std::allocator.5" = type { i8 }
%"struct.std::pair.403" = type { %class.RcString, %class.RcString }
%"struct.std::pair.405" = type { %class.RcString, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"class.std::function.44" = type { %"class.std::_Function_base", ptr }
%class.anon.408 = type { ptr, ptr }
%class.anon.409 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.410" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.411" = type { ptr }
%class.anon.412 = type { ptr, ptr }
%class.anon.413 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.414" = type { ptr }
%class.anon.415 = type { ptr, ptr }
%class.anon.416 = type { ptr, ptr }
%class.anon.417 = type { ptr, ptr }
%class.anon.418 = type { ptr, ptr }
%class.anon.419 = type { ptr, ptr }
%class.anon.420 = type { ptr, ptr }
%class.anon.421 = type { ptr, ptr }
%class.anon.422 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.423" = type { ptr }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr }
%class.anon.427 = type { i8 }
%"struct.AST::Named.382" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }

@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.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj = external hidden unnamed_addr constant [89 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTIPKc = external constant ptr
@_ZN3AST17g_implicit_cratesE = external global %"class.std::map.394", align 8
@.str.48 = external hidden unnamed_addr constant [4 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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

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

; 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 #5 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)) #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_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(128), ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #5

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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 uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z20Resolve_Lookup_MacroRK4SpanRKN3AST5CrateERKNS2_4PathES6_PNS2_12AbsolutePathE(ptr dead_on_unwind writable sret(%class.ResolveItemRef_Macro) align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr.273") align 8, ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(393)) local_unnamed_addr #5

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

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

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

declare noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #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 #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(240)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11Expand_ImplRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_4ImplE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(472)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind noalias writable sret(%"class.AST::Item") align 8) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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 @_Z14Expand_ImplDefRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_7ImplDefE(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef, ptr noundef nonnull align 8 dereferenceable(480), ptr noundef nonnull align 8 dereferenceable(448)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(480) %2, i32 noundef %3) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.367, align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.272", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.272", align 8
  %11 = alloca %"struct.AST::Module::MacroImport", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.266", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.266", align 8
  %14 = alloca %"struct.AST::Module::MacroImport", align 8
  %15 = alloca %class.RcString, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.368", align 8
  %18 = alloca %"class.AST::Path", align 8
  %19 = alloca %struct.Span, align 8
  %20 = alloca %"class.AST::Visibility", align 8
  %21 = alloca %"struct.AST::AbsolutePath", align 8
  %22 = alloca %class.RcString, align 8
  %23 = alloca %"class.AST::Item", align 8
  %24 = alloca %"struct.AST::UseItem", align 8
  %25 = alloca %"struct.AST::UseItem::Ent", align 8
  %26 = alloca %"class.AST::AttributeList", align 8
  %27 = alloca %"class.std::vector.369", align 8
  %28 = alloca %"struct.AST::AbsolutePath", align 8
  %29 = alloca %class.RcString, align 8
  %30 = alloca %"class.AST::Visibility", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.384", align 8
  %34 = alloca %"class.AST::AttributeList", align 8
  %35 = alloca %"class.AST::Visibility", align 8
  %36 = alloca %struct.LList, align 8
  %37 = alloca %struct.ExpandState, align 8
  %38 = alloca %"struct.AST::AbsolutePath", align 8
  %39 = alloca %"class.AST::Item", align 8
  %40 = alloca %struct.Span, align 8
  %41 = alloca %"class.std::function", align 8
  %42 = alloca %class.anon.385, align 1
  %43 = alloca %"class.AST::MacroInvocation", align 8
  %44 = alloca %class.TraceLog, align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon.387, align 8
  %47 = alloca %"class.std::unique_ptr.273", align 8
  %48 = alloca %"class.std::vector.59", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.389", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.388", align 8
  %53 = alloca ptr, align 8
  %54 = alloca %struct.Span, align 8
  %55 = alloca %"class.std::function", align 8
  %56 = alloca %class.anon.391, align 8
  %57 = alloca %class.RcString, align 8
  %58 = alloca %class.MacroRulesPtr, align 8
  %59 = alloca %"class.AST::Item", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.392", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.392", align 8
  %62 = alloca %"struct.AST::AbsolutePath", align 8
  %63 = alloca %class.ResolveItemRef_Macro, align 8
  %64 = alloca %"class.AST::Path", align 8
  %65 = alloca %"class.AST::Path", align 8
  %66 = alloca %class.MacroRef, align 8
  %67 = alloca %class.MacroRef, align 8
  %68 = alloca %class.MacroRef, align 8
  %69 = alloca %"struct.AST::Module::MacroImport", align 8
  %70 = alloca %"class.std::vector.151", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %73 = alloca %"class.std::unique_ptr.374", align 8
  %74 = alloca %"class.AST::Path", align 8
  %75 = alloca %"class.AST::Item", align 8
  %76 = alloca %"class.AST::Path", align 8
  %77 = alloca %"class.AST::Item", align 8
  %78 = alloca %class.RcString, align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator.5", align 1
  %82 = alloca %"struct.std::pair.403", align 8
  %83 = alloca %"struct.std::pair.405", align 8
  %84 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %86 = alloca %"class.std::function.44", align 8
  %87 = alloca %class.anon.408, align 8
  %88 = alloca %"class.std::function.44", align 8
  %89 = alloca %class.anon.409, align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %92 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %93 = alloca %"class.std::function.44", align 8
  %94 = alloca %class.anon.412, align 8
  %95 = alloca %"class.std::function.44", align 8
  %96 = alloca %class.anon.413, align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.414", align 8
  %98 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %99 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %100 = alloca %"class.std::function.44", align 8
  %101 = alloca %class.anon.415, align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.411", align 8
  %104 = alloca %"class.std::function.44", align 8
  %105 = alloca %class.anon.416, align 8
  %106 = alloca %"class.std::function.44", align 8
  %107 = alloca %class.anon.417, align 8
  %108 = alloca %"class.__gnu_cxx::__normal_iterator.414", align 8
  %109 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %110 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %111 = alloca %"class.std::function.44", align 8
  %112 = alloca %class.anon.418, align 8
  %113 = alloca %"class.std::function.44", align 8
  %114 = alloca %class.anon.419, align 8
  %115 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %116 = alloca %"class.std::function.44", align 8
  %117 = alloca %class.anon.420, align 8
  %118 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %119 = alloca %"class.__gnu_cxx::__normal_iterator.383", align 8
  %120 = alloca %"class.__gnu_cxx::__normal_iterator.384", align 8
  %121 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %122 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %123 = alloca %"class.std::function.44", align 8
  %124 = alloca %class.anon.421, align 8
  %125 = alloca %"class.std::function.44", align 8
  %126 = alloca %class.anon.422, align 8
  %127 = alloca %"class.__gnu_cxx::__normal_iterator.410", align 8
  %128 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %129 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %130 = alloca %"class.AST::AttributeList", align 8
  %131 = alloca %"struct.AST::AbsolutePath", align 8
  %132 = alloca %class.RcString, align 8
  %133 = alloca %struct.Span, align 8
  %134 = alloca %"class.std::function", align 8
  %135 = alloca %class.anon.425, align 8
  %136 = alloca %class.TraceLog, align 8
  %137 = alloca %"class.std::function", align 8
  %138 = alloca %class.anon.426, align 8
  %139 = alloca %"class.AST::MacroInvocation", align 8
  %140 = alloca %"class.std::unique_ptr.273", align 8
  %141 = alloca %struct.Span, align 8
  %142 = alloca %"class.std::function", align 8
  %143 = alloca %class.anon.427, align 1
  %144 = alloca %"struct.AST::Named.382", align 8
  %145 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %146 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %147 = alloca %"class.__gnu_cxx::__normal_iterator.393", align 8
  %148 = alloca %"class.AST::Item", align 8
  %149 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  %150 = alloca %"class.__gnu_cxx::__normal_iterator.423", align 8
  store i32 %3, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #8
  %151 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %152 = select i1 %151, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  store ptr %1, ptr %8, align 8, !tbaa !9
  %153 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr %5, ptr %153, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(16) %8) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %152, ptr noundef nonnull %7)
          to label %154 unwind label %183

154:                                              ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  %155 = getelementptr inbounds i8, ptr %0, i64 24
  %156 = load i32, ptr %155, align 8, !tbaa !11
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %328

158:                                              ; preds = %154
  %159 = load i32, ptr %5, align 4, !tbaa !5
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %245

161:                                              ; preds = %158
  %162 = getelementptr inbounds i8, ptr %0, i64 8
  %163 = load ptr, ptr %162, align 8, !tbaa !16
  %.not = icmp eq ptr %163, null
  br i1 %.not, label %218, label %164

164:                                              ; preds = %161
  %165 = getelementptr inbounds i8, ptr %163, i64 8
  %166 = load ptr, ptr %165, align 8, !tbaa !17
  %167 = getelementptr inbounds i8, ptr %166, i64 432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %168 = call ptr @_ZNKSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #8
  store ptr %168, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %169 = call ptr @_ZNKSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #8
  store ptr %169, ptr %10, align 8
  %170 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %170, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %164
  %171 = getelementptr inbounds i8, ptr %2, i64 432
  br label %185

._crit_edge:                                      ; preds = %188, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  %172 = load ptr, ptr %162, align 8, !tbaa !16
  %173 = getelementptr inbounds i8, ptr %172, i64 8
  %174 = load ptr, ptr %173, align 8, !tbaa !17
  %175 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST6Module6macrosEv(ptr noundef nonnull align 8 dereferenceable(480) %174)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %176 = call ptr @_ZNKSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %175) #8
  store ptr %176, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %177 = call ptr @_ZNKSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %175) #8
  store ptr %177, ptr %13, align 8
  %178 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %178, label %.lr.ph1161, label %._crit_edge1162

.lr.ph1161:                                       ; preds = %._crit_edge
  %179 = getelementptr inbounds i8, ptr %2, i64 432
  %180 = getelementptr inbounds i8, ptr %14, i64 8
  %181 = getelementptr inbounds i8, ptr %14, i64 16
  %182 = getelementptr inbounds i8, ptr %14, i64 48
  br label %196

183:                                              ; preds = %4
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br label %1317

185:                                              ; preds = %.lr.ph, %188
  %186 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #8
  invoke void @_ZNK3AST6Module11MacroImport5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.AST::Module::MacroImport") align 8 %11, ptr noundef nonnull align 8 dereferenceable(64) %186)
          to label %187 unwind label %191

187:                                              ; preds = %185
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 8 dereferenceable(64) %11)
          to label %188 unwind label %193

188:                                              ; preds = %187
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %11) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #8
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  %190 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %190, label %185, label %._crit_edge

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

193:                                              ; preds = %187
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %11) #8
  br label %195

195:                                              ; preds = %193, %191
  %.pn845 = phi { ptr, i32 } [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br label %1316

._crit_edge1162:                                  ; preds = %207, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %218

196:                                              ; preds = %.lr.ph1161, %207
  %197 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #8
  store i8 0, ptr %14, align 8, !tbaa !18
  %198 = getelementptr inbounds i8, ptr %197, i64 72
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %198)
  %199 = load ptr, ptr %162, align 8, !tbaa !16
  %200 = getelementptr inbounds i8, ptr %199, i64 8
  %201 = load ptr, ptr %200, align 8, !tbaa !17
  %202 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %201)
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %198)
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind nonnull writable sret(%"struct.AST::AbsolutePath") align 8 %181, ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull %15)
          to label %203 unwind label %210

203:                                              ; preds = %196
  %204 = getelementptr inbounds i8, ptr %197, i64 80
  %205 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK13MacroRulesPtrdeEv(ptr noundef nonnull align 8 dereferenceable(8) %204)
  invoke void @_ZN8MacroRefC2EPK10MacroRules(ptr noundef nonnull align 8 dereferenceable(16) %182, ptr noundef nonnull %205)
          to label %206 unwind label %212

206:                                              ; preds = %203
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr noundef nonnull align 8 dereferenceable(64) %14)
          to label %207 unwind label %214

207:                                              ; preds = %206
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #8
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedI13MacroRulesPtrEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %209, label %196, label %._crit_edge1162

210:                                              ; preds = %196
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %216

212:                                              ; preds = %203
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #8
  br label %216

214:                                              ; preds = %206
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %14) #8
  br label %217

216:                                              ; preds = %212, %210
  %.pn843.ph = phi { ptr, i32 } [ %211, %210 ], [ %213, %212 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %217

217:                                              ; preds = %214, %216
  %.sink = phi ptr [ %15, %214 ], [ %180, %216 ]
  %.pn843851 = phi { ptr, i32 } [ %215, %214 ], [ %.pn843.ph, %216 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %.sink) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %1316

218:                                              ; preds = %._crit_edge1162, %161
  %219 = getelementptr inbounds i8, ptr %2, i64 432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %220 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %219) #8
  store ptr %220, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %221 = call ptr @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %219) #8
  store ptr %221, ptr %17, align 8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %222, label %.lr.ph1164, label %._crit_edge1165

._crit_edge1165:                                  ; preds = %242, %218
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %245

.lr.ph1164:                                       ; preds = %218, %242
  %223 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %224 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %225 unwind label %240

225:                                              ; preds = %.lr.ph1164
  br i1 %224, label %226, label %242

226:                                              ; preds = %225
  %227 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %227, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %229 unwind label %240

229:                                              ; preds = %226
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull @.str.32)
          to label %231 unwind label %240

231:                                              ; preds = %229
  %232 = getelementptr inbounds i8, ptr %223, i64 16
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef nonnull align 8 dereferenceable(32) %232)
          to label %234 unwind label %240

234:                                              ; preds = %231
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef nonnull @.str.33)
          to label %236 unwind label %240

236:                                              ; preds = %234
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %238 unwind label %240

238:                                              ; preds = %236
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %242 unwind label %240

240:                                              ; preds = %238, %236, %234, %231, %229, %226, %.lr.ph1164
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %1316

242:                                              ; preds = %238, %225
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %244 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST6Module11MacroImportESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %244, label %.lr.ph1164, label %._crit_edge1165

245:                                              ; preds = %._crit_edge1165, %158
  %246 = load ptr, ptr %0, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %18) #8
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %18)
          to label %247 unwind label %273

247:                                              ; preds = %245
  %248 = getelementptr inbounds i8, ptr %246, i64 872
  %249 = invoke noundef zeroext i1 @_ZNK3AST4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %248, ptr noundef nonnull align 8 dereferenceable(240) %18)
          to label %250 unwind label %275

250:                                              ; preds = %247
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %18) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %18) #8
  br i1 %249, label %251, label %328

251:                                              ; preds = %250
  %252 = getelementptr inbounds i8, ptr %2, i64 176
  %253 = load i8, ptr %252, align 8, !tbaa !29, !range !64, !noundef !65
  %254 = trunc nuw i8 %253 to i1
  br i1 %254, label %255, label %316

255:                                              ; preds = %251
  %256 = call noundef zeroext i1 @_ZNK3AST6Module7is_anonEv(ptr noundef nonnull align 8 dereferenceable(480) %2)
  br i1 %256, label %316, label %257

257:                                              ; preds = %255
  %258 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %259 unwind label %278

259:                                              ; preds = %257
  br i1 %258, label %260, label %280

260:                                              ; preds = %259
  %261 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %261, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %263 unwind label %278

263:                                              ; preds = %260
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull @.str.34)
          to label %265 unwind label %278

265:                                              ; preds = %263
  %266 = load ptr, ptr %0, align 8, !tbaa !28
  %267 = getelementptr inbounds i8, ptr %266, i64 872
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull align 8 dereferenceable(240) %267)
          to label %269 unwind label %278

269:                                              ; preds = %265
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %271 unwind label %278

271:                                              ; preds = %269
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %280 unwind label %278

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

275:                                              ; preds = %247
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %18) #8
  br label %277

277:                                              ; preds = %275, %273
  %.pn = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %18) #8
  br label %1316

278:                                              ; preds = %326, %324, %322, %319, %316, %271, %269, %265, %263, %260, %257
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %1316

280:                                              ; preds = %271, %259
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %281 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %2)
  invoke void @_ZN3AST12AbsolutePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %281)
          to label %282 unwind label %295

282:                                              ; preds = %280
  invoke void @_ZN3AST10Visibility15make_restrictedENS0_2TyENS_12AbsolutePathE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Visibility") align 8 %20, i32 noundef 0, ptr noundef nonnull %21)
          to label %283 unwind label %297

283:                                              ; preds = %282
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull @.str.19)
          to label %284 unwind label %299

284:                                              ; preds = %283
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %285 = getelementptr inbounds i8, ptr %24, i64 8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %25) #8
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  %286 = getelementptr inbounds i8, ptr %25, i64 8
  %287 = load ptr, ptr %0, align 8, !tbaa !28
  %288 = getelementptr inbounds i8, ptr %287, i64 872
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %286, ptr noundef nonnull align 8 dereferenceable(240) %288)
          to label %289 unwind label %301

289:                                              ; preds = %284
  %290 = getelementptr inbounds i8, ptr %25, i64 248
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull @.str.19)
          to label %291 unwind label %303

291:                                              ; preds = %289
  invoke void @_Z9make_vec1IN3AST7UseItem3EntEESt6vectorIT_SaIS4_EEOS4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.146") align 8 %285, ptr noundef nonnull align 8 dereferenceable(256) %25)
          to label %292 unwind label %.thread858

292:                                              ; preds = %291
  invoke void @_ZN3AST4ItemC2ENS_7UseItemE(ptr noundef nonnull align 8 dereferenceable(488) %23, ptr noundef nonnull %24)
          to label %293 unwind label %306

293:                                              ; preds = %292
  call void @_ZN3AST13AttributeListC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
  invoke void @_ZN3AST6Module8add_itemE4SpanNS_10VisibilityE8RcStringNS_4ItemENS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %26)
          to label %294 unwind label %308

294:                                              ; preds = %293
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %23) #8
  call void @_ZN3AST7UseItemD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZN3AST7UseItem3EntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %25) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %20) #8
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %328

295:                                              ; preds = %280
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %315

297:                                              ; preds = %282
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %314

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

301:                                              ; preds = %284
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %.thread853

303:                                              ; preds = %289
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %286) #8
  br label %.thread853

.thread853:                                       ; preds = %301, %303
  %.pn730 = phi { ptr, i32 } [ %304, %303 ], [ %302, %301 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #8
  br label %311

.thread858:                                       ; preds = %291
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST7UseItem3EntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %25) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #8
  br label %311

306:                                              ; preds = %292
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %310

308:                                              ; preds = %293
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %23) #8
  br label %310

310:                                              ; preds = %306, %308
  %.pn732 = phi { ptr, i32 } [ %309, %308 ], [ %307, %306 ]
  call void @_ZN3AST7UseItemD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @_ZN3AST7UseItem3EntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %25) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #8
  br label %312

311:                                              ; preds = %.thread858, %.thread853
  %.pn732.pn.pn857 = phi { ptr, i32 } [ %.pn730, %.thread853 ], [ %305, %.thread858 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %312

312:                                              ; preds = %310, %311
  %.pn732.pn.pn856 = phi { ptr, i32 } [ %.pn732, %310 ], [ %.pn732.pn.pn857, %311 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br label %313

313:                                              ; preds = %312, %299
  %.pn732.pn.pn.pn = phi { ptr, i32 } [ %.pn732.pn.pn856, %312 ], [ %300, %299 ]
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %20) #8
  br label %314

314:                                              ; preds = %313, %297
  %.pn732.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn732.pn.pn.pn, %313 ], [ %298, %297 ]
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %315

315:                                              ; preds = %314, %295
  %.pn732.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn732.pn.pn.pn.pn, %314 ], [ %296, %295 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %1316

316:                                              ; preds = %251, %255
  %317 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %318 unwind label %278

318:                                              ; preds = %316
  br i1 %317, label %319, label %328

319:                                              ; preds = %318
  %320 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %320, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %322 unwind label %278

322:                                              ; preds = %319
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @.str.35)
          to label %324 unwind label %278

324:                                              ; preds = %322
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %326 unwind label %278

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %328 unwind label %278

328:                                              ; preds = %250, %318, %326, %294, %154
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #8
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  %329 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %330 unwind label %340

330:                                              ; preds = %328
  br i1 %329, label %331, label %342

331:                                              ; preds = %330
  %332 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %332, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %334 unwind label %340

334:                                              ; preds = %331
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef nonnull @.str.36)
          to label %336 unwind label %340

336:                                              ; preds = %334
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %338 unwind label %340

338:                                              ; preds = %336
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %342 unwind label %340

340:                                              ; preds = %338, %336, %334, %331, %328
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %1315

342:                                              ; preds = %338, %330
  %343 = load i32, ptr %5, align 4, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %2, i64 32
  %345 = zext i32 %343 to i64
  %346 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %347 = icmp ugt i64 %346, %345
  br i1 %347, label %.lr.ph3292, label %._crit_edge3293

.lr.ph3292:                                       ; preds = %342
  %348 = getelementptr inbounds i8, ptr %124, i64 8
  %349 = getelementptr inbounds i8, ptr %126, i64 8
  %350 = getelementptr inbounds i8, ptr %101, i64 8
  %351 = getelementptr inbounds i8, ptr %112, i64 8
  %352 = getelementptr inbounds i8, ptr %114, i64 8
  %353 = getelementptr inbounds i8, ptr %105, i64 8
  %354 = getelementptr inbounds i8, ptr %107, i64 8
  %355 = getelementptr inbounds i8, ptr %117, i64 8
  %356 = getelementptr inbounds i8, ptr %94, i64 8
  %357 = getelementptr inbounds i8, ptr %96, i64 8
  %358 = getelementptr inbounds i8, ptr %87, i64 8
  %359 = getelementptr inbounds i8, ptr %89, i64 8
  %360 = getelementptr inbounds i8, ptr %1, i64 8
  %361 = getelementptr inbounds i8, ptr %69, i64 8
  %362 = getelementptr inbounds i8, ptr %69, i64 16
  %363 = getelementptr inbounds i8, ptr %2, i64 432
  %364 = getelementptr inbounds i8, ptr %69, i64 48
  %365 = getelementptr inbounds i8, ptr %0, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  %366 = getelementptr inbounds i8, ptr %37, i64 28
  %367 = getelementptr inbounds i8, ptr %0, i64 28
  %368 = getelementptr inbounds i8, ptr %37, i64 29
  %369 = getelementptr inbounds i8, ptr %0, i64 29
  br label %370

._crit_edge3293:                                  ; preds = %1308, %342
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  ret void

370:                                              ; preds = %.lr.ph3292, %1308
  %371 = phi i64 [ %345, %.lr.ph3292 ], [ %.pre-phi3456, %1308 ]
  %.06253290 = phi i32 [ %343, %.lr.ph3292 ], [ %.pre-phi, %1308 ]
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %371) #8
  %373 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %372) #8
  %374 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  br i1 %374, label %.critedge, label %.lr.ph1167

.lr.ph1167:                                       ; preds = %370, %390
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  %376 = load ptr, ptr %375, align 8, !tbaa !9
  %377 = icmp eq ptr %376, %373
  br i1 %377, label %378, label %.critedge

378:                                              ; preds = %.lr.ph1167
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  %379 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %380 unwind label %.loopexit1004

380:                                              ; preds = %378
  br i1 %379, label %381, label %390

381:                                              ; preds = %380
  %382 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %382, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %384 unwind label %.loopexit1004

384:                                              ; preds = %381
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull @.str.37)
          to label %386 unwind label %.loopexit1004

386:                                              ; preds = %384
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %388 unwind label %.loopexit1004

388:                                              ; preds = %386
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %390 unwind label %.loopexit1004

.loopexit1004:                                    ; preds = %378, %381, %384, %386, %388
  %lpad.loopexit1006 = landingpad { ptr, i32 }
          cleanup
  br label %1315

.loopexit.split-lp1005:                           ; preds = %.critedge, %394, %397, %399, %401, %403, %406, %408, %413, %415, %418, %420
  %lpad.loopexit.split-lp1007 = landingpad { ptr, i32 }
          cleanup
  br label %1315

390:                                              ; preds = %388, %380
  %391 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  br i1 %391, label %.critedge, label %.lr.ph1167, !llvm.loop !66

.critedge:                                        ; preds = %390, %.lr.ph1167, %370
  %392 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %393 unwind label %.loopexit.split-lp1005

393:                                              ; preds = %.critedge
  br i1 %392, label %394, label %422

394:                                              ; preds = %393
  %395 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %395, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %397 unwind label %.loopexit.split-lp1005

397:                                              ; preds = %394
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull @.str.38)
          to label %399 unwind label %.loopexit.split-lp1005

399:                                              ; preds = %397
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %401 unwind label %.loopexit.split-lp1005

401:                                              ; preds = %399
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull @.str.14)
          to label %403 unwind label %.loopexit.split-lp1005

403:                                              ; preds = %401
  %404 = getelementptr inbounds i8, ptr %373, i64 72
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %402, ptr noundef nonnull align 8 dereferenceable(8) %404)
          to label %406 unwind label %.loopexit.split-lp1005

406:                                              ; preds = %403
  %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.39)
          to label %408 unwind label %.loopexit.split-lp1005

408:                                              ; preds = %406
  %409 = getelementptr inbounds i8, ptr %373, i64 80
  %410 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %409)
  %411 = call noundef ptr @_ZN3AST4Item10tag_to_strENS0_3TagE(i32 noundef %410)
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %407, ptr noundef %411)
          to label %413 unwind label %.loopexit.split-lp1005

413:                                              ; preds = %408
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull @.str.40)
          to label %415 unwind label %.loopexit.split-lp1005

415:                                              ; preds = %413
  %416 = getelementptr inbounds i8, ptr %373, i64 8
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(8) %414, ptr noundef nonnull align 8 dereferenceable(24) %416)
          to label %418 unwind label %.loopexit.split-lp1005

418:                                              ; preds = %415
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %420 unwind label %.loopexit.split-lp1005

420:                                              ; preds = %418
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %422 unwind label %.loopexit.split-lp1005

422:                                              ; preds = %420, %393
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  %423 = getelementptr inbounds i8, ptr %373, i64 72
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %423)
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind nonnull writable sret(%"struct.AST::AbsolutePath") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull %29)
          to label %424 unwind label %452

424:                                              ; preds = %422
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  %425 = getelementptr inbounds i8, ptr %373, i64 80
  %426 = call noundef ptr @_ZN3AST4Item12opt_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  %.not739 = icmp eq ptr %426, null
  br i1 %.not739, label %458, label %427

427:                                              ; preds = %424
  %428 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %426)
  %429 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %428)
          to label %430 unwind label %454

430:                                              ; preds = %427
  br i1 %429, label %431, label %458

431:                                              ; preds = %430
  %432 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %426)
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %432)
          to label %434 unwind label %454

434:                                              ; preds = %431
  %435 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull @.str.41)
          to label %436 unwind label %454

436:                                              ; preds = %434
  br i1 %435, label %437, label %458

437:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30) #8
  invoke void @_ZN3AST10Visibility11make_globalEv(ptr dead_on_unwind nonnull writable sret(%"class.AST::Visibility") align 8 %30)
          to label %438 unwind label %456

438:                                              ; preds = %437
  %439 = getelementptr inbounds i8, ptr %373, i64 32
  %440 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3AST10VisibilityaSEOS0_(ptr noundef nonnull align 8 dereferenceable(36) %439, ptr noundef nonnull align 8 dereferenceable(36) %30) #8
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %30) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #8
  %441 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %442 unwind label %454

442:                                              ; preds = %438
  br i1 %441, label %443, label %458

443:                                              ; preds = %442
  %444 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %444, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %446 unwind label %454

446:                                              ; preds = %443
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull @.str.42)
          to label %448 unwind label %454

448:                                              ; preds = %446
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %450 unwind label %454

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %458 unwind label %454

452:                                              ; preds = %422
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %1314

454:                                              ; preds = %450, %448, %446, %443, %438, %434, %431, %427
  %455 = landingpad { ptr, i32 }
          cleanup
  br label %1313

456:                                              ; preds = %437
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #8
  br label %1313

458:                                              ; preds = %430, %436, %450, %442, %424
  %459 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %460 unwind label %480

460:                                              ; preds = %458
  br i1 %459, label %461, label %.lr.ph1669

461:                                              ; preds = %460
  %462 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %462, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %464 unwind label %480

464:                                              ; preds = %461
  %465 = call noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  %466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef %465)
          to label %467 unwind label %480

467:                                              ; preds = %464
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull @.str.25)
          to label %469 unwind label %480

469:                                              ; preds = %467
  %470 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %2)
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %468, ptr noundef nonnull align 8 dereferenceable(32) %470)
          to label %472 unwind label %480

472:                                              ; preds = %469
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull @.str.14)
          to label %474 unwind label %480

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

476:                                              ; preds = %474
  %477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %478 unwind label %480

478:                                              ; preds = %476
  %479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph1669 unwind label %480

480:                                              ; preds = %478, %476, %474, %472, %469, %467, %464, %461, %458
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %1313

.loopexit1003:                                    ; preds = %.preheader996.split, %.preheader927.split, %.preheader925.split, %.preheader923.split, %.lr.ph1669, %.preheader994.split, %..loopexit959_crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #8
  %482 = getelementptr inbounds i8, ptr %373, i64 8
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(24) %482) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %35) #8
  %483 = getelementptr inbounds i8, ptr %373, i64 32
  call void @_ZN3AST10VisibilityC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(36) %483) #8
  %484 = load i32, ptr %155, align 8, !tbaa !11
  %485 = icmp eq i32 %484, 0
  br i1 %485, label %531, label %535

.lr.ph1669:                                       ; preds = %478, %460
  %486 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  switch i32 %486, label %.loopexit1003 [
    i32 0, label %492
    i32 12, label %.preheader994.split
    i32 14, label %.preheader996.split
    i32 13, label %.lr.ph1244
  ]

.preheader996.split:                              ; preds = %.lr.ph1669
  %487 = call noundef nonnull align 8 dereferenceable(76) ptr @_ZN3AST4Item8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  %488 = getelementptr inbounds i8, ptr %487, i64 48
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %488)
          to label %.loopexit1003 unwind label %.split1248, !llvm.loop !68

.preheader994.split:                              ; preds = %.lr.ph1669
  %489 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZN3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  %490 = getelementptr inbounds i8, ptr %489, i64 48
  %491 = call noundef i32 @_ZNK3AST10StructData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %490)
  switch i32 %491, label %.loopexit1003 [
    i32 0, label %.split1417
    i32 1, label %.preheader923.split
    i32 3, label %.preheader925.split
    i32 2, label %.preheader927.split
  ]

492:                                              ; preds = %.lr.ph1669
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 1986, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

.preheader927.split:                              ; preds = %.preheader994.split
  %493 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %490)
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %493)
          to label %.loopexit1003 unwind label %.split1380.split.split.split.split, !llvm.loop !69

.preheader925.split:                              ; preds = %.preheader994.split
  %494 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %490)
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %494)
          to label %.loopexit1003 unwind label %.split1389.split.split.split.split, !llvm.loop !70

.preheader923.split:                              ; preds = %.preheader994.split
  %495 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST10StructData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %490)
  br label %.loopexit1003

.split1417:                                       ; preds = %.preheader994.split
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 1989, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

.split1389.split.split.split.split:               ; preds = %.preheader925.split
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %1313

.split1380.split.split.split.split:               ; preds = %.preheader927.split
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %1313

.split1248:                                       ; preds = %.preheader996.split
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %1313

.lr.ph1244:                                       ; preds = %.lr.ph1669
  %499 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %500 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %499)
  %501 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %500) #8
  store ptr %501, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %502 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %499)
  %503 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %502) #8
  store ptr %503, ptr %32, align 8
  %504 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br i1 %504, label %.lr.ph1241, label %..loopexit959_crit_edge

..loopexit959_crit_edge:                          ; preds = %526, %.lr.ph1244
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %.loopexit1003

505:                                              ; preds = %.lr.ph1241
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %530

.lr.ph1241:                                       ; preds = %.lr.ph1244, %526
  %507 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %508 = invoke noundef zeroext i1 @_Z15check_cfg_attrsRKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %507)
          to label %509 unwind label %505

509:                                              ; preds = %.lr.ph1241
  br i1 %508, label %.preheader934.split, label %513

.preheader934.split:                              ; preds = %509
  %510 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %511 = getelementptr inbounds i8, ptr %510, i64 32
  %512 = call noundef i32 @_ZNK3AST15EnumVariantData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %511)
  switch i32 %512, label %..loopexit929_crit_edge [
    i32 0, label %.split1204
    i32 1, label %.preheader906.split
    i32 2, label %.preheader908.split
    i32 3, label %.preheader910.split
  ]

513:                                              ; preds = %509
  %514 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %499)
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %515 = load ptr, ptr %33, align 8
  %516 = invoke ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %514, ptr %515)
          to label %517 unwind label %518

517:                                              ; preds = %513
  store ptr %516, ptr %31, align 8, !tbaa !9
  br label %526

518:                                              ; preds = %513
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %530

.preheader910.split:                              ; preds = %.preheader934.split
  %520 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %511)
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %520)
          to label %..loopexit929_crit_edge unwind label %.split.split.split, !llvm.loop !71

.preheader908.split:                              ; preds = %.preheader934.split
  %521 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %511)
  invoke void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24) %521)
          to label %..loopexit929_crit_edge unwind label %.split1176.split.split, !llvm.loop !72

.preheader906.split:                              ; preds = %.preheader934.split
  %522 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST15EnumVariantData8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(32) %511)
  br label %..loopexit929_crit_edge

.split1204:                                       ; preds = %.preheader934.split
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2010, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

.split1176.split.split:                           ; preds = %.preheader908.split
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %530

.split.split.split:                               ; preds = %.preheader910.split
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %530

..loopexit929_crit_edge:                          ; preds = %.preheader910.split, %.preheader908.split, %.preheader906.split, %.preheader934.split
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %526

526:                                              ; preds = %..loopexit929_crit_edge, %517
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %527 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %499)
  %528 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %527) #8
  store ptr %528, ptr %32, align 8
  %529 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br i1 %529, label %.lr.ph1241, label %..loopexit959_crit_edge, !llvm.loop !73

530:                                              ; preds = %.split1176.split.split, %.split.split.split, %518, %505
  %.pn833.pn = phi { ptr, i32 } [ %519, %518 ], [ %506, %505 ], [ %524, %.split.split.split ], [ %523, %.split1176.split.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %1313

531:                                              ; preds = %.loopexit1003
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %532 unwind label %533

532:                                              ; preds = %531
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %34, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(488) %425)
          to label %535 unwind label %533

533:                                              ; preds = %532, %531
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %1312

535:                                              ; preds = %532, %.loopexit1003
  %536 = call noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  br i1 %536, label %537, label %.lr.ph3288

537:                                              ; preds = %535
  %538 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %425)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #8
  call void @_ZN5LListIPKN3AST6ModuleEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull %365, ptr noundef nonnull %538)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #8
  %539 = load ptr, ptr %0, align 8, !tbaa !28
  %.sroa.0310.0.copyload = load ptr, ptr %36, align 8, !tbaa !9
  %.sroa.2.0.copyload = load ptr, ptr %.sroa.2.0..sroa_idx, align 8, !tbaa !9
  %540 = load i32, ptr %155, align 8, !tbaa !11
  invoke void @_ZN11ExpandStateC2ERN3AST5CrateE5LListIPKNS0_6ModuleEE10ExpandMode(ptr noundef nonnull align 8 dereferenceable(30) %37, ptr noundef nonnull align 8 dereferenceable(1112) %539, ptr %.sroa.0310.0.copyload, ptr %.sroa.2.0.copyload, i32 noundef %540)
          to label %541 unwind label %552

541:                                              ; preds = %537
  invoke void @_ZN3AST12AbsolutePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %542 unwind label %552

542:                                              ; preds = %541
  invoke void @_Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj(ptr noundef nonnull align 8 dereferenceable(30) %37, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(480) %538, i32 noundef 0)
          to label %543 unwind label %554

543:                                              ; preds = %542
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %34, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(488) %425)
          to label %544 unwind label %552

544:                                              ; preds = %543
  %545 = load i8, ptr %366, align 4, !tbaa !74, !range !64, !noundef !65
  %546 = load i8, ptr %367, align 4, !tbaa !74, !range !64, !noundef !65
  %547 = or i8 %546, %545
  store i8 %547, ptr %367, align 4, !tbaa !74
  %548 = load i8, ptr %368, align 1, !tbaa !75, !range !64, !noundef !65
  %549 = load i8, ptr %369, align 1, !tbaa !75, !range !64, !noundef !65
  %550 = or i8 %549, %548
  store i8 %550, ptr %369, align 1, !tbaa !75
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %482, ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  %.pre = add i32 %.06253290, 1
  %.pre3455 = zext i32 %.pre to i64
  br label %1308

552:                                              ; preds = %543, %541, %537
  %553 = landingpad { ptr, i32 }
          cleanup
  br label %556

554:                                              ; preds = %542
  %555 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %556

556:                                              ; preds = %554, %552
  %.pn830 = phi { ptr, i32 } [ %553, %552 ], [ %555, %554 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  br label %1312

.loopexit1001:                                    ; preds = %1271, %1280, %.preheader988.split, %.preheader986.split, %.preheader914, %.preheader962.split, %.preheader960.split, %.lr.ph3288, %..loopexit943_crit_edge, %..loopexit945_crit_edge, %..loopexit956_crit_edge, %822, %826, %836, %840, %..loopexit942_crit_edge, %..loopexit944_crit_edge, %886, %891, %875, %880, %.lr.ph1880, %..loopexit885_crit_edge, %..loopexit886_crit_edge, %..loopexit950_crit_edge, %..loopexit951_crit_edge, %._crit_edge1702
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %34, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(488) %39)
          to label %1289 unwind label %1297

.lr.ph3288:                                       ; preds = %535
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %39) #8
  call void @_ZN3AST4ItemC2EOS0_(ptr noundef nonnull align 8 dereferenceable(488) %39, ptr noundef nonnull align 8 dereferenceable(488) %425) #8
  %557 = add i32 %.06253290, 1
  %558 = zext i32 %557 to i64
  %559 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  switch i32 %559, label %.loopexit1001 [
    i32 0, label %581
    i32 1, label %.preheader960.split
    i32 5, label %.preheader962.split
    i32 2, label %.lr.ph3282
    i32 8, label %.preheader966.split.split
    i32 3, label %.split2324.lr.ph
    i32 4, label %.preheader970.split.split
    i32 6, label %.preheader972.split.split
    i32 7, label %.preheader974.split.split
    i32 9, label %845
    i32 10, label %.lr.ph1886
    i32 12, label %.lr.ph1883
    i32 13, label %.lr.ph1853
    i32 14, label %.lr.ph1813
    i32 15, label %.lr.ph1807
    i32 11, label %.preheader986.split
    i32 17, label %.preheader988.split
    i32 18, label %.preheader990.split
    i32 16, label %.preheader992.split.split
  ]

.preheader992.split.split:                        ; preds = %.lr.ph3288
  %560 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN3AST4Item13as_TraitAliasEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %561 = getelementptr inbounds i8, ptr %560, i64 48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %149) #8
  %562 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %561) #8
  store ptr %562, ptr %149, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %150) #8
  %563 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %561) #8
  store ptr %563, ptr %150, align 8
  %564 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %150) #8
  br i1 %564, label %.lr.ph1672, label %..loopexit956_crit_edge

.preheader990.split:                              ; preds = %.lr.ph3288
  %565 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %566 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %565)
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(16) %566)
          to label %1280 unwind label %.split1687

.preheader988.split:                              ; preds = %.lr.ph3288
  %567 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  invoke void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(368) %567)
          to label %.loopexit1001 unwind label %.split1692, !llvm.loop !76

.preheader986.split:                              ; preds = %.lr.ph3288
  %568 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %569 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %568)
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %569)
          to label %.loopexit1001 unwind label %.split1697, !llvm.loop !77

.preheader974.split.split:                        ; preds = %.lr.ph3288
  %570 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Item10as_NegImplEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %76, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %832 unwind label %.split1891.split

.preheader972.split.split:                        ; preds = %.lr.ph3288
  %571 = call noundef nonnull align 8 dereferenceable(472) ptr @_ZN3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %74, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %817 unwind label %.split1917.split

.preheader970.split.split:                        ; preds = %.lr.ph3288
  %572 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item14as_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %70) #8
  %573 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST11ExternBlock5itemsEv(ptr noundef nonnull align 8 dereferenceable(80) %572)
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEC2EOS5_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %573) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #8
  %574 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  store ptr %574, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #8
  %575 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  store ptr %575, ptr %72, align 8
  %576 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br i1 %576, label %.lr.ph1941, label %..loopexit945_crit_edge

.preheader966.split.split:                        ; preds = %.lr.ph3288
  %577 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST4Item8as_MacroEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %578 = call noundef zeroext i1 @_ZNK13MacroRulesPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %577)
  br i1 %578, label %705, label %.split2332

.preheader962.split:                              ; preds = %.lr.ph3288
  %579 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN3AST4Item12as_GlobalAsmEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  br label %.loopexit1001

.preheader960.split:                              ; preds = %.lr.ph3288
  %580 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  br label %.loopexit1001

581:                                              ; preds = %.lr.ph3288
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2053, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

582:                                              ; preds = %591
  %583 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.lr.ph3282:                                       ; preds = %.lr.ph3288
  %584 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %585 = call noundef i64 @_ZNKSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  %586 = icmp ugt i64 %585, 200
  br i1 %586, label %587, label %599

587:                                              ; preds = %.lr.ph3282
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %588 unwind label %592

588:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef 0, ptr noundef nonnull %41)
          to label %589 unwind label %594

589:                                              ; preds = %588
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  %590 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %590, ptr noundef nonnull @.str.23)
          to label %591 unwind label %597

591:                                              ; preds = %589
  invoke void @__cxa_throw(ptr nonnull %590, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1318 unwind label %582

592:                                              ; preds = %587
  %593 = landingpad { ptr, i32 }
          cleanup
  br label %596

594:                                              ; preds = %588
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %596

596:                                              ; preds = %594, %592
  %.pn823 = phi { ptr, i32 } [ %595, %594 ], [ %593, %592 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %1311

597:                                              ; preds = %589
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %590) #8
  br label %1311

599:                                              ; preds = %.lr.ph3282
  call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %43) #8
  invoke void @_ZN3AST15MacroInvocationC2EOS0_(ptr noundef nonnull align 8 dereferenceable(393) %43, ptr noundef nonnull align 8 dereferenceable(393) %584)
          to label %600 unwind label %606

600:                                              ; preds = %599
  %601 = call noundef zeroext i1 @_ZNK3AST15MacroInvocation11is_expandedEv(ptr noundef nonnull align 8 dereferenceable(393) %43)
  br i1 %601, label %687, label %602

602:                                              ; preds = %600
  %603 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST15MacroInvocation4spanEv(ptr noundef nonnull align 8 dereferenceable(393) %43)
  %604 = call noundef zeroext i1 @_ZNK4SpancvbEv(ptr noundef nonnull align 8 dereferenceable(8) %603)
  br i1 %604, label %610, label %605

605:                                              ; preds = %602
  call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.21, i32 noundef 2070, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

606:                                              ; preds = %599
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %691

608:                                              ; preds = %687
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %690

610:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %44) #8
  %611 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %612 unwind label %630

612:                                              ; preds = %610
  %613 = select i1 %611, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #8
  store ptr %43, ptr %46, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %44, ptr noundef %613, ptr noundef nonnull %45)
          to label %614 unwind label %632

614:                                              ; preds = %612
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  invoke void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.273") align 8 %47, ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(393) %43)
          to label %615 unwind label %634

615:                                              ; preds = %614
  %616 = call noundef zeroext i1 @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br i1 %616, label %617, label %671

617:                                              ; preds = %615
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERKNS2_10VisibilityERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %34, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(36) %35, ptr noundef nonnull align 8 dereferenceable(488) %39)
          to label %618 unwind label %636

618:                                              ; preds = %617
  %619 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %620 unwind label %636

620:                                              ; preds = %618
  br i1 %619, label %621, label %638

621:                                              ; preds = %620
  %622 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %622, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %624 unwind label %636

624:                                              ; preds = %621
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %623, ptr noundef nonnull @.str.44)
          to label %626 unwind label %636

626:                                              ; preds = %624
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %625, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %628 unwind label %636

628:                                              ; preds = %626
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %638 unwind label %636

630:                                              ; preds = %610
  %631 = landingpad { ptr, i32 }
          cleanup
  br label %686

632:                                              ; preds = %612
  %633 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  br label %686

634:                                              ; preds = %614
  %635 = landingpad { ptr, i32 }
          cleanup
  br label %685

636:                                              ; preds = %681, %679, %677, %674, %671, %628, %626, %624, %621, %618, %617
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %684

638:                                              ; preds = %628, %620
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEC2EOS9_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %639 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  invoke void @_Z19Parse_ModRoot_ItemsR11TokenStreamRN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(176) %639, ptr noundef nonnull align 8 dereferenceable(480) %2)
          to label %640 unwind label %664

640:                                              ; preds = %638
  %641 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %642 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  store ptr %642, ptr %52, align 8
  %643 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %52, i64 noundef %371) #8
  store ptr %643, ptr %51, align 8
  %644 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %51, i64 noundef 1) #8
  store ptr %644, ptr %50, 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) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  %645 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %646 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %645)
          to label %647 unwind label %666

647:                                              ; preds = %640
  %648 = call ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %649 = invoke ptr @_ZSt18make_move_iteratorIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS3_4ItemEEESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEEESt13move_iteratorIT_ESG_(ptr %648)
          to label %650 unwind label %666

650:                                              ; preds = %647
  %651 = load ptr, ptr %49, align 8
  %652 = 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) %48, ptr %651, ptr %646, ptr %649)
          to label %653 unwind label %666

653:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  %654 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(24) %344, ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  %655 = add i64 %641, %558
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #8
  %656 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %657 = icmp eq i64 %655, %656
  br i1 %657, label %661, label %658

658:                                              ; preds = %653
  %659 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %655) #8
  %660 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %659) #8
  br label %661

661:                                              ; preds = %653, %658
  %662 = phi ptr [ %660, %658 ], [ null, %653 ]
  store ptr %662, ptr %53, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %663 unwind label %668

663:                                              ; preds = %661
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  call void @_ZN3AST15MacroInvocation12set_expandedEv(ptr noundef nonnull align 8 dereferenceable(393) %43)
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  br label %683

664:                                              ; preds = %638
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %670

666:                                              ; preds = %650, %647, %640
  %667 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br label %670

668:                                              ; preds = %661
  %669 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  br label %670

670:                                              ; preds = %666, %668, %664
  %.pn814.pn = phi { ptr, i32 } [ %665, %664 ], [ %669, %668 ], [ %667, %666 ]
  call void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  br label %684

671:                                              ; preds = %615
  %672 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %673 unwind label %636

673:                                              ; preds = %671
  br i1 %672, label %674, label %683

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 @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %677 unwind label %636

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.45)
          to label %679 unwind label %636

679:                                              ; preds = %677
  %680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %678, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %681 unwind label %636

681:                                              ; preds = %679
  %682 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %680, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %683 unwind label %636

683:                                              ; preds = %673, %681, %663
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %44) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %44) #8
  br label %687

684:                                              ; preds = %670, %636
  %.pn814.pn.pn = phi { ptr, i32 } [ %.pn814.pn, %670 ], [ %637, %636 ]
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %685

685:                                              ; preds = %684, %634
  %.pn814.pn.pn.pn = phi { ptr, i32 } [ %.pn814.pn.pn, %684 ], [ %635, %634 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %44) #8
  br label %686

686:                                              ; preds = %685, %632, %630
  %.pn814.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn814.pn.pn.pn, %685 ], [ %633, %632 ], [ %631, %630 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %44) #8
  br label %690

687:                                              ; preds = %683, %600
  %688 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %689 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST15MacroInvocationaSEOS0_(ptr noundef nonnull align 8 dereferenceable(393) %688, ptr noundef nonnull align 8 dereferenceable(393) %43)
          to label %..loopexit942_crit_edge unwind label %608

..loopexit942_crit_edge:                          ; preds = %687
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %43) #8
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %43) #8
  br label %.loopexit1001

690:                                              ; preds = %686, %608
  %.pn820 = phi { ptr, i32 } [ %609, %608 ], [ %.pn814.pn.pn.pn.pn, %686 ]
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %43) #8
  br label %691

691:                                              ; preds = %690, %606
  %.pn820.pn = phi { ptr, i32 } [ %.pn820, %690 ], [ %607, %606 ]
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %43) #8
  br label %1311

692:                                              ; preds = %697
  %693 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.split2332:                                       ; preds = %.preheader966.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %694 unwind label %698

694:                                              ; preds = %.split2332
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #8
  store ptr %373, ptr %56, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull %55)
          to label %695 unwind label %700

695:                                              ; preds = %694
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  %696 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %696, ptr noundef nonnull @.str.11)
          to label %697 unwind label %703

697:                                              ; preds = %695
  invoke void @__cxa_throw(ptr nonnull %696, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1318 unwind label %692

698:                                              ; preds = %.split2332
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %702

700:                                              ; preds = %694
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %702

702:                                              ; preds = %700, %698
  %.pn809 = phi { ptr, i32 } [ %701, %700 ], [ %699, %698 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %1311

703:                                              ; preds = %695
  %704 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %696) #8
  br label %1311

705:                                              ; preds = %.preheader966.split.split
  %706 = call noundef zeroext i1 @_ZNK3AST10Visibility9is_globalEv(ptr noundef nonnull align 8 dereferenceable(36) %483)
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %423)
  call void @_ZN13MacroRulesPtrC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %577)
  invoke void @_ZN3AST6Module9add_macroEb8RcString13MacroRulesPtr(ptr noundef nonnull align 8 dereferenceable(480) %2, i1 noundef zeroext %706, ptr noundef nonnull %57, ptr noundef nonnull %58)
          to label %707 unwind label %.split2335.split

707:                                              ; preds = %705
  call void @_ZN13MacroRulesPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %59) #8
  invoke void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Item") align 8 %59)
          to label %708 unwind label %.split2338.split

708:                                              ; preds = %707
  %709 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %39, ptr noundef nonnull align 8 dereferenceable(488) %59)
          to label %..loopexit943_crit_edge unwind label %.split2341.split

..loopexit943_crit_edge:                          ; preds = %708
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %59) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %59) #8
  br label %.loopexit1001

.split2335.split:                                 ; preds = %705
  %710 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MacroRulesPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br label %1311

.split2338.split:                                 ; preds = %707
  %711 = landingpad { ptr, i32 }
          cleanup
  br label %713

.split2341.split:                                 ; preds = %708
  %712 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %59) #8
  br label %713

713:                                              ; preds = %.split2341.split, %.split2338.split
  %.pn811 = phi { ptr, i32 } [ %712, %.split2341.split ], [ %711, %.split2338.split ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %59) #8
  br label %1311

.split2324.lr.ph:                                 ; preds = %.lr.ph3288
  %714 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %715 = getelementptr inbounds i8, ptr %714, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #8
  %716 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %715) #8
  store ptr %716, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  %717 = call ptr @_ZNSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %715) #8
  store ptr %717, ptr %61, align 8
  %718 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br i1 %718, label %.lr.ph2325, label %..loopexit944_crit_edge

..loopexit944_crit_edge:                          ; preds = %804, %.split2324.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  br label %.loopexit1001

.lr.ph2325:                                       ; preds = %.split2324.lr.ph, %804
  %719 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %720 = getelementptr inbounds i8, ptr %719, i64 248
  %721 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %720, ptr noundef nonnull @.str.19)
          to label %722 unwind label %742

722:                                              ; preds = %.lr.ph2325
  br i1 %721, label %723, label %804

723:                                              ; preds = %722
  %724 = getelementptr inbounds i8, ptr %719, i64 8
  %725 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %724)
          to label %726 unwind label %742

726:                                              ; preds = %723
  %727 = call noundef i64 @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %725) #8
  %.not796 = icmp eq i64 %727, 0
  br i1 %.not796, label %804, label %728

728:                                              ; preds = %726
  %729 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %730 unwind label %742

730:                                              ; preds = %728
  br i1 %729, label %731, label %744

731:                                              ; preds = %730
  %732 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %732, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %734 unwind label %742

734:                                              ; preds = %731
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %733, ptr noundef nonnull @.str.46)
          to label %736 unwind label %742

736:                                              ; preds = %734
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %735, ptr noundef nonnull align 8 dereferenceable(240) %724)
          to label %738 unwind label %742

738:                                              ; preds = %736
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %737, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %740 unwind label %742

740:                                              ; preds = %738
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %739, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %744 unwind label %742

742:                                              ; preds = %740, %738, %736, %734, %731, %728, %723, %.lr.ph2325
  %743 = landingpad { ptr, i32 }
          cleanup
  br label %807

744:                                              ; preds = %740, %730
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #8
  invoke void @_ZN3AST12AbsolutePathC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %745 unwind label %752

745:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #8
  %746 = load ptr, ptr %0, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %64) #8
  %747 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST6Module4pathEv(ptr noundef nonnull align 8 dereferenceable(480) %2)
  invoke void @_ZN3AST4PathC2ERKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(240) %64, ptr noundef nonnull align 8 dereferenceable(32) %747)
          to label %748 unwind label %754

748:                                              ; preds = %745
  invoke void @_ZN3AST4PathC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %65, ptr noundef nonnull align 8 dereferenceable(240) %724)
          to label %749 unwind label %756

749:                                              ; preds = %748
  invoke void @_Z20Resolve_Lookup_MacroRK4SpanRKN3AST5CrateERKNS2_4PathES6_PNS2_12AbsolutePathE(ptr dead_on_unwind nonnull writable sret(%class.ResolveItemRef_Macro) align 8 %63, ptr noundef nonnull align 8 dereferenceable(8) %719, ptr noundef nonnull align 8 dereferenceable(1112) %746, ptr noundef nonnull align 8 dereferenceable(240) %64, ptr noundef nonnull %65, ptr noundef nonnull %62)
          to label %750 unwind label %758

750:                                              ; preds = %749
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %65) #8
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %64) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %64) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #8
  invoke void @_ZN8MacroRefC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %.preheader930 unwind label %762

.preheader930:                                    ; preds = %750
  %751 = call noundef i32 @_ZNK20ResolveItemRef_Macro3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  switch i32 %751, label %..loopexit913_crit_edge [
    i32 0, label %.split2306
    i32 1, label %.preheader876
    i32 2, label %.preheader878
    i32 3, label %.preheader880
    i32 4, label %.preheader882
  ]

752:                                              ; preds = %744
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %803

754:                                              ; preds = %745
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %761

756:                                              ; preds = %748
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %760

758:                                              ; preds = %749
  %759 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %65) #8
  br label %760

760:                                              ; preds = %758, %756
  %.pn797 = phi { ptr, i32 } [ %759, %758 ], [ %757, %756 ]
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %64) #8
  br label %761

761:                                              ; preds = %760, %754
  %.pn797.pn = phi { ptr, i32 } [ %.pn797, %760 ], [ %755, %754 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %64) #8
  br label %802

762:                                              ; preds = %750
  %763 = landingpad { ptr, i32 }
          cleanup
  br label %801

.preheader882:                                    ; preds = %.preheader930
  %764 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro13as_MacroRulesEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #8
  %765 = load ptr, ptr %764, align 8, !tbaa !9
  invoke void @_ZN8MacroRefC2EPK10MacroRules(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef %765)
          to label %..loopexit863_crit_edge unwind label %.split2275.split.split.split

.preheader880:                                    ; preds = %.preheader930
  %766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro12as_ProcMacroEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #8
  %767 = load ptr, ptr %766, align 8, !tbaa !9
  invoke void @_ZN8MacroRefC2EPKN3HIR9ProcMacroE(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef %767)
          to label %..loopexit862_crit_edge unwind label %.split2286.split.split.split

.preheader878:                                    ; preds = %.preheader930
  %768 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN20ResolveItemRef_Macro16as_InternalMacroEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  br label %..loopexit913_crit_edge

.preheader876:                                    ; preds = %.preheader930
  %769 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN20ResolveItemRef_Macro7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  br label %..loopexit913_crit_edge

.split2306:                                       ; preds = %.preheader930
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2119, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

..loopexit862_crit_edge:                          ; preds = %.preheader880
  %770 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8MacroRefaSEOS_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %67)
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  br label %..loopexit913_crit_edge

.split2286.split.split.split:                     ; preds = %.preheader880
  %771 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  br label %800

..loopexit863_crit_edge:                          ; preds = %.preheader882
  %772 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8MacroRefaSEOS_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %68)
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  br label %..loopexit913_crit_edge

.split2275.split.split.split:                     ; preds = %.preheader882
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  br label %800

..loopexit913_crit_edge:                          ; preds = %.preheader878, %.preheader876, %..loopexit863_crit_edge, %..loopexit862_crit_edge, %.preheader930
  %774 = call noundef zeroext i1 @_ZNK8MacroRef7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(16) %66)
  br i1 %774, label %799, label %775

775:                                              ; preds = %..loopexit913_crit_edge
  %776 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %777 unwind label %789

777:                                              ; preds = %775
  br i1 %776, label %778, label %791

778:                                              ; preds = %777
  %779 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %780 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %779, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %781 unwind label %789

781:                                              ; preds = %778
  %782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %780, ptr noundef nonnull @.str.47)
          to label %783 unwind label %789

783:                                              ; preds = %781
  %784 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_12AbsolutePathE(ptr noundef nonnull align 8 dereferenceable(8) %782, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %785 unwind label %789

785:                                              ; preds = %783
  %786 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %784, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %787 unwind label %789

787:                                              ; preds = %785
  %788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %786, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %791 unwind label %789

789:                                              ; preds = %787, %785, %783, %781, %778, %775
  %790 = landingpad { ptr, i32 }
          cleanup
  br label %800

791:                                              ; preds = %787, %777
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %69) #8
  store i8 0, ptr %69, align 8, !tbaa !18
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 8 dereferenceable(8) %720)
  invoke void @_ZN3AST12AbsolutePathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %362, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %792 unwind label %794

792:                                              ; preds = %791
  call void @_ZN8MacroRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(16) %364, ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  invoke void @_ZNSt6vectorIN3AST6Module11MacroImportESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %363, ptr noundef nonnull align 8 dereferenceable(64) %69)
          to label %793 unwind label %796

793:                                              ; preds = %792
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %69) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %69) #8
  br label %799

794:                                              ; preds = %791
  %795 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %361) #8
  br label %798

796:                                              ; preds = %792
  %797 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST6Module11MacroImportD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %69) #8
  br label %798

798:                                              ; preds = %796, %794
  %.pn800 = phi { ptr, i32 } [ %797, %796 ], [ %795, %794 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %69) #8
  br label %800

799:                                              ; preds = %793, %..loopexit913_crit_edge
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #8
  call void @_ZN20ResolveItemRef_MacroD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #8
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #8
  br label %804

800:                                              ; preds = %.split2286.split.split.split, %.split2275.split.split.split, %798, %789
  %.pn802.pn = phi { ptr, i32 } [ %.pn800, %798 ], [ %790, %789 ], [ %773, %.split2275.split.split.split ], [ %771, %.split2286.split.split.split ]
  call void @_ZN8MacroRefD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #8
  br label %801

801:                                              ; preds = %800, %762
  %.pn802.pn.pn = phi { ptr, i32 } [ %.pn802.pn, %800 ], [ %763, %762 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #8
  call void @_ZN20ResolveItemRef_MacroD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  br label %802

802:                                              ; preds = %801, %761
  %.pn802.pn.pn.pn = phi { ptr, i32 } [ %.pn802.pn.pn, %801 ], [ %.pn797.pn, %761 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #8
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %803

803:                                              ; preds = %802, %752
  %.pn802.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn802.pn.pn.pn, %802 ], [ %753, %752 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #8
  br label %807

804:                                              ; preds = %799, %726, %722
  %805 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %806 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br i1 %806, label %.lr.ph2325, label %..loopexit944_crit_edge

807:                                              ; preds = %803, %742
  %.pn802.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn802.pn.pn.pn.pn, %803 ], [ %743, %742 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  br label %1311

..loopexit945_crit_edge:                          ; preds = %810, %.preheader970.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #8
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #8
  br label %.loopexit1001

.lr.ph1941:                                       ; preds = %.preheader970.split.split, %810
  %808 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #8
  invoke void @_Z15make_unique_ptrIN3AST5NamedINS0_4ItemEEEESt10unique_ptrIT_St14default_deleteIS5_EEOS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.374") align 8 %73, ptr noundef nonnull align 8 dereferenceable(568) %808)
          to label %809 unwind label %.split1946.split

809:                                              ; preds = %.lr.ph1941
  invoke void @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %344, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %810 unwind label %.split1949.split

810:                                              ; preds = %809
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  %811 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  %812 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br i1 %812, label %.lr.ph1941, label %..loopexit945_crit_edge

.split1946.split:                                 ; preds = %.lr.ph1941
  %813 = landingpad { ptr, i32 }
          cleanup
  br label %815

.split1949.split:                                 ; preds = %809
  %814 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  br label %815

815:                                              ; preds = %.split1949.split, %.split1946.split
  %.pn794 = phi { ptr, i32 } [ %814, %.split1949.split ], [ %813, %.split1946.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #8
  call void @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #8
  br label %1311

.split1917.split:                                 ; preds = %818, %.preheader972.split.split
  %816 = landingpad { ptr, i32 }
          cleanup
  br label %1311

817:                                              ; preds = %.preheader972.split.split
  invoke void @_Z11Expand_ImplRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_4ImplE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull %74, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(472) %571)
          to label %818 unwind label %.split1920.split

818:                                              ; preds = %817
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %74) #8
  %819 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZN3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %571)
  %820 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %819)
  %821 = invoke noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120) %820)
          to label %822 unwind label %.split1917.split

822:                                              ; preds = %818
  br i1 %821, label %823, label %.loopexit1001

823:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %75) #8
  invoke void @_ZN3AST4ItemC2Ev(ptr noundef nonnull align 8 dereferenceable(488) %75)
          to label %824 unwind label %.split1923.split

824:                                              ; preds = %823
  %825 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %39, ptr noundef nonnull align 8 dereferenceable(488) %75)
          to label %826 unwind label %.split1926.split

826:                                              ; preds = %824
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %75) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %75) #8
  br label %.loopexit1001

.split1920.split:                                 ; preds = %817
  %827 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %74) #8
  br label %1311

.split1923.split:                                 ; preds = %823
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %830

.split1926.split:                                 ; preds = %824
  %829 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %75) #8
  br label %830

830:                                              ; preds = %.split1926.split, %.split1923.split
  %.pn791 = phi { ptr, i32 } [ %829, %.split1926.split ], [ %828, %.split1923.split ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %75) #8
  br label %1311

.split1891.split:                                 ; preds = %833, %.preheader974.split.split
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %1311

832:                                              ; preds = %.preheader974.split.split
  invoke void @_Z14Expand_ImplDefRK11ExpandStateN3AST4PathERNS2_6ModuleERNS2_7ImplDefE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull %76, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(448) %570)
          to label %833 unwind label %.split1894.split

833:                                              ; preds = %832
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %76) #8
  %834 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %570)
  %835 = invoke noundef zeroext i1 @_ZNK7TypeRef11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(120) %834)
          to label %836 unwind label %.split1891.split

836:                                              ; preds = %833
  br i1 %835, label %837, label %.loopexit1001

837:                                              ; preds = %836
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %77) #8
  invoke void @_ZN3AST4ItemC2Ev(ptr noundef nonnull align 8 dereferenceable(488) %77)
          to label %838 unwind label %.split1897.split

838:                                              ; preds = %837
  %839 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %39, ptr noundef nonnull align 8 dereferenceable(488) %77)
          to label %840 unwind label %.split1900.split

840:                                              ; preds = %838
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %77) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %77) #8
  br label %.loopexit1001

.split1894.split:                                 ; preds = %832
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %76) #8
  br label %1311

.split1897.split:                                 ; preds = %837
  %842 = landingpad { ptr, i32 }
          cleanup
  br label %844

.split1900.split:                                 ; preds = %838
  %843 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %77) #8
  br label %844

844:                                              ; preds = %.split1900.split, %.split1897.split
  %.pn788 = phi { ptr, i32 } [ %843, %.split1900.split ], [ %842, %.split1897.split ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %77) #8
  br label %1311

845:                                              ; preds = %.lr.ph3288
  %846 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZN3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %847 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.19, ptr %847, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %847, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1318 unwind label %848

848:                                              ; preds = %845
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %1311

850:                                              ; preds = %855, %.lr.ph1886
  %851 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.lr.ph1886:                                       ; preds = %.lr.ph3288
  %852 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST4Item8as_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %853 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull @.str.19)
          to label %854 unwind label %850

854:                                              ; preds = %.lr.ph1886
  br i1 %853, label %855, label %886

855:                                              ; preds = %854
  %856 = load ptr, ptr %0, align 8, !tbaa !28
  %857 = getelementptr inbounds i8, ptr %856, i64 576
  %858 = invoke noundef i64 @_ZNKSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE5countERS6_(ptr noundef nonnull align 8 dereferenceable(48) %857, ptr noundef nonnull align 8 dereferenceable(8) %852)
          to label %859 unwind label %850

859:                                              ; preds = %855
  %860 = icmp eq i64 %858, 0
  br i1 %860, label %861, label %875

861:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #8
  %862 = load ptr, ptr %0, align 8, !tbaa !28
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %863 unwind label %867

863:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %81) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %864 unwind label %869

864:                                              ; preds = %863
  invoke void @_ZN3AST5Crate17load_extern_crateE4SpanRK8RcStringRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %78, ptr noundef nonnull align 8 dereferenceable(1112) %862, ptr noundef nonnull %79, ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %865 unwind label %871

865:                                              ; preds = %864
  %866 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(8) %78)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %875

867:                                              ; preds = %861
  %868 = landingpad { ptr, i32 }
          cleanup
  br label %874

869:                                              ; preds = %863
  %870 = landingpad { ptr, i32 }
          cleanup
  br label %873

871:                                              ; preds = %864
  %872 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  br label %873

873:                                              ; preds = %871, %869
  %.pn782 = phi { ptr, i32 } [ %872, %871 ], [ %870, %869 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %81) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %874

874:                                              ; preds = %873, %867
  %.pn782.pn = phi { ptr, i32 } [ %.pn782, %873 ], [ %868, %867 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %1311

875:                                              ; preds = %865, %859
  %876 = call noundef zeroext i1 @_ZNKSt6vectorI8RcStringSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %360) #8
  br i1 %876, label %877, label %.loopexit1001

877:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82) #8
  invoke void @_ZSt9make_pairIR8RcStringS1_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.403") align 8 %82, ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull align 8 dereferenceable(8) %852)
          to label %878 unwind label %881

878:                                              ; preds = %877
  %879 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringS0_St4lessIS0_ESaISt4pairIKS0_S0_EEE6insertIS3_IS0_S0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) @_ZN3AST17g_implicit_cratesE, ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %880 unwind label %883

880:                                              ; preds = %878
  call void @_ZNSt4pairI8RcStringS0_ED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #8
  br label %.loopexit1001

881:                                              ; preds = %877
  %882 = landingpad { ptr, i32 }
          cleanup
  br label %885

883:                                              ; preds = %878
  %884 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringS0_ED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #8
  br label %885

885:                                              ; preds = %883, %881
  %.pn785 = phi { ptr, i32 } [ %884, %883 ], [ %882, %881 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #8
  br label %1311

886:                                              ; preds = %854
  %887 = call noundef zeroext i1 @_ZNKSt6vectorI8RcStringSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %360) #8
  br i1 %887, label %888, label %.loopexit1001

888:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %83) #8
  invoke void @_ZSt9make_pairIR8RcStringRA1_KcESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.405") align 8 %83, ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull align 1 dereferenceable(1) @.str.19)
          to label %889 unwind label %892

889:                                              ; preds = %888
  %890 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringS0_St4lessIS0_ESaISt4pairIKS0_S0_EEE6insertIS3_IS0_PKcEEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) @_ZN3AST17g_implicit_cratesE, ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %891 unwind label %894

891:                                              ; preds = %889
  call void @_ZNSt4pairI8RcStringPKcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #8
  br label %.loopexit1001

892:                                              ; preds = %888
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %896

894:                                              ; preds = %889
  %895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringPKcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #8
  br label %896

896:                                              ; preds = %894, %892
  %.pn780 = phi { ptr, i32 } [ %895, %894 ], [ %893, %892 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #8
  br label %1311

.lr.ph1883:                                       ; preds = %.lr.ph3288
  %897 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZN3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %898 = getelementptr inbounds i8, ptr %897, i64 48
  %899 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST6Struct6paramsEv(ptr noundef nonnull align 8 dereferenceable(152) %897)
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(48) %899)
          to label %.lr.ph1880 unwind label %900

900:                                              ; preds = %.lr.ph1883
  %901 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.lr.ph1880:                                       ; preds = %.lr.ph1883
  %902 = call noundef i32 @_ZNK3AST10StructData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %898)
  switch i32 %902, label %.loopexit1001 [
    i32 0, label %904
    i32 1, label %.preheader914
    i32 3, label %.lr.ph1865
    i32 2, label %.lr.ph1859
  ]

.preheader914:                                    ; preds = %.lr.ph1880
  %903 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST10StructData7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %898)
  br label %.loopexit1001

904:                                              ; preds = %.lr.ph1880
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2188, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

.lr.ph1865:                                       ; preds = %.lr.ph1880
  %905 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %898)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #8
  %906 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %905) #8
  store ptr %906, ptr %84, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #8
  %907 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %905) #8
  store ptr %907, ptr %85, align 8
  %908 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #8
  br i1 %908, label %.lr.ph1862, label %..loopexit885_crit_edge

..loopexit885_crit_edge:                          ; preds = %932, %.lr.ph1865
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #8
  br label %.loopexit1001

.lr.ph1862:                                       ; preds = %.lr.ph1865, %932
  %909 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %909)
          to label %910 unwind label %922

910:                                              ; preds = %.lr.ph1862
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #8
  store ptr %0, ptr %87, align 8, !tbaa !9
  store ptr %909, ptr %358, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(16) %87) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %909, i32 noundef 0, ptr noundef nonnull %86)
          to label %911 unwind label %924

911:                                              ; preds = %910
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  %912 = getelementptr inbounds i8, ptr %909, i64 72
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %912)
          to label %913 unwind label %922

913:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #8
  store ptr %0, ptr %89, align 8, !tbaa !9
  store ptr %909, ptr %359, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(16) %89) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %909, i32 noundef 1, ptr noundef nonnull %88)
          to label %914 unwind label %926

914:                                              ; preds = %913
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #8
  %915 = getelementptr inbounds i8, ptr %909, i64 64
  %916 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %915, ptr noundef nonnull @.str.19)
          to label %917 unwind label %922

917:                                              ; preds = %914
  br i1 %916, label %918, label %930

918:                                              ; preds = %917
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  %919 = load ptr, ptr %90, align 8
  %920 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %905, ptr %919)
          to label %921 unwind label %928

921:                                              ; preds = %918
  store ptr %920, ptr %84, align 8, !tbaa !9
  br label %932

922:                                              ; preds = %914, %911, %.lr.ph1862
  %923 = landingpad { ptr, i32 }
          cleanup
  br label %935

924:                                              ; preds = %910
  %925 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  br label %935

926:                                              ; preds = %913
  %927 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #8
  br label %935

928:                                              ; preds = %918
  %929 = landingpad { ptr, i32 }
          cleanup
  br label %935

930:                                              ; preds = %917
  %931 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br label %932

932:                                              ; preds = %930, %921
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #8
  %933 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %905) #8
  store ptr %933, ptr %85, align 8
  %934 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #8
  br i1 %934, label %.lr.ph1862, label %..loopexit885_crit_edge, !llvm.loop !78

935:                                              ; preds = %928, %926, %924, %922
  %.pn776 = phi { ptr, i32 } [ %929, %928 ], [ %923, %922 ], [ %927, %926 ], [ %925, %924 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #8
  br label %1311

.lr.ph1859:                                       ; preds = %.lr.ph1880
  %936 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST10StructData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %898)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #8
  %937 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %936) #8
  store ptr %937, ptr %91, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #8
  %938 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %936) #8
  store ptr %938, ptr %92, align 8
  %939 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #8
  br i1 %939, label %.lr.ph1856, label %..loopexit886_crit_edge

..loopexit886_crit_edge:                          ; preds = %962, %.lr.ph1859
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  br label %.loopexit1001

.lr.ph1856:                                       ; preds = %.lr.ph1859, %962
  %940 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %940)
          to label %941 unwind label %952

941:                                              ; preds = %.lr.ph1856
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #8
  store ptr %0, ptr %94, align 8, !tbaa !9
  store ptr %940, ptr %356, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %940, i32 noundef 0, ptr noundef nonnull %93)
          to label %942 unwind label %954

942:                                              ; preds = %941
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  %943 = getelementptr inbounds i8, ptr %940, i64 64
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %943)
          to label %944 unwind label %952

944:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #8
  store ptr %0, ptr %96, align 8, !tbaa !9
  store ptr %940, ptr %357, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(16) %96) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %940, i32 noundef 1, ptr noundef nonnull %95)
          to label %945 unwind label %956

945:                                              ; preds = %944
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #8
  %946 = invoke noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120) %943)
          to label %947 unwind label %952

947:                                              ; preds = %945
  br i1 %946, label %960, label %948

948:                                              ; preds = %947
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST9TupleItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  %949 = load ptr, ptr %97, align 8
  %950 = invoke ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %936, ptr %949)
          to label %951 unwind label %958

951:                                              ; preds = %948
  store ptr %950, ptr %91, align 8, !tbaa !9
  br label %962

952:                                              ; preds = %945, %942, %.lr.ph1856
  %953 = landingpad { ptr, i32 }
          cleanup
  br label %965

954:                                              ; preds = %941
  %955 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  br label %965

956:                                              ; preds = %944
  %957 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #8
  br label %965

958:                                              ; preds = %948
  %959 = landingpad { ptr, i32 }
          cleanup
  br label %965

960:                                              ; preds = %947
  %961 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %962

962:                                              ; preds = %960, %951
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #8
  %963 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %936) #8
  store ptr %963, ptr %92, align 8
  %964 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #8
  br i1 %964, label %.lr.ph1856, label %..loopexit886_crit_edge, !llvm.loop !79

965:                                              ; preds = %958, %956, %954, %952
  %.pn774 = phi { ptr, i32 } [ %959, %958 ], [ %953, %952 ], [ %957, %956 ], [ %955, %954 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  br label %1311

966:                                              ; preds = %.lr.ph1853
  %967 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.lr.ph1853:                                       ; preds = %.lr.ph3288
  %968 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %969 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST4Enum6paramsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(48) %969)
          to label %970 unwind label %966

970:                                              ; preds = %.lr.ph1853
  %971 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #8
  %972 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %971) #8
  store ptr %972, ptr %98, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #8
  %973 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %971) #8
  store ptr %973, ptr %99, align 8
  %974 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br i1 %974, label %.lr.ph1847, label %._crit_edge1848

._crit_edge1848:                                  ; preds = %1052, %970
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %118) #8
  %975 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  %976 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %975) #8
  store ptr %976, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #8
  %977 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  %978 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %977) #8
  store ptr %978, ptr %119, align 8
  %979 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  br i1 %979, label %.lr.ph1850, label %..loopexit950_crit_edge

.lr.ph1847:                                       ; preds = %970, %1052
  %980 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %980)
          to label %981 unwind label %982

981:                                              ; preds = %.lr.ph1847
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %101) #8
  store ptr %0, ptr %101, align 8, !tbaa !9
  store ptr %980, ptr %350, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(16) %101) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %980, i32 noundef 0, ptr noundef nonnull %100)
          to label %.lr.ph1844 unwind label %984

.loopexit920:                                     ; preds = %.preheader887.split, %.lr.ph1844, %..loopexit865_crit_edge, %..loopexit866_crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #8
  store ptr %0, ptr %117, align 8, !tbaa !9
  store ptr %980, ptr %355, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(16) %117) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %980, i32 noundef 1, ptr noundef nonnull %116)
          to label %1052 unwind label %1055

982:                                              ; preds = %.lr.ph1847
  %983 = landingpad { ptr, i32 }
          cleanup
  br label %1057

984:                                              ; preds = %981
  %985 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #8
  br label %1057

.lr.ph1844:                                       ; preds = %981
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #8
  %986 = getelementptr inbounds i8, ptr %980, i64 32
  %987 = call noundef i32 @_ZNK3AST15EnumVariantData3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %986)
  switch i32 %987, label %.loopexit920 [
    i32 0, label %989
    i32 1, label %.preheader887.split
    i32 2, label %.lr.ph1825
    i32 3, label %.lr.ph1819
  ]

.preheader887.split:                              ; preds = %.lr.ph1844
  %988 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST15EnumVariantData8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(32) %986)
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(16) %988)
          to label %.loopexit920 unwind label %.split1829, !llvm.loop !80

989:                                              ; preds = %.lr.ph1844
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2226, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

.split1829:                                       ; preds = %.preheader887.split
  %990 = landingpad { ptr, i32 }
          cleanup
  br label %1057

.lr.ph1825:                                       ; preds = %.lr.ph1844
  %991 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %986)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #8
  %992 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %991) #8
  store ptr %992, ptr %102, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #8
  %993 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %991) #8
  store ptr %993, ptr %103, align 8
  %994 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  br i1 %994, label %.lr.ph1822, label %..loopexit865_crit_edge

..loopexit865_crit_edge:                          ; preds = %1017, %.lr.ph1825
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  br label %.loopexit920

.lr.ph1822:                                       ; preds = %.lr.ph1825, %1017
  %995 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %995)
          to label %996 unwind label %1007

996:                                              ; preds = %.lr.ph1822
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %105) #8
  store ptr %0, ptr %105, align 8, !tbaa !9
  store ptr %995, ptr %353, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(16) %105) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %995, i32 noundef 0, ptr noundef nonnull %104)
          to label %997 unwind label %1009

997:                                              ; preds = %996
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  %998 = getelementptr inbounds i8, ptr %995, i64 64
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %998)
          to label %999 unwind label %1007

999:                                              ; preds = %997
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #8
  store ptr %0, ptr %107, align 8, !tbaa !9
  store ptr %995, ptr %354, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(16) %107) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %995, i32 noundef 0, ptr noundef nonnull %106)
          to label %1000 unwind label %1011

1000:                                             ; preds = %999
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #8
  %1001 = invoke noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120) %998)
          to label %1002 unwind label %1007

1002:                                             ; preds = %1000
  br i1 %1001, label %1015, label %1003

1003:                                             ; preds = %1002
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST9TupleItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  %1004 = load ptr, ptr %108, align 8
  %1005 = invoke ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %991, ptr %1004)
          to label %1006 unwind label %1013

1006:                                             ; preds = %1003
  store ptr %1005, ptr %102, align 8, !tbaa !9
  br label %1017

1007:                                             ; preds = %1000, %997, %.lr.ph1822
  %1008 = landingpad { ptr, i32 }
          cleanup
  br label %1020

1009:                                             ; preds = %996
  %1010 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  br label %1020

1011:                                             ; preds = %999
  %1012 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #8
  br label %1020

1013:                                             ; preds = %1003
  %1014 = landingpad { ptr, i32 }
          cleanup
  br label %1020

1015:                                             ; preds = %1002
  %1016 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  br label %1017

1017:                                             ; preds = %1015, %1006
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #8
  %1018 = call ptr @_ZNSt6vectorIN3AST9TupleItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %991) #8
  store ptr %1018, ptr %103, align 8
  %1019 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST9TupleItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  br i1 %1019, label %.lr.ph1822, label %..loopexit865_crit_edge, !llvm.loop !81

1020:                                             ; preds = %1013, %1011, %1009, %1007
  %.pn769 = phi { ptr, i32 } [ %1014, %1013 ], [ %1008, %1007 ], [ %1012, %1011 ], [ %1010, %1009 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  br label %1057

.lr.ph1819:                                       ; preds = %.lr.ph1844
  %1021 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST15EnumVariantData9as_StructEv(ptr noundef nonnull align 8 dereferenceable(32) %986)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #8
  %1022 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1021) #8
  store ptr %1022, ptr %109, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #8
  %1023 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1021) #8
  store ptr %1023, ptr %110, align 8
  %1024 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #8
  br i1 %1024, label %.lr.ph1816, label %..loopexit866_crit_edge

..loopexit866_crit_edge:                          ; preds = %1048, %.lr.ph1819
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #8
  br label %.loopexit920

.lr.ph1816:                                       ; preds = %.lr.ph1819, %1048
  %1025 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %109) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %1025)
          to label %1026 unwind label %1038

1026:                                             ; preds = %.lr.ph1816
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %112) #8
  store ptr %0, ptr %112, align 8, !tbaa !9
  store ptr %1025, ptr %351, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(16) %112) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %1025, i32 noundef 0, ptr noundef nonnull %111)
          to label %1027 unwind label %1040

1027:                                             ; preds = %1026
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #8
  %1028 = getelementptr inbounds i8, ptr %1025, i64 72
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %1028)
          to label %1029 unwind label %1038

1029:                                             ; preds = %1027
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %114) #8
  store ptr %0, ptr %114, align 8, !tbaa !9
  store ptr %1025, ptr %352, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(16) %114) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %1025, i32 noundef 1, ptr noundef nonnull %113)
          to label %1030 unwind label %1042

1030:                                             ; preds = %1029
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #8
  %1031 = getelementptr inbounds i8, ptr %1025, i64 64
  %1032 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1031, ptr noundef nonnull @.str.19)
          to label %1033 unwind label %1038

1033:                                             ; preds = %1030
  br i1 %1032, label %1034, label %1046

1034:                                             ; preds = %1033
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %109) #8
  %1035 = load ptr, ptr %115, align 8
  %1036 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %1021, ptr %1035)
          to label %1037 unwind label %1044

1037:                                             ; preds = %1034
  store ptr %1036, ptr %109, align 8, !tbaa !9
  br label %1048

1038:                                             ; preds = %1030, %1027, %.lr.ph1816
  %1039 = landingpad { ptr, i32 }
          cleanup
  br label %1051

1040:                                             ; preds = %1026
  %1041 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #8
  br label %1051

1042:                                             ; preds = %1029
  %1043 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #8
  br label %1051

1044:                                             ; preds = %1034
  %1045 = landingpad { ptr, i32 }
          cleanup
  br label %1051

1046:                                             ; preds = %1033
  %1047 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %109) #8
  br label %1048

1048:                                             ; preds = %1046, %1037
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #8
  %1049 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1021) #8
  store ptr %1049, ptr %110, align 8
  %1050 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #8
  br i1 %1050, label %.lr.ph1816, label %..loopexit866_crit_edge, !llvm.loop !82

1051:                                             ; preds = %1044, %1042, %1040, %1038
  %.pn767 = phi { ptr, i32 } [ %1045, %1044 ], [ %1039, %1038 ], [ %1043, %1042 ], [ %1041, %1040 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #8
  br label %1057

1052:                                             ; preds = %.loopexit920
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #8
  %1053 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  %1054 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br i1 %1054, label %.lr.ph1847, label %._crit_edge1848

1055:                                             ; preds = %.loopexit920
  %1056 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #8
  br label %1057

1057:                                             ; preds = %.split1829, %1020, %1051, %1055, %984, %982
  %.pn767.pn.pn = phi { ptr, i32 } [ %1056, %1055 ], [ %985, %984 ], [ %983, %982 ], [ %.pn767, %1051 ], [ %.pn769, %1020 ], [ %990, %.split1829 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  br label %1311

..loopexit950_crit_edge:                          ; preds = %1073, %._crit_edge1848
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #8
  br label %.loopexit1001

1058:                                             ; preds = %.lr.ph1850
  %1059 = landingpad { ptr, i32 }
          cleanup
  br label %1077

.lr.ph1850:                                       ; preds = %._crit_edge1848, %1073
  %1060 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %1061 = getelementptr inbounds i8, ptr %1060, i64 24
  %1062 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1061, ptr noundef nonnull @.str.19)
          to label %1063 unwind label %1058

1063:                                             ; preds = %.lr.ph1850
  br i1 %1062, label %1064, label %1071

1064:                                             ; preds = %1063
  %1065 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %1066 = load ptr, ptr %120, align 8
  %1067 = invoke ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %1065, ptr %1066)
          to label %1068 unwind label %1069

1068:                                             ; preds = %1064
  store ptr %1067, ptr %118, align 8, !tbaa !9
  br label %1073

1069:                                             ; preds = %1064
  %1070 = landingpad { ptr, i32 }
          cleanup
  br label %1077

1071:                                             ; preds = %1063
  %1072 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  br label %1073

1073:                                             ; preds = %1071, %1068
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #8
  %1074 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Enum8variantsEv(ptr noundef nonnull align 8 dereferenceable(80) %968)
  %1075 = call ptr @_ZNSt6vectorIN3AST11EnumVariantESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1074) #8
  store ptr %1075, ptr %119, align 8
  %1076 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST11EnumVariantESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  br i1 %1076, label %.lr.ph1850, label %..loopexit950_crit_edge, !llvm.loop !83

1077:                                             ; preds = %1069, %1058
  %.pn765 = phi { ptr, i32 } [ %1070, %1069 ], [ %1059, %1058 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #8
  br label %1311

.lr.ph1813:                                       ; preds = %.lr.ph3288
  %1078 = call noundef nonnull align 8 dereferenceable(76) ptr @_ZN3AST4Item8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %1079 = getelementptr inbounds i8, ptr %1078, i64 48
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(48) %1078)
          to label %1082 unwind label %1080

1080:                                             ; preds = %.lr.ph1813
  %1081 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1082:                                             ; preds = %.lr.ph1813
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #8
  %1083 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1079) #8
  store ptr %1083, ptr %121, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #8
  %1084 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1079) #8
  store ptr %1084, ptr %122, align 8
  %1085 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #8
  br i1 %1085, label %.lr.ph1810, label %..loopexit951_crit_edge

..loopexit951_crit_edge:                          ; preds = %1109, %1082
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  br label %.loopexit1001

.lr.ph1810:                                       ; preds = %1082, %1109
  %1086 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %1086)
          to label %1087 unwind label %1099

1087:                                             ; preds = %.lr.ph1810
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #8
  store ptr %0, ptr %124, align 8, !tbaa !9
  store ptr %1086, ptr %348, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 8 dereferenceable(16) %124) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %1086, i32 noundef 0, ptr noundef nonnull %123)
          to label %1088 unwind label %1101

1088:                                             ; preds = %1087
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #8
  %1089 = getelementptr inbounds i8, ptr %1086, i64 72
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %1089)
          to label %1090 unwind label %1099

1090:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %126) #8
  store ptr %0, ptr %126, align 8, !tbaa !9
  store ptr %1086, ptr %349, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRK4SpanRK15ExpandDecoratorRKN3AST9AttributeEEEC2IZ10Expand_ModRK11ExpandStateNS6_12AbsolutePathERNS6_6ModuleEjE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 8 dereferenceable(16) %126) #8
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageSt8functionIFvRK4SpanRK15ExpandDecoratorRKNS2_9AttributeEEE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %1086, i32 noundef 1, ptr noundef nonnull %125)
          to label %1091 unwind label %1103

1091:                                             ; preds = %1090
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #8
  %1092 = getelementptr inbounds i8, ptr %1086, i64 64
  %1093 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1092, ptr noundef nonnull @.str.19)
          to label %1094 unwind label %1099

1094:                                             ; preds = %1091
  br i1 %1093, label %1095, label %1107

1095:                                             ; preds = %1094
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST10StructItemESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  %1096 = load ptr, ptr %127, align 8
  %1097 = invoke ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %1079, ptr %1096)
          to label %1098 unwind label %1105

1098:                                             ; preds = %1095
  store ptr %1097, ptr %121, align 8, !tbaa !9
  br label %1109

1099:                                             ; preds = %1091, %1088, %.lr.ph1810
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1112

1101:                                             ; preds = %1087
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #8
  br label %1112

1103:                                             ; preds = %1090
  %1104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #8
  br label %1112

1105:                                             ; preds = %1095
  %1106 = landingpad { ptr, i32 }
          cleanup
  br label %1112

1107:                                             ; preds = %1094
  %1108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  br label %1109

1109:                                             ; preds = %1107, %1098
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #8
  %1110 = call ptr @_ZNSt6vectorIN3AST10StructItemESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1079) #8
  store ptr %1110, ptr %122, align 8
  %1111 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST10StructItemESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #8
  br i1 %1111, label %.lr.ph1810, label %..loopexit951_crit_edge, !llvm.loop !84

1112:                                             ; preds = %1105, %1103, %1101, %1099
  %.pn762 = phi { ptr, i32 } [ %1106, %1105 ], [ %1100, %1099 ], [ %1104, %1103 ], [ %1102, %1101 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  br label %1311

1113:                                             ; preds = %.lr.ph1807
  %1114 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.lr.ph1807:                                       ; preds = %.lr.ph3288
  %1115 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3AST4Item8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %39)
  %1116 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128) %1115)
  invoke void @_Z20Expand_GenericParamsRK11ExpandStateRN3AST6ModuleERNS2_13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(48) %1116)
          to label %1117 unwind label %1113

1117:                                             ; preds = %.lr.ph1807
  %1118 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST5Trait11supertraitsEv(ptr noundef nonnull align 8 dereferenceable(128) %1115)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #8
  %1119 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1118) #8
  store ptr %1119, ptr %128, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #8
  %1120 = call ptr @_ZNSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1118) #8
  store ptr %1120, ptr %129, align 8
  %1121 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %129) #8
  br i1 %1121, label %.lr.ph1701, label %._crit_edge1702

._crit_edge1702:                                  ; preds = %1127, %1117
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #8
  %1122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST5Trait5itemsEv(ptr noundef nonnull align 8 dereferenceable(128) %1115)
  %1123 = call noundef i64 @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1122) #8
  %.not3294 = icmp eq i64 %1123, 0
  br i1 %.not3294, label %.loopexit1001, label %.lr.ph1805

.lr.ph1701:                                       ; preds = %1117, %1127
  %1124 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %128) #8
  %1125 = getelementptr inbounds i8, ptr %1124, i64 32
  %1126 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1125) #8
  invoke void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(240) %1126)
          to label %1127 unwind label %1130

1127:                                             ; preds = %.lr.ph1701
  %1128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %128) #8
  %1129 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %129) #8
  br i1 %1129, label %.lr.ph1701, label %._crit_edge1702

1130:                                             ; preds = %.lr.ph1701
  %1131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #8
  br label %1311

.lr.ph1805:                                       ; preds = %._crit_edge1702, %1271
  %.06651803 = phi i64 [ %1272, %1271 ], [ 0, %._crit_edge1702 ]
  %1132 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1122, i64 noundef %.06651803) #8
  %1133 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1134 unwind label %1153

1134:                                             ; preds = %.lr.ph1805
  br i1 %1133, label %1135, label %1155

1135:                                             ; preds = %1134
  %1136 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %1137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1136, ptr noundef nonnull @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj)
          to label %1138 unwind label %1153

1138:                                             ; preds = %1135
  %1139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1137, ptr noundef nonnull @.str.48)
          to label %1140 unwind label %1153

1140:                                             ; preds = %1138
  %1141 = getelementptr inbounds i8, ptr %1132, i64 72
  %1142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1139, ptr noundef nonnull align 8 dereferenceable(8) %1141)
          to label %1143 unwind label %1153

1143:                                             ; preds = %1140
  %1144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1142, ptr noundef nonnull @.str.25)
          to label %1145 unwind label %1153

1145:                                             ; preds = %1143
  %1146 = getelementptr inbounds i8, ptr %1132, i64 80
  %1147 = call noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %1146)
  %1148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1144, ptr noundef %1147)
          to label %1149 unwind label %1153

1149:                                             ; preds = %1145
  %1150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1148, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1151 unwind label %1153

1151:                                             ; preds = %1149
  %1152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1150, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1155 unwind label %1153

1153:                                             ; preds = %1151, %1149, %1145, %1143, %1140, %1138, %1135, %.lr.ph1805
  %1154 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1155:                                             ; preds = %1151, %1134
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %130) #8
  %1156 = getelementptr inbounds i8, ptr %1132, i64 8
  call void @_ZN3AST13AttributeListC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr noundef nonnull align 8 dereferenceable(24) %1156) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %131) #8
  %1157 = getelementptr inbounds i8, ptr %1132, i64 72
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %1157)
  invoke void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind nonnull writable sret(%"struct.AST::AbsolutePath") align 8 %131, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull %132)
          to label %1158 unwind label %1163

1158:                                             ; preds = %1155
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  invoke void @_Z20Expand_Attrs_CfgAttrRN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24) %130)
          to label %1159 unwind label %1165

1159:                                             ; preds = %1158
  %1160 = getelementptr inbounds i8, ptr %1132, i64 80
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %130, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(128) %1115, ptr noundef nonnull align 8 dereferenceable(488) %1160)
          to label %.lr.ph1801 unwind label %1165

.loopexit922:                                     ; preds = %.preheader901.split, %1260, %.preheader897.split, %.preheader893.split, %1253, %.lr.ph1776
  %1161 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1122, i64 noundef %.06651803) #8
  %1162 = getelementptr inbounds i8, ptr %1161, i64 80
  invoke void @_Z12Expand_AttrsRK11ExpandStateRKN3AST13AttributeListE9AttrStageRKNS2_12AbsolutePathERNS2_6ModuleERNS2_5TraitERNS2_4ItemE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(24) %130, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(128) %1115, ptr noundef nonnull align 8 dereferenceable(488) %1162)
          to label %1263 unwind label %1269

1163:                                             ; preds = %1155
  %1164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  br label %1276

1165:                                             ; preds = %1159, %1158
  %1166 = landingpad { ptr, i32 }
          cleanup
  br label %1275

.lr.ph1801:                                       ; preds = %1159
  %1167 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  switch i32 %1167, label %1177 [
    i32 0, label %1176
    i32 1, label %.preheader893.split
    i32 2, label %.lr.ph1776
    i32 17, label %.preheader897.split
    i32 18, label %.preheader899.split
    i32 11, label %.preheader901.split
  ]

.preheader901.split:                              ; preds = %.lr.ph1801
  %1168 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  %1169 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %1168)
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %1169)
          to label %.loopexit922 unwind label %.split1705, !llvm.loop !85

.preheader899.split:                              ; preds = %.lr.ph1801
  %1170 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  %1171 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %1170)
  invoke void @_Z11Expand_ExprRK11ExpandStateRN3AST4ExprE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(16) %1171)
          to label %1260 unwind label %.split1728

.preheader897.split:                              ; preds = %.lr.ph1801
  %1172 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  invoke void @_Z15Expand_FunctionRK11ExpandStateRN3AST6ModuleERNS2_8FunctionE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(368) %1172)
          to label %.loopexit922 unwind label %.split1752, !llvm.loop !86

.preheader893.split:                              ; preds = %.lr.ph1801
  %1173 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  br label %.loopexit922

1174:                                             ; preds = %1180
  %1175 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1176:                                             ; preds = %.lr.ph1801
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, i32 noundef 2300, ptr noundef nonnull @__PRETTY_FUNCTION__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj) #9
  unreachable

1177:                                             ; preds = %.lr.ph1801
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #8
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %133)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %135) #8
  store ptr %1132, ptr %135, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull %134)
          to label %1178 unwind label %1181

1178:                                             ; preds = %1177
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  %1179 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1179, ptr noundef nonnull @.str.11)
          to label %1180 unwind label %1183

1180:                                             ; preds = %1178
  invoke void @__cxa_throw(ptr nonnull %1179, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1318 unwind label %1174

1181:                                             ; preds = %1177
  %1182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  br label %1275

1183:                                             ; preds = %1178
  %1184 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1179) #8
  br label %1275

.lr.ph1776:                                       ; preds = %.lr.ph1801
  %1185 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %1160)
  %1186 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNK3AST15MacroInvocation4pathEv(ptr noundef nonnull align 8 dereferenceable(393) %1185)
  %1187 = call noundef zeroext i1 @_ZNK3AST4Path8is_validEv(ptr noundef nonnull align 8 dereferenceable(240) %1186)
  br i1 %1187, label %1188, label %.loopexit922

1188:                                             ; preds = %.lr.ph1776
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %136) #8
  %1189 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1190 unwind label %1202

1190:                                             ; preds = %1188
  %1191 = select i1 %1189, ptr @__func__._Z10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEj, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #8
  store ptr %1185, ptr %138, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 8 dereferenceable(8) %138) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %136, ptr noundef %1191, ptr noundef nonnull %137)
          to label %1192 unwind label %1204

1192:                                             ; preds = %1190
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #8
  call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %139) #8
  invoke void @_ZN3AST15MacroInvocationC2EOS0_(ptr noundef nonnull align 8 dereferenceable(393) %139, ptr noundef nonnull align 8 dereferenceable(393) %1185)
          to label %1193 unwind label %1206

1193:                                             ; preds = %1192
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %140) #8
  invoke void @_Z12Expand_MacroRK11ExpandStateRN3AST6ModuleERNS2_15MacroInvocationE(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.273") align 8 %140, ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(393) %139)
          to label %1194 unwind label %1208

1194:                                             ; preds = %1193
  %1195 = call noundef zeroext i1 @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br i1 %1195, label %1217, label %1196

1196:                                             ; preds = %1194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %141) #8
  %1197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST15MacroInvocation4spanEv(ptr noundef nonnull align 8 dereferenceable(393) %139)
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(8) %1197)
          to label %1198 unwind label %1210

1198:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %143) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS7_6ModuleEjE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 1 dereferenceable(1) %143) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull %142)
          to label %1199 unwind label %1212

1199:                                             ; preds = %1198
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %141) #8
  %1200 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1200, ptr noundef nonnull @.str.11)
          to label %1201 unwind label %1215

1201:                                             ; preds = %1199
  invoke void @__cxa_throw(ptr nonnull %1200, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1318 unwind label %.loopexit.split-lp

1202:                                             ; preds = %1188
  %1203 = landingpad { ptr, i32 }
          cleanup
  br label %1257

1204:                                             ; preds = %1190
  %1205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #8
  br label %1257

1206:                                             ; preds = %1192
  %1207 = landingpad { ptr, i32 }
          cleanup
  br label %1256

1208:                                             ; preds = %1193
  %1209 = landingpad { ptr, i32 }
          cleanup
  br label %1255

1210:                                             ; preds = %1196
  %1211 = landingpad { ptr, i32 }
          cleanup
  br label %1214

1212:                                             ; preds = %1198
  %1213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  br label %1214

1214:                                             ; preds = %1212, %1210
  %.pn742 = phi { ptr, i32 } [ %1213, %1212 ], [ %1211, %1210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %141) #8
  br label %1254

1215:                                             ; preds = %1199
  %1216 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1200) #8
  br label %1254

.loopexit869:                                     ; preds = %1248
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1254

.loopexit.split-lp:                               ; preds = %1201
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %1254

1217:                                             ; preds = %1194
  %1218 = call noundef ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  %.not744 = icmp eq ptr %1218, null
  br i1 %.not744, label %1248, label %.preheader

.preheader:                                       ; preds = %1217, %1229
  %.0650.in = phi i64 [ %.0650, %1229 ], [ %.06651803, %1217 ]
  %.0650 = add i64 %.0650.in, 1
  %1219 = call noundef ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  %1220 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1219, i32 noundef 0)
          to label %1221 unwind label %1230

1221:                                             ; preds = %.preheader
  %.not745 = icmp eq i32 %1220, 1
  br i1 %.not745, label %1237, label %1222

1222:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 568, ptr nonnull %144) #8
  %1223 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZNKSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  invoke void @_Z16Parse_Trait_ItemR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"struct.AST::Named.382") align 8 %144, ptr noundef nonnull align 8 dereferenceable(176) %1223)
          to label %1224 unwind label %1232

1224:                                             ; preds = %1222
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #8
  %1225 = call ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1122) #8
  store ptr %1225, ptr %147, align 8
  %1226 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %147, i64 noundef %.0650) #8
  store ptr %1226, ptr %146, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %146) #8
  %1227 = load ptr, ptr %145, align 8
  %1228 = invoke ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %1122, ptr %1227, ptr noundef nonnull align 8 dereferenceable(568) %144)
          to label %1229 unwind label %1234

1229:                                             ; preds = %1224
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #8
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %144) #8
  call void @llvm.lifetime.end.p0(i64 568, ptr nonnull %144) #8
  br label %.preheader, !llvm.loop !87

1230:                                             ; preds = %.preheader
  %1231 = landingpad { ptr, i32 }
          cleanup
  br label %1254

1232:                                             ; preds = %1222
  %1233 = landingpad { ptr, i32 }
          cleanup
  br label %1236

1234:                                             ; preds = %1224
  %1235 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #8
  call void @_ZN3AST5NamedINS_4ItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(568) %144) #8
  br label %1236

1236:                                             ; preds = %1234, %1232
  %.pn748 = phi { ptr, i32 } [ %1235, %1234 ], [ %1233, %1232 ]
  call void @llvm.lifetime.end.p0(i64 568, ptr nonnull %144) #8
  br label %1254

1237:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 488, ptr nonnull %148) #8
  invoke void @_ZN3AST4Item9make_NoneENS0_9Data_NoneE(ptr dead_on_unwind nonnull writable sret(%"class.AST::Item") align 8 %148)
          to label %1238 unwind label %1243

1238:                                             ; preds = %1237
  %1239 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1122, i64 noundef %.06651803) #8
  %1240 = getelementptr inbounds i8, ptr %1239, i64 80
  %1241 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %1240, ptr noundef nonnull align 8 dereferenceable(488) %148)
          to label %1242 unwind label %1245

1242:                                             ; preds = %1238
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %148) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %148) #8
  br label %1253

1243:                                             ; preds = %1237
  %1244 = landingpad { ptr, i32 }
          cleanup
  br label %1247

1245:                                             ; preds = %1238
  %1246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %148) #8
  br label %1247

1247:                                             ; preds = %1245, %1243
  %.pn746 = phi { ptr, i32 } [ %1246, %1245 ], [ %1244, %1243 ]
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %148) #8
  br label %1254

1248:                                             ; preds = %1217
  %1249 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1122, i64 noundef %.06651803) #8
  %1250 = getelementptr inbounds i8, ptr %1249, i64 80
  %1251 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %1250)
  %1252 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST15MacroInvocationaSEOS0_(ptr noundef nonnull align 8 dereferenceable(393) %1251, ptr noundef nonnull align 8 dereferenceable(393) %139)
          to label %1253 unwind label %.loopexit869

1253:                                             ; preds = %1248, %1242
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %140) #8
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %139) #8
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %139) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %136) #8
  br label %.loopexit922

1254:                                             ; preds = %.loopexit869, %.loopexit.split-lp, %1230, %1236, %1247, %1215, %1214
  %.pn748.pn.pn = phi { ptr, i32 } [ %1216, %1215 ], [ %.pn742, %1214 ], [ %.pn748, %1236 ], [ %.pn746, %1247 ], [ %1231, %1230 ], [ %lpad.loopexit, %.loopexit869 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt10unique_ptrI11TokenStreamSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br label %1255

1255:                                             ; preds = %1254, %1208
  %.pn748.pn.pn.pn = phi { ptr, i32 } [ %.pn748.pn.pn, %1254 ], [ %1209, %1208 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %140) #8
  call void @_ZN3AST15MacroInvocationD2Ev(ptr noundef nonnull align 8 dereferenceable(393) %139) #8
  br label %1256

1256:                                             ; preds = %1255, %1206
  %.pn748.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn748.pn.pn.pn, %1255 ], [ %1207, %1206 ]
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %139) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %136) #8
  br label %1257

1257:                                             ; preds = %1256, %1204, %1202
  %.pn748.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn748.pn.pn.pn.pn, %1256 ], [ %1205, %1204 ], [ %1203, %1202 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %136) #8
  br label %1275

.split1752:                                       ; preds = %.preheader897.split
  %1258 = landingpad { ptr, i32 }
          cleanup
  br label %1275

.split1728:                                       ; preds = %1260, %.preheader899.split
  %1259 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1260:                                             ; preds = %.preheader899.split
  %1261 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %1170)
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %1261)
          to label %.loopexit922 unwind label %.split1728, !llvm.loop !88

.split1705:                                       ; preds = %.preheader901.split
  %1262 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1263:                                             ; preds = %.loopexit922
  %1264 = getelementptr inbounds i8, ptr %1161, i64 8
  %1265 = call noundef i64 @_ZNKSt6vectorIN3AST9AttributeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1264) #8
  %1266 = icmp eq i64 %1265, 0
  br i1 %1266, label %1267, label %1271

1267:                                             ; preds = %1263
  %1268 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1264, ptr noundef nonnull align 8 dereferenceable(24) %130) #8
  br label %1271

1269:                                             ; preds = %.loopexit922
  %1270 = landingpad { ptr, i32 }
          cleanup
  br label %1275

1271:                                             ; preds = %1267, %1263
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #8
  %1272 = add nuw i64 %.06651803, 1
  %1273 = call noundef i64 @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1122) #8
  %1274 = icmp ult i64 %1272, %1273
  br i1 %1274, label %.lr.ph1805, label %.loopexit1001, !llvm.loop !89

1275:                                             ; preds = %1174, %1181, %1183, %1257, %.split1752, %.split1728, %.split1705, %1269, %1165
  %.pn755.pn = phi { ptr, i32 } [ %1270, %1269 ], [ %1166, %1165 ], [ %1175, %1174 ], [ %1184, %1183 ], [ %1182, %1181 ], [ %1262, %.split1705 ], [ %1259, %.split1728 ], [ %1258, %.split1752 ], [ %.pn748.pn.pn.pn.pn.pn, %1257 ]
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  br label %1276

1276:                                             ; preds = %1275, %1163
  %.pn755.pn.pn = phi { ptr, i32 } [ %.pn755.pn, %1275 ], [ %1164, %1163 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #8
  br label %1311

.split1697:                                       ; preds = %.preheader986.split
  %1277 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.split1692:                                       ; preds = %.preheader988.split
  %1278 = landingpad { ptr, i32 }
          cleanup
  br label %1311

.split1687:                                       ; preds = %1280, %.preheader990.split
  %1279 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1280:                                             ; preds = %.preheader990.split
  %1281 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %565)
  invoke void @_Z11Expand_TypeRK11ExpandStateRN3AST6ModuleER7TypeRef(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(120) %1281)
          to label %.loopexit1001 unwind label %.split1687, !llvm.loop !90

..loopexit956_crit_edge:                          ; preds = %1285, %.preheader992.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #8
  br label %.loopexit1001

.lr.ph1672:                                       ; preds = %.preheader992.split.split, %1285
  %1282 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %149) #8
  %1283 = getelementptr inbounds i8, ptr %1282, i64 32
  %1284 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1283) #8
  invoke void @_Z11Expand_PathRK11ExpandStateRN3AST6ModuleERNS2_4PathE(ptr noundef nonnull align 8 dereferenceable(30) %0, ptr noundef nonnull align 8 dereferenceable(480) %2, ptr noundef nonnull align 8 dereferenceable(240) %1284)
          to label %1285 unwind label %.split1677.split

1285:                                             ; preds = %.lr.ph1672
  %1286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %149) #8
  %1287 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %150) #8
  br i1 %1287, label %.lr.ph1672, label %..loopexit956_crit_edge

.split1677.split:                                 ; preds = %.lr.ph1672
  %1288 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #8
  br label %1311

1289:                                             ; preds = %.loopexit1001
  %1290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %371) #8
  %1291 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1290) #8
  %1292 = getelementptr inbounds i8, ptr %1291, i64 80
  %1293 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %1292)
  %1294 = icmp eq i32 %1293, 0
  br i1 %1294, label %1295, label %1301

1295:                                             ; preds = %1289
  %1296 = invoke noundef nonnull align 8 dereferenceable(488) ptr @_ZN3AST4ItemaSEOS0_(ptr noundef nonnull align 8 dereferenceable(488) %1292, ptr noundef nonnull align 8 dereferenceable(488) %39)
          to label %1301 unwind label %1299

1297:                                             ; preds = %.loopexit1001
  %1298 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1299:                                             ; preds = %1295
  %1300 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1301:                                             ; preds = %1295, %1289
  %1302 = getelementptr inbounds i8, ptr %1291, i64 8
  %1303 = call noundef i64 @_ZNKSt6vectorIN3AST9AttributeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1302) #8
  %1304 = icmp eq i64 %1303, 0
  br i1 %1304, label %1305, label %1307

1305:                                             ; preds = %1301
  %1306 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST13AttributeListaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1302, ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  br label %1307

1307:                                             ; preds = %1305, %1301
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %39) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %39) #8
  br label %1308

1308:                                             ; preds = %1307, %544
  %.pre-phi3456 = phi i64 [ %558, %1307 ], [ %.pre3455, %544 ]
  %.pre-phi = phi i32 [ %557, %1307 ], [ %.pre, %544 ]
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %35) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %35) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #8
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  %1309 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %1310 = icmp ugt i64 %1309, %.pre-phi3456
  br i1 %1310, label %370, label %._crit_edge3293, !llvm.loop !91

1311:                                             ; preds = %807, %815, %848, %.split1697, %.split1692, %.split1687, %.split1677.split, %691, %597, %596, %582, %713, %.split2335.split, %703, %702, %692, %830, %.split1920.split, %.split1917.split, %844, %.split1894.split, %.split1891.split, %896, %885, %874, %850, %935, %965, %900, %1077, %1057, %966, %1112, %1080, %1153, %1276, %1130, %1113, %1299, %1297
  %.pn827.pn = phi { ptr, i32 } [ %1300, %1299 ], [ %1298, %1297 ], [ %1288, %.split1677.split ], [ %1279, %.split1687 ], [ %1278, %.split1692 ], [ %1277, %.split1697 ], [ %849, %848 ], [ %.pn794, %815 ], [ %.pn802.pn.pn.pn.pn.pn, %807 ], [ %583, %582 ], [ %598, %597 ], [ %.pn823, %596 ], [ %.pn820.pn, %691 ], [ %.pn811, %713 ], [ %710, %.split2335.split ], [ %693, %692 ], [ %704, %703 ], [ %.pn809, %702 ], [ %.pn791, %830 ], [ %816, %.split1917.split ], [ %827, %.split1920.split ], [ %.pn788, %844 ], [ %831, %.split1891.split ], [ %841, %.split1894.split ], [ %.pn785, %885 ], [ %.pn782.pn, %874 ], [ %851, %850 ], [ %.pn780, %896 ], [ %901, %900 ], [ %.pn774, %965 ], [ %.pn776, %935 ], [ %.pn767.pn.pn, %1057 ], [ %.pn765, %1077 ], [ %967, %966 ], [ %.pn762, %1112 ], [ %1081, %1080 ], [ %1131, %1130 ], [ %1114, %1113 ], [ %.pn755.pn.pn, %1276 ], [ %1154, %1153 ]
  call void @_ZN3AST4ItemD2Ev(ptr noundef nonnull align 8 dereferenceable(488) %39) #8
  call void @llvm.lifetime.end.p0(i64 488, ptr nonnull %39) #8
  br label %1312

1312:                                             ; preds = %1311, %556, %533
  %.pn830.pn = phi { ptr, i32 } [ %.pn830, %556 ], [ %.pn827.pn, %1311 ], [ %534, %533 ]
  call void @_ZN3AST10VisibilityD2Ev(ptr noundef nonnull align 8 dereferenceable(36) %35) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %35) #8
  call void @_ZN3AST13AttributeListD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #8
  br label %1313

1313:                                             ; preds = %.split1248, %530, %.split1380.split.split.split.split, %.split1389.split.split.split.split, %454, %456, %1312, %480
  %.pn833.pn.pn.pn = phi { ptr, i32 } [ %.pn830.pn, %1312 ], [ %481, %480 ], [ %455, %454 ], [ %457, %456 ], [ %.pn833.pn, %530 ], [ %498, %.split1248 ], [ %497, %.split1380.split.split.split.split ], [ %496, %.split1389.split.split.split.split ]
  call void @_ZN3AST12AbsolutePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %1314

1314:                                             ; preds = %1313, %452
  %.pn833.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn833.pn.pn.pn, %1313 ], [ %453, %452 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %1315

1315:                                             ; preds = %.loopexit1004, %.loopexit.split-lp1005, %1314, %340
  %.pn833.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %341, %340 ], [ %.pn833.pn.pn.pn.pn, %1314 ], [ %lpad.loopexit1006, %.loopexit1004 ], [ %lpad.loopexit.split-lp1007, %.loopexit.split-lp1005 ]
  call void @_ZNSt6vectorIPKN3AST5NamedINS0_4ItemEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #8
  br label %1316

1316:                                             ; preds = %1315, %315, %278, %277, %240, %217, %195
  %.pn845.pn = phi { ptr, i32 } [ %.pn845, %195 ], [ %.pn843851, %217 ], [ %241, %240 ], [ %.pn833.pn.pn.pn.pn.pn.pn, %1315 ], [ %279, %278 ], [ %.pn732.pn.pn.pn.pn.pn, %315 ], [ %.pn, %277 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  br label %1317

1317:                                             ; preds = %1316, %183
  %.pn845.pn.pn = phi { ptr, i32 } [ %.pn845.pn, %1316 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn845.pn.pn

1318:                                             ; preds = %1201, %1180, %845, %697, %591
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3AST6Module11MacroImport5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.AST::Module::MacroImport") align 8, ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3AST12AbsolutePathplE8RcString(ptr dead_on_unwind noalias writable sret(%"struct.AST::AbsolutePath") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5 align 2

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

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

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

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

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

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

declare void @_ZN3AST6Module8add_itemE4SpanNS_10VisibilityE8RcStringNS_4ItemENS_13AttributeListE(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #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 #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9make_vec1IN3AST7UseItem3EntEESt6vectorIT_SaIS4_EEOS4_(ptr dead_on_unwind noalias writable sret(%"class.std::vector.146") align 8, ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN3AST4Item10tag_to_strENS0_3TagE(i32 noundef) local_unnamed_addr #3 align 2

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

declare void @_ZN3AST10Visibility11make_globalEv(ptr dead_on_unwind writable sret(%"class.AST::Visibility") align 8) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_10StructItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ10Expand_ModRK11ExpandStateN3AST12AbsolutePathERNS2_6ModuleEjEN1H10filter_cfgERSt6vectorINS2_9TupleItemESaIS8_EE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

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

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

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

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

declare noundef zeroext i1 @_Z15check_cfg_attrsRKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z19Parse_ModRoot_ItemsR11TokenStreamRN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #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 #5 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #3 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 #3 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 #4

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

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

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

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

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

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

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

declare void @_ZN3AST6Module9add_macroEb8RcString13MacroRulesPtr(ptr noundef nonnull align 8 dereferenceable(480), i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_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(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_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 #5 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 #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNKSt3mapI8RcStringN3AST11ExternCrateESt4lessIS0_ESaISt4pairIKS0_S2_EEE5countERS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

declare void @_ZN3AST5Crate17load_extern_crateE4SpanRK8RcStringRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(1112), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIR8RcStringRA1_KcESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.405") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7TypeRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIP7SpannedI14Type_TraitPathESt6vectorIS3_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(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(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 @_ZN9__gnu_cxx17__normal_iteratorIP7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(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(24) ptr @_ZN3AST5Trait5itemsEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

declare void @_Z16Parse_Trait_ItemR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::Named.382") align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { noreturn 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 #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { 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, !14, i64 24}
!12 = !{!"_ZTS11ExpandState", !10, i64 0, !13, i64 8, !14, i64 24, !15, i64 28, !15, i64 29}
!13 = !{!"_ZTS5LListIPKN3AST6ModuleEE", !10, i64 0, !10, i64 8}
!14 = !{!"_ZTS10ExpandMode", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!12, !10, i64 8}
!17 = !{!13, !10, i64 8}
!18 = !{!19, !15, i64 0}
!19 = !{!"_ZTSN3AST6Module11MacroImportE", !15, i64 0, !20, i64 8, !21, i64 16, !26, i64 48}
!20 = !{!"_ZTS8RcString", !10, i64 0}
!21 = !{!"_ZTSN3AST12AbsolutePathE", !20, i64 0, !22, i64 8}
!22 = !{!"_ZTSSt6vectorI8RcStringSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseI8RcStringSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI8RcStringSaIS0_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!26 = !{!"_ZTS8MacroRef", !27, i64 0, !7, i64 8}
!27 = !{!"_ZTSN8MacroRef3TagE", !7, i64 0}
!28 = !{!12, !10, i64 0}
!29 = !{!30, !15, i64 176}
!30 = !{!"_ZTSN3AST6ModuleE", !21, i64 0, !31, i64 32, !35, i64 56, !39, i64 80, !43, i64 104, !15, i64 176, !7, i64 177, !47, i64 184, !47, i64 240, !47, i64 296, !47, i64 352, !52, i64 408, !56, i64 432, !60, i64 456}
!31 = !{!"_ZTSSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!35 = !{!"_ZTSSt6vectorISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3AST6ModuleEESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!39 = !{!"_ZTSSt6vectorIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3AST5NamedI13MacroRulesPtrEESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!43 = !{!"_ZTSN3AST6Module8FileInfoE", !15, i64 0, !15, i64 1, !44, i64 8, !44, i64 40}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !45, i64 0, !46, i64 8, !7, i64 16}
!45 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!46 = !{!"long", !7, i64 0}
!47 = !{!"_ZTSSt13unordered_mapI8RcStringN3AST6Module8IndexEntESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S3_EEE", !48, i64 0}
!48 = !{!"_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, !46, i64 8, !49, i64 16, !46, i64 24, !50, i64 32, !10, i64 48}
!49 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!50 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !51, i64 0, !46, i64 8}
!51 = !{!"float", !7, i64 0}
!52 = !{!"_ZTSSt6vectorIN3AST12AbsolutePathESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3AST12AbsolutePathESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!56 = !{!"_ZTSSt6vectorIN3AST6Module11MacroImportESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module11MacroImportESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!60 = !{!"_ZTSSt6vectorIN3AST6Module6ImportESaIS2_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3AST6Module6ImportESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.mustprogress"}
!68 = distinct !{!68, !67}
!69 = distinct !{!69, !67}
!70 = distinct !{!70, !67}
!71 = distinct !{!71, !67}
!72 = distinct !{!72, !67}
!73 = distinct !{!73, !67}
!74 = !{!12, !15, i64 28}
!75 = !{!12, !15, i64 29}
!76 = distinct !{!76, !67}
!77 = distinct !{!77, !67}
!78 = distinct !{!78, !67}
!79 = distinct !{!79, !67}
!80 = distinct !{!80, !67}
!81 = distinct !{!81, !67}
!82 = distinct !{!82, !67}
!83 = distinct !{!83, !67}
!84 = distinct !{!84, !67}
!85 = distinct !{!85, !67}
!86 = distinct !{!86, !67}
!87 = distinct !{!87, !67}
!88 = distinct !{!88, !67}
!89 = distinct !{!89, !67}
!90 = distinct !{!90, !67}
!91 = distinct !{!91, !67}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass