; LLVM IR from thepowersgang/mrustc :: src/ast/dump.ll (ZN11RustPrinter13handle_moduleERKN3AST6ModuleE)

; 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.__gnu_cxx::__normal_iterator.50" = type { ptr }
%struct.RepeatLitStr = type { ptr, i32 }
%"class.__gnu_cxx::__normal_iterator.191" = 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.67", %"class.std::unique_ptr.75", %"class.std::vector.62" }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"class.std::unique_ptr.75" = type { %"struct.std::__uniq_ptr_data.76" }
%"struct.std::__uniq_ptr_data.76" = type { %"class.std::__uniq_ptr_impl.77" }
%"class.std::__uniq_ptr_impl.77" = type { %"class.std::tuple.78" }
%"class.std::tuple.78" = type { %"struct.std::_Tuple_impl.79" }
%"struct.std::_Tuple_impl.79" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = 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.83", %"struct.AST::PathBinding.84" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.0" }
%class.RcString = type { ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.83" = 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.84" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.__gnu_cxx::__normal_iterator.197" = type { ptr }
%"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.AST::Module" = type { %"struct.AST::AbsolutePath", %"class.std::vector.15", %"class.std::vector.20", %"class.std::vector.25", %"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.35", %"class.std::vector.40", %"class.std::vector.45" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = 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.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Named<MacroRulesPtr>, std::allocator<AST::Named<MacroRulesPtr>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Module::FileInfo" = type { i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = 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.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = 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.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::Module::Import, std::allocator<AST::Module::Import>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Named" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", %class.RcString, %"class.AST::Item" }
%struct.Span = type { ptr }
%"class.AST::AttributeList" = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.AST::Visibility" = type <{ %"class.std::shared_ptr", %"class.std::shared_ptr.59", i32, [4 x i8] }>
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.59" = type { %"class.std::__shared_ptr.60" }
%"class.std::__shared_ptr.60" = type { ptr, %"class.std::__shared_count" }
%"class.AST::Item" = type { i32, %"union.AST::Item::DataUnion" }
%"union.AST::Item::DataUnion" = type { %"class.AST::Module" }
%"struct.AST::UseItem" = type { %struct.Span, %"class.std::vector.85" }
%"class.std::vector.85" = type { %"struct.std::_Vector_base.86" }
%"struct.std::_Vector_base.86" = 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 }
%class.RustPrinter = type <{ %"class.AST::NodeVisitor", ptr, i32, i8, [3 x i8] }>
%"class.AST::NodeVisitor" = type { ptr }
%"struct.AST::UseItem::Ent" = type { %struct.Span, %"class.AST::Path", %class.RcString }
%"struct.AST::Item::Data_Crate" = type { %class.RcString }
%struct.Spanned = type { %struct.Span, %"class.AST::Path" }
%"struct.AST::Impl::ImplItem" = type { %struct.Span, %"class.AST::AttributeList", %"class.AST::Visibility", i8, %class.RcString, %"class.std::unique_ptr.198" }
%"class.std::unique_ptr.198" = type { %"struct.std::__uniq_ptr_data.199" }
%"struct.std::__uniq_ptr_data.199" = type { %"class.std::__uniq_ptr_impl.200" }
%"class.std::__uniq_ptr_impl.200" = type { %"class.std::tuple.201" }
%"class.std::tuple.201" = type { %"struct.std::_Tuple_impl.202" }
%"struct.std::_Tuple_impl.202" = type { %"struct.std::_Head_base.205" }
%"struct.std::_Head_base.205" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [71 x i8], align 1
@__PRETTY_FUNCTION__._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE = external hidden unnamed_addr constant [53 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZTISt13runtime_error = external constant ptr

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21)) #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11RustPrinter13handle_moduleERKN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(480) %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca ptr, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %struct.RepeatLitStr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.191", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.191", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.RepeatLitStr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %struct.RepeatLitStr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %struct.RepeatLitStr, align 8
  %39 = alloca %struct.RepeatLitStr, align 8
  %40 = alloca %struct.RepeatLitStr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %struct.RepeatLitStr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %struct.RepeatLitStr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca %struct.RepeatLitStr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %struct.RepeatLitStr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca %struct.RepeatLitStr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %78 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %84 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca %struct.RepeatLitStr, align 8
  %89 = alloca %"class.AST::Path", align 8
  %90 = alloca ptr, align 8
  %91 = alloca i32, align 4
  %92 = alloca %struct.RepeatLitStr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.197", align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator.197", align 8
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca %struct.RepeatLitStr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca %struct.RepeatLitStr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %106 = alloca ptr, align 8
  %107 = alloca i1, align 1
  %108 = alloca %struct.RepeatLitStr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %109 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #8
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %"class.AST::Module", ptr %110, i32 0, i32 1
  store ptr %111, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #8
  %114 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %7, i32 0, i32 0
  store ptr %113, ptr %114, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #8
  %117 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %8, i32 0, i32 0
  store ptr %116, ptr %117, align 8
  br label %118

118:                                              ; preds = %241, %2
  %119 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br i1 %119, label %121, label %120

120:                                              ; preds = %118
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  br label %243

121:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  store ptr %122, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #8
  store ptr %124, ptr %11, align 8, !tbaa !5
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.AST::Named", ptr %125, i32 0, i32 4
  %127 = call noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %126)
  br i1 %127, label %129, label %128

128:                                              ; preds = %121
  store i32 3, ptr %9, align 4
  br label %235

129:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %130 = load ptr, ptr %11, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.AST::Named", ptr %130, i32 0, i32 4
  %132 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %131)
  store ptr %132, ptr %12, align 8, !tbaa !5
  %133 = load ptr, ptr %12, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.AST::UseItem", ptr %133, i32 0, i32 1
  %135 = call noundef zeroext i1 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %134) #8
  br i1 %135, label %136, label %137

136:                                              ; preds = %129
  store i32 3, ptr %9, align 4
  br label %234

137:                                              ; preds = %129
  %138 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %139 = load ptr, ptr %138, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #8
  %140 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %141 = getelementptr inbounds { ptr, i32 }, ptr %13, i32 0, i32 0
  %142 = extractvalue { ptr, i32 } %140, 0
  store ptr %142, ptr %141, align 8
  %143 = getelementptr inbounds { ptr, i32 }, ptr %13, i32 0, i32 1
  %144 = extractvalue { ptr, i32 } %140, 1
  store i32 %144, ptr %143, align 8
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(16) %13)
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.AST::Named", ptr %146, i32 0, i32 2
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(36) %147)
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef @.str.2)
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #8
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.AST::UseItem", ptr %150, i32 0, i32 1
  %152 = call noundef i64 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %151) #8
  %153 = icmp ugt i64 %152, 1
  br i1 %153, label %154, label %158

154:                                              ; preds = %137
  %155 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %156 = load ptr, ptr %155, align 8, !tbaa !11
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef @.str.3)
  br label %158

158:                                              ; preds = %154, %137
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %159 = load ptr, ptr %12, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.AST::UseItem", ptr %159, i32 0, i32 1
  store ptr %160, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %161 = load ptr, ptr %14, align 8, !tbaa !5
  %162 = call ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #8
  %163 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.191", ptr %15, i32 0, i32 0
  store ptr %162, ptr %163, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %164 = load ptr, ptr %14, align 8, !tbaa !5
  %165 = call ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  %166 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.191", ptr %16, i32 0, i32 0
  store ptr %165, ptr %166, align 8
  br label %167

167:                                              ; preds = %219, %158
  %168 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br i1 %168, label %170, label %169

169:                                              ; preds = %167
  store i32 4, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %221

170:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %171 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  store ptr %171, ptr %17, align 8, !tbaa !5
  %172 = load ptr, ptr %17, align 8, !tbaa !5
  %173 = load ptr, ptr %12, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.AST::UseItem", ptr %173, i32 0, i32 1
  %175 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %174) #8
  %176 = icmp ne ptr %172, %175
  br i1 %176, label %177, label %181

177:                                              ; preds = %170
  %178 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %179 = load ptr, ptr %178, align 8, !tbaa !11
  %180 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef @.str.4)
  br label %181

181:                                              ; preds = %177, %170
  %182 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %183 = load ptr, ptr %182, align 8, !tbaa !11
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %184, i32 0, i32 1
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull align 8 dereferenceable(240) %185)
  %187 = load ptr, ptr %17, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %187, i32 0, i32 2
  %189 = call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @.str.5)
  br i1 %189, label %190, label %194

190:                                              ; preds = %181
  %191 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %192 = load ptr, ptr %191, align 8, !tbaa !11
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef @.str.6)
  br label %218

194:                                              ; preds = %181
  %195 = load ptr, ptr %17, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %195, i32 0, i32 1
  %197 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %196)
  %198 = call noundef i64 @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %197) #8
  %199 = icmp ugt i64 %198, 0
  br i1 %199, label %200, label %216

200:                                              ; preds = %194
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %201, i32 0, i32 2
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %203, i32 0, i32 1
  %205 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %204)
  %206 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %205) #8
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8PathNode4nameEv(ptr noundef nonnull align 8 dereferenceable(40) %206)
  %208 = call noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %207)
  br i1 %208, label %209, label %216

209:                                              ; preds = %200
  %210 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %211 = load ptr, ptr %210, align 8, !tbaa !11
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef @.str.7)
  %213 = load ptr, ptr %17, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.AST::UseItem::Ent", ptr %213, i32 0, i32 2
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(8) %214)
  br label %217

216:                                              ; preds = %200, %194
  br label %217

217:                                              ; preds = %216, %209
  br label %218

218:                                              ; preds = %217, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %219

219:                                              ; preds = %218
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %167

221:                                              ; preds = %169
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.AST::UseItem", ptr %222, i32 0, i32 1
  %224 = call noundef i64 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #8
  %225 = icmp ugt i64 %224, 1
  br i1 %225, label %226, label %230

226:                                              ; preds = %221
  %227 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %228 = load ptr, ptr %227, align 8, !tbaa !11
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef @.str.8)
  br label %230

230:                                              ; preds = %226, %221
  %231 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %232 = load ptr, ptr %231, align 8, !tbaa !11
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef @.str.9)
  store i32 0, ptr %9, align 4
  br label %234

234:                                              ; preds = %230, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %235

235:                                              ; preds = %234, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  %236 = load i32, ptr %9, align 4
  switch i32 %236, label %238 [
    i32 0, label %237
  ]

237:                                              ; preds = %235
  store i32 0, ptr %9, align 4
  br label %238

238:                                              ; preds = %237, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %239 = load i32, ptr %9, align 4
  switch i32 %239, label %1020 [
    i32 0, label %240
    i32 3, label %241
  ]

240:                                              ; preds = %238
  br label %241

241:                                              ; preds = %240, %238
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br label %118

243:                                              ; preds = %120
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds %"class.AST::Module", ptr %244, i32 0, i32 1
  store ptr %245, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %246 = load ptr, ptr %18, align 8, !tbaa !5
  %247 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %246) #8
  %248 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %19, i32 0, i32 0
  store ptr %247, ptr %248, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %249 = load ptr, ptr %18, align 8, !tbaa !5
  %250 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #8
  %251 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %20, i32 0, i32 0
  store ptr %250, ptr %251, align 8
  br label %252

252:                                              ; preds = %292, %243
  %253 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %253, label %255, label %254

254:                                              ; preds = %252
  store i32 6, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %294

255:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  store ptr %256, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %257) #8
  store ptr %258, ptr %22, align 8, !tbaa !5
  %259 = load ptr, ptr %22, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.AST::Named", ptr %259, i32 0, i32 4
  %261 = call noundef zeroext i1 @_ZNK3AST4Item8is_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %260)
  br i1 %261, label %263, label %262

262:                                              ; preds = %255
  store i32 7, ptr %9, align 4
  br label %286

263:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %264 = load ptr, ptr %22, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.AST::Named", ptr %264, i32 0, i32 4
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Item8as_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %265)
  store ptr %266, ptr %23, align 8, !tbaa !5
  %267 = load ptr, ptr %22, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.AST::Named", ptr %267, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %268)
  %269 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %270 = load ptr, ptr %269, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #8
  %271 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %272 = getelementptr inbounds { ptr, i32 }, ptr %24, i32 0, i32 0
  %273 = extractvalue { ptr, i32 } %271, 0
  store ptr %273, ptr %272, align 8
  %274 = getelementptr inbounds { ptr, i32 }, ptr %24, i32 0, i32 1
  %275 = extractvalue { ptr, i32 } %271, 1
  store i32 %275, ptr %274, align 8
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(16) %24)
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef @.str.10)
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.AST::Item::Data_Crate", ptr %278, i32 0, i32 0
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(8) %279)
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef @.str.11)
  %282 = load ptr, ptr %22, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.AST::Named", ptr %282, i32 0, i32 3
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull align 8 dereferenceable(8) %283)
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef @.str.9)
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  store i32 0, ptr %9, align 4
  br label %286

286:                                              ; preds = %263, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  %287 = load i32, ptr %9, align 4
  switch i32 %287, label %289 [
    i32 0, label %288
  ]

288:                                              ; preds = %286
  store i32 0, ptr %9, align 4
  br label %289

289:                                              ; preds = %288, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  %290 = load i32, ptr %9, align 4
  switch i32 %290, label %1020 [
    i32 0, label %291
    i32 7, label %292
  ]

291:                                              ; preds = %289
  br label %292

292:                                              ; preds = %291, %289
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %252

294:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %"class.AST::Module", ptr %295, i32 0, i32 1
  store ptr %296, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %297) #8
  %299 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %26, i32 0, i32 0
  store ptr %298, ptr %299, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %300) #8
  %302 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %27, i32 0, i32 0
  store ptr %301, ptr %302, align 8
  br label %303

303:                                              ; preds = %339, %294
  %304 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %304, label %306, label %305

305:                                              ; preds = %303
  store i32 8, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %341

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  store ptr %307, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %308 = load ptr, ptr %28, align 8, !tbaa !5
  %309 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %308) #8
  store ptr %309, ptr %29, align 8, !tbaa !5
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.AST::Named", ptr %310, i32 0, i32 4
  %312 = call noundef zeroext i1 @_ZNK3AST4Item14is_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %311)
  br i1 %312, label %314, label %313

313:                                              ; preds = %306
  store i32 9, ptr %9, align 4
  br label %333

314:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %315 = load ptr, ptr %29, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.AST::Named", ptr %315, i32 0, i32 4
  %317 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3AST4Item14as_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %316)
  store ptr %317, ptr %30, align 8, !tbaa !5
  %318 = load ptr, ptr %29, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.AST::Named", ptr %318, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %319)
  %320 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %321 = load ptr, ptr %320, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #8
  %322 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %323 = getelementptr inbounds { ptr, i32 }, ptr %31, i32 0, i32 0
  %324 = extractvalue { ptr, i32 } %322, 0
  store ptr %324, ptr %323, align 8
  %325 = getelementptr inbounds { ptr, i32 }, ptr %31, i32 0, i32 1
  %326 = extractvalue { ptr, i32 } %322, 1
  store i32 %326, ptr %325, align 8
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(16) %31)
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef @.str.12)
  %329 = load ptr, ptr %30, align 8, !tbaa !5
  %330 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST11ExternBlock3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(80) %329)
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef nonnull align 8 dereferenceable(32) %330)
  %332 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef @.str.13)
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  store i32 0, ptr %9, align 4
  br label %333

333:                                              ; preds = %314, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  %334 = load i32, ptr %9, align 4
  switch i32 %334, label %336 [
    i32 0, label %335
  ]

335:                                              ; preds = %333
  store i32 0, ptr %9, align 4
  br label %336

336:                                              ; preds = %335, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %337 = load i32, ptr %9, align 4
  switch i32 %337, label %1020 [
    i32 0, label %338
    i32 9, label %339
  ]

338:                                              ; preds = %336
  br label %339

339:                                              ; preds = %338, %336
  %340 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %303

341:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"class.AST::Module", ptr %342, i32 0, i32 1
  store ptr %343, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %344 = load ptr, ptr %32, align 8, !tbaa !5
  %345 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #8
  %346 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %33, i32 0, i32 0
  store ptr %345, ptr %346, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %347 = load ptr, ptr %32, align 8, !tbaa !5
  %348 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #8
  %349 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %34, i32 0, i32 0
  store ptr %348, ptr %349, align 8
  br label %350

350:                                              ; preds = %412, %341
  %351 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br i1 %351, label %353, label %352

352:                                              ; preds = %350
  store i32 10, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %414

353:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  store ptr %354, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %355 = load ptr, ptr %35, align 8, !tbaa !5
  %356 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %355) #8
  store ptr %356, ptr %36, align 8, !tbaa !5
  %357 = load ptr, ptr %36, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.AST::Named", ptr %357, i32 0, i32 4
  %359 = call noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %358)
  br i1 %359, label %361, label %360

360:                                              ; preds = %353
  store i32 11, ptr %9, align 4
  br label %406

361:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %362 = load ptr, ptr %36, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.AST::Named", ptr %362, i32 0, i32 4
  %364 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZNK3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %363)
  store ptr %364, ptr %37, align 8, !tbaa !5
  %365 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %366 = load ptr, ptr %365, align 8, !tbaa !11
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef @.str.14)
  %368 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %369 = load ptr, ptr %368, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #8
  %370 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %371 = getelementptr inbounds { ptr, i32 }, ptr %38, i32 0, i32 0
  %372 = extractvalue { ptr, i32 } %370, 0
  store ptr %372, ptr %371, align 8
  %373 = getelementptr inbounds { ptr, i32 }, ptr %38, i32 0, i32 1
  %374 = extractvalue { ptr, i32 } %370, 1
  store i32 %374, ptr %373, align 8
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %369, ptr noundef nonnull align 8 dereferenceable(16) %38)
  %376 = load ptr, ptr %36, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.AST::Named", ptr %376, i32 0, i32 2
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull align 8 dereferenceable(36) %377)
  %379 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef @.str.15)
  %380 = load ptr, ptr %36, align 8, !tbaa !5
  %381 = getelementptr inbounds %"struct.AST::Named", ptr %380, i32 0, i32 3
  %382 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(8) %381)
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef @.str.14)
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #8
  %384 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %385 = load ptr, ptr %384, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #8
  %386 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %387 = getelementptr inbounds { ptr, i32 }, ptr %39, i32 0, i32 0
  %388 = extractvalue { ptr, i32 } %386, 0
  store ptr %388, ptr %387, align 8
  %389 = getelementptr inbounds { ptr, i32 }, ptr %39, i32 0, i32 1
  %390 = extractvalue { ptr, i32 } %386, 1
  store i32 %390, ptr %389, align 8
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(16) %39)
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef @.str.16)
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  call void @_ZN11RustPrinter10inc_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %393 = load ptr, ptr %37, align 8, !tbaa !5
  call void @_ZN11RustPrinter13handle_moduleERKN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(480) %393)
  call void @_ZN11RustPrinter10dec_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %394 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %395 = load ptr, ptr %394, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #8
  %396 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %397 = getelementptr inbounds { ptr, i32 }, ptr %40, i32 0, i32 0
  %398 = extractvalue { ptr, i32 } %396, 0
  store ptr %398, ptr %397, align 8
  %399 = getelementptr inbounds { ptr, i32 }, ptr %40, i32 0, i32 1
  %400 = extractvalue { ptr, i32 } %396, 1
  store i32 %400, ptr %399, align 8
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %395, ptr noundef nonnull align 8 dereferenceable(16) %40)
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef @.str.17)
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #8
  %403 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %404 = load ptr, ptr %403, align 8, !tbaa !11
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %404, ptr noundef @.str.14)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  store i32 0, ptr %9, align 4
  br label %406

406:                                              ; preds = %361, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  %407 = load i32, ptr %9, align 4
  switch i32 %407, label %409 [
    i32 0, label %408
  ]

408:                                              ; preds = %406
  store i32 0, ptr %9, align 4
  br label %409

409:                                              ; preds = %408, %406
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %410 = load i32, ptr %9, align 4
  switch i32 %410, label %1020 [
    i32 0, label %411
    i32 11, label %412
  ]

411:                                              ; preds = %409
  br label %412

412:                                              ; preds = %411, %409
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %350

414:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %415 = load ptr, ptr %4, align 8, !tbaa !5
  %416 = getelementptr inbounds %"class.AST::Module", ptr %415, i32 0, i32 1
  store ptr %416, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %417 = load ptr, ptr %41, align 8, !tbaa !5
  %418 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %417) #8
  %419 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %42, i32 0, i32 0
  store ptr %418, ptr %419, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %420 = load ptr, ptr %41, align 8, !tbaa !5
  %421 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #8
  %422 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %43, i32 0, i32 0
  store ptr %421, ptr %422, align 8
  br label %423

423:                                              ; preds = %481, %414
  %424 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br i1 %424, label %426, label %425

425:                                              ; preds = %423
  store i32 12, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %483

426:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  store ptr %427, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %428 = load ptr, ptr %44, align 8, !tbaa !5
  %429 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %428) #8
  store ptr %429, ptr %45, align 8, !tbaa !5
  %430 = load ptr, ptr %45, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.AST::Named", ptr %430, i32 0, i32 4
  %432 = call noundef zeroext i1 @_ZNK3AST4Item7is_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %431)
  br i1 %432, label %434, label %433

433:                                              ; preds = %426
  store i32 13, ptr %9, align 4
  br label %475

434:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %435 = load ptr, ptr %45, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.AST::Named", ptr %435, i32 0, i32 4
  %437 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %436)
  store ptr %437, ptr %46, align 8, !tbaa !5
  %438 = load i8, ptr %5, align 1, !tbaa !9, !range !15, !noundef !16
  %439 = trunc i8 %438 to i1
  br i1 %439, label %440, label %444

440:                                              ; preds = %434
  %441 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %442 = load ptr, ptr %441, align 8, !tbaa !11
  %443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef @.str.14)
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %444

444:                                              ; preds = %440, %434
  %445 = load ptr, ptr %45, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.AST::Named", ptr %445, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %446)
  %447 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %448 = load ptr, ptr %447, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #8
  %449 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %450 = getelementptr inbounds { ptr, i32 }, ptr %47, i32 0, i32 0
  %451 = extractvalue { ptr, i32 } %449, 0
  store ptr %451, ptr %450, align 8
  %452 = getelementptr inbounds { ptr, i32 }, ptr %47, i32 0, i32 1
  %453 = extractvalue { ptr, i32 } %449, 1
  store i32 %453, ptr %452, align 8
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %448, ptr noundef nonnull align 8 dereferenceable(16) %47)
  %455 = load ptr, ptr %45, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.AST::Named", ptr %455, i32 0, i32 2
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(36) %456)
  %458 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef @.str.18)
  %459 = load ptr, ptr %45, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.AST::Named", ptr %459, i32 0, i32 3
  %461 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %460)
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #8
  %462 = load ptr, ptr %46, align 8, !tbaa !5
  %463 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %462)
  call void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(48) %463)
  %464 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8, !tbaa !11
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef @.str.19)
  %467 = load ptr, ptr %46, align 8, !tbaa !5
  %468 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %467)
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(120) %468)
  %470 = load ptr, ptr %46, align 8, !tbaa !5
  %471 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %470)
  call void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(48) %471)
  %472 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %473 = load ptr, ptr %472, align 8, !tbaa !11
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef @.str.9)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  store i32 0, ptr %9, align 4
  br label %475

475:                                              ; preds = %444, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  %476 = load i32, ptr %9, align 4
  switch i32 %476, label %478 [
    i32 0, label %477
  ]

477:                                              ; preds = %475
  store i32 0, ptr %9, align 4
  br label %478

478:                                              ; preds = %477, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  %479 = load i32, ptr %9, align 4
  switch i32 %479, label %1020 [
    i32 0, label %480
    i32 13, label %481
  ]

480:                                              ; preds = %478
  br label %481

481:                                              ; preds = %480, %478
  %482 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %423

483:                                              ; preds = %425
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %"class.AST::Module", ptr %484, i32 0, i32 1
  store ptr %485, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %486 = load ptr, ptr %48, align 8, !tbaa !5
  %487 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %486) #8
  %488 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %49, i32 0, i32 0
  store ptr %487, ptr %488, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %489 = load ptr, ptr %48, align 8, !tbaa !5
  %490 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %489) #8
  %491 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %50, i32 0, i32 0
  store ptr %490, ptr %491, align 8
  br label %492

492:                                              ; preds = %534, %483
  %493 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  br i1 %493, label %495, label %494

494:                                              ; preds = %492
  store i32 14, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %536

495:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %496 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  store ptr %496, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %497 = load ptr, ptr %51, align 8, !tbaa !5
  %498 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %497) #8
  store ptr %498, ptr %52, align 8, !tbaa !5
  %499 = load ptr, ptr %52, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.AST::Named", ptr %499, i32 0, i32 4
  %501 = call noundef zeroext i1 @_ZNK3AST4Item9is_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %500)
  br i1 %501, label %503, label %502

502:                                              ; preds = %495
  store i32 15, ptr %9, align 4
  br label %528

503:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %504 = load ptr, ptr %52, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.AST::Named", ptr %504, i32 0, i32 4
  %506 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %505)
  store ptr %506, ptr %53, align 8, !tbaa !5
  %507 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %508 = load ptr, ptr %507, align 8, !tbaa !11
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef @.str.14)
  %510 = load ptr, ptr %52, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.AST::Named", ptr %510, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %511)
  %512 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %513 = load ptr, ptr %512, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #8
  %514 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %515 = getelementptr inbounds { ptr, i32 }, ptr %54, i32 0, i32 0
  %516 = extractvalue { ptr, i32 } %514, 0
  store ptr %516, ptr %515, align 8
  %517 = getelementptr inbounds { ptr, i32 }, ptr %54, i32 0, i32 1
  %518 = extractvalue { ptr, i32 } %514, 1
  store i32 %518, ptr %517, align 8
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %513, ptr noundef nonnull align 8 dereferenceable(16) %54)
  %520 = load ptr, ptr %52, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.AST::Named", ptr %520, i32 0, i32 2
  %522 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 8 dereferenceable(36) %521)
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef @.str.20)
  %524 = load ptr, ptr %52, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.AST::Named", ptr %524, i32 0, i32 3
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 8 dereferenceable(8) %525)
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #8
  %527 = load ptr, ptr %53, align 8, !tbaa !5
  call void @_ZN11RustPrinter13handle_structERKN3AST6StructE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(152) %527)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  store i32 0, ptr %9, align 4
  br label %528

528:                                              ; preds = %503, %502
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  %529 = load i32, ptr %9, align 4
  switch i32 %529, label %531 [
    i32 0, label %530
  ]

530:                                              ; preds = %528
  store i32 0, ptr %9, align 4
  br label %531

531:                                              ; preds = %530, %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  %532 = load i32, ptr %9, align 4
  switch i32 %532, label %1020 [
    i32 0, label %533
    i32 15, label %534
  ]

533:                                              ; preds = %531
  br label %534

534:                                              ; preds = %533, %531
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %492

536:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds %"class.AST::Module", ptr %537, i32 0, i32 1
  store ptr %538, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %539 = load ptr, ptr %55, align 8, !tbaa !5
  %540 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %539) #8
  %541 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %56, i32 0, i32 0
  store ptr %540, ptr %541, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %542 = load ptr, ptr %55, align 8, !tbaa !5
  %543 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %542) #8
  %544 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %57, i32 0, i32 0
  store ptr %543, ptr %544, align 8
  br label %545

545:                                              ; preds = %587, %536
  %546 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br i1 %546, label %548, label %547

547:                                              ; preds = %545
  store i32 16, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %589

548:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %549 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  store ptr %549, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %550 = load ptr, ptr %58, align 8, !tbaa !5
  %551 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %550) #8
  store ptr %551, ptr %59, align 8, !tbaa !5
  %552 = load ptr, ptr %59, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.AST::Named", ptr %552, i32 0, i32 4
  %554 = call noundef zeroext i1 @_ZNK3AST4Item7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %553)
  br i1 %554, label %556, label %555

555:                                              ; preds = %548
  store i32 17, ptr %9, align 4
  br label %581

556:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %557 = load ptr, ptr %59, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.AST::Named", ptr %557, i32 0, i32 4
  %559 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %558)
  store ptr %559, ptr %60, align 8, !tbaa !5
  %560 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %561 = load ptr, ptr %560, align 8, !tbaa !11
  %562 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef @.str.14)
  %563 = load ptr, ptr %59, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.AST::Named", ptr %563, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %564)
  %565 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %566 = load ptr, ptr %565, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #8
  %567 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %568 = getelementptr inbounds { ptr, i32 }, ptr %61, i32 0, i32 0
  %569 = extractvalue { ptr, i32 } %567, 0
  store ptr %569, ptr %568, align 8
  %570 = getelementptr inbounds { ptr, i32 }, ptr %61, i32 0, i32 1
  %571 = extractvalue { ptr, i32 } %567, 1
  store i32 %571, ptr %570, align 8
  %572 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %566, ptr noundef nonnull align 8 dereferenceable(16) %61)
  %573 = load ptr, ptr %59, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.AST::Named", ptr %573, i32 0, i32 2
  %575 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef nonnull align 8 dereferenceable(36) %574)
  %576 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %575, ptr noundef @.str.21)
  %577 = load ptr, ptr %59, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.AST::Named", ptr %577, i32 0, i32 3
  %579 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(8) %578)
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #8
  %580 = load ptr, ptr %60, align 8, !tbaa !5
  call void @_ZN11RustPrinter11handle_enumERKN3AST4EnumE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(80) %580)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  store i32 0, ptr %9, align 4
  br label %581

581:                                              ; preds = %556, %555
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  %582 = load i32, ptr %9, align 4
  switch i32 %582, label %584 [
    i32 0, label %583
  ]

583:                                              ; preds = %581
  store i32 0, ptr %9, align 4
  br label %584

584:                                              ; preds = %583, %581
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  %585 = load i32, ptr %9, align 4
  switch i32 %585, label %1020 [
    i32 0, label %586
    i32 17, label %587
  ]

586:                                              ; preds = %584
  br label %587

587:                                              ; preds = %586, %584
  %588 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %545

589:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %590 = load ptr, ptr %4, align 8, !tbaa !5
  %591 = getelementptr inbounds %"class.AST::Module", ptr %590, i32 0, i32 1
  store ptr %591, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %592 = load ptr, ptr %62, align 8, !tbaa !5
  %593 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %592) #8
  %594 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %63, i32 0, i32 0
  store ptr %593, ptr %594, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %595 = load ptr, ptr %62, align 8, !tbaa !5
  %596 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %595) #8
  %597 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %64, i32 0, i32 0
  store ptr %596, ptr %597, align 8
  br label %598

598:                                              ; preds = %640, %589
  %599 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br i1 %599, label %601, label %600

600:                                              ; preds = %598
  store i32 18, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %642

601:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %602 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  store ptr %602, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %603 = load ptr, ptr %65, align 8, !tbaa !5
  %604 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %603) #8
  store ptr %604, ptr %66, align 8, !tbaa !5
  %605 = load ptr, ptr %66, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.AST::Named", ptr %605, i32 0, i32 4
  %607 = call noundef zeroext i1 @_ZNK3AST4Item8is_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %606)
  br i1 %607, label %609, label %608

608:                                              ; preds = %601
  store i32 19, ptr %9, align 4
  br label %634

609:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %610 = load ptr, ptr %66, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.AST::Named", ptr %610, i32 0, i32 4
  %612 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3AST4Item8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %611)
  store ptr %612, ptr %67, align 8, !tbaa !5
  %613 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %614 = load ptr, ptr %613, align 8, !tbaa !11
  %615 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef @.str.14)
  %616 = load ptr, ptr %66, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.AST::Named", ptr %616, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %617)
  %618 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %619 = load ptr, ptr %618, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #8
  %620 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %621 = getelementptr inbounds { ptr, i32 }, ptr %68, i32 0, i32 0
  %622 = extractvalue { ptr, i32 } %620, 0
  store ptr %622, ptr %621, align 8
  %623 = getelementptr inbounds { ptr, i32 }, ptr %68, i32 0, i32 1
  %624 = extractvalue { ptr, i32 } %620, 1
  store i32 %624, ptr %623, align 8
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef nonnull align 8 dereferenceable(16) %68)
  %626 = load ptr, ptr %66, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.AST::Named", ptr %626, i32 0, i32 2
  %628 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %625, ptr noundef nonnull align 8 dereferenceable(36) %627)
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef @.str.22)
  %630 = load ptr, ptr %66, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.AST::Named", ptr %630, i32 0, i32 3
  %632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef nonnull align 8 dereferenceable(8) %631)
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  %633 = load ptr, ptr %67, align 8, !tbaa !5
  call void @_ZN11RustPrinter12handle_traitERKN3AST5TraitE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(128) %633)
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  store i32 0, ptr %9, align 4
  br label %634

634:                                              ; preds = %609, %608
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  %635 = load i32, ptr %9, align 4
  switch i32 %635, label %637 [
    i32 0, label %636
  ]

636:                                              ; preds = %634
  store i32 0, ptr %9, align 4
  br label %637

637:                                              ; preds = %636, %634
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  %638 = load i32, ptr %9, align 4
  switch i32 %638, label %1020 [
    i32 0, label %639
    i32 19, label %640
  ]

639:                                              ; preds = %637
  br label %640

640:                                              ; preds = %639, %637
  %641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %598

642:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %"class.AST::Module", ptr %643, i32 0, i32 1
  store ptr %644, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %645 = load ptr, ptr %69, align 8, !tbaa !5
  %646 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %645) #8
  %647 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %70, i32 0, i32 0
  store ptr %646, ptr %647, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %648 = load ptr, ptr %69, align 8, !tbaa !5
  %649 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %648) #8
  %650 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %71, i32 0, i32 0
  store ptr %649, ptr %650, align 8
  br label %651

651:                                              ; preds = %723, %642
  %652 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  br i1 %652, label %654, label %653

653:                                              ; preds = %651
  store i32 20, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %725

654:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %655 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  store ptr %655, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %656 = load ptr, ptr %72, align 8, !tbaa !5
  %657 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %656) #8
  store ptr %657, ptr %73, align 8, !tbaa !5
  %658 = load ptr, ptr %73, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.AST::Named", ptr %658, i32 0, i32 4
  %660 = call noundef zeroext i1 @_ZNK3AST4Item9is_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %659)
  br i1 %660, label %662, label %661

661:                                              ; preds = %654
  store i32 21, ptr %9, align 4
  br label %717

662:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %663 = load ptr, ptr %73, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.AST::Named", ptr %663, i32 0, i32 4
  %665 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %664)
  store ptr %665, ptr %74, align 8, !tbaa !5
  %666 = load i8, ptr %5, align 1, !tbaa !9, !range !15, !noundef !16
  %667 = trunc i8 %666 to i1
  br i1 %667, label %668, label %672

668:                                              ; preds = %662
  %669 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %670 = load ptr, ptr %669, align 8, !tbaa !11
  %671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %670, ptr noundef @.str.14)
  store i8 0, ptr %5, align 1, !tbaa !9
  br label %672

672:                                              ; preds = %668, %662
  %673 = load ptr, ptr %73, align 8, !tbaa !5
  %674 = getelementptr inbounds %"struct.AST::Named", ptr %673, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %674)
  %675 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %676 = load ptr, ptr %675, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #8
  %677 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %678 = getelementptr inbounds { ptr, i32 }, ptr %75, i32 0, i32 0
  %679 = extractvalue { ptr, i32 } %677, 0
  store ptr %679, ptr %678, align 8
  %680 = getelementptr inbounds { ptr, i32 }, ptr %75, i32 0, i32 1
  %681 = extractvalue { ptr, i32 } %677, 1
  store i32 %681, ptr %680, align 8
  %682 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %676, ptr noundef nonnull align 8 dereferenceable(16) %75)
  %683 = load ptr, ptr %73, align 8, !tbaa !5
  %684 = getelementptr inbounds %"struct.AST::Named", ptr %683, i32 0, i32 2
  %685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef nonnull align 8 dereferenceable(36) %684)
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #8
  %686 = load ptr, ptr %74, align 8, !tbaa !5
  %687 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %686)
  %688 = load i32, ptr %687, align 4, !tbaa !17
  switch i32 %688, label %701 [
    i32 0, label %689
    i32 1, label %693
    i32 2, label %697
  ]

689:                                              ; preds = %672
  %690 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %691 = load ptr, ptr %690, align 8, !tbaa !11
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef @.str.23)
  br label %701

693:                                              ; preds = %672
  %694 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %695 = load ptr, ptr %694, align 8, !tbaa !11
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %695, ptr noundef @.str.24)
  br label %701

697:                                              ; preds = %672
  %698 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %699 = load ptr, ptr %698, align 8, !tbaa !11
  %700 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %699, ptr noundef @.str.25)
  br label %701

701:                                              ; preds = %697, %693, %689, %672
  %702 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %703 = load ptr, ptr %702, align 8, !tbaa !11
  %704 = load ptr, ptr %73, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.AST::Named", ptr %704, i32 0, i32 3
  %706 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %703, ptr noundef nonnull align 8 dereferenceable(8) %705)
  %707 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %706, ptr noundef @.str.26)
  %708 = load ptr, ptr %74, align 8, !tbaa !5
  %709 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %708)
  %710 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %707, ptr noundef nonnull align 8 dereferenceable(120) %709)
  %711 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef @.str.19)
  %712 = load ptr, ptr %74, align 8, !tbaa !5
  %713 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %712)
  call void @_ZNK3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16) %713, ptr noundef nonnull align 8 dereferenceable(8) %109)
  %714 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %715 = load ptr, ptr %714, align 8, !tbaa !11
  %716 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %715, ptr noundef @.str.9)
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  store i32 0, ptr %9, align 4
  br label %717

717:                                              ; preds = %701, %661
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  %718 = load i32, ptr %9, align 4
  switch i32 %718, label %720 [
    i32 0, label %719
  ]

719:                                              ; preds = %717
  store i32 0, ptr %9, align 4
  br label %720

720:                                              ; preds = %719, %717
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  %721 = load i32, ptr %9, align 4
  switch i32 %721, label %1020 [
    i32 0, label %722
    i32 21, label %723
  ]

722:                                              ; preds = %720
  br label %723

723:                                              ; preds = %722, %720
  %724 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %651

725:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"class.AST::Module", ptr %726, i32 0, i32 1
  store ptr %727, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %728 = load ptr, ptr %76, align 8, !tbaa !5
  %729 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %728) #8
  %730 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %77, i32 0, i32 0
  store ptr %729, ptr %730, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %731 = load ptr, ptr %76, align 8, !tbaa !5
  %732 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %731) #8
  %733 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %78, i32 0, i32 0
  store ptr %732, ptr %733, align 8
  br label %734

734:                                              ; preds = %765, %725
  %735 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  br i1 %735, label %737, label %736

736:                                              ; preds = %734
  store i32 23, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %767

737:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %738 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  store ptr %738, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %739 = load ptr, ptr %79, align 8, !tbaa !5
  %740 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %739) #8
  store ptr %740, ptr %80, align 8, !tbaa !5
  %741 = load ptr, ptr %80, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.AST::Named", ptr %741, i32 0, i32 4
  %743 = call noundef zeroext i1 @_ZNK3AST4Item11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %742)
  br i1 %743, label %745, label %744

744:                                              ; preds = %737
  store i32 24, ptr %9, align 4
  br label %759

745:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %746 = load ptr, ptr %80, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.AST::Named", ptr %746, i32 0, i32 4
  %748 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %747)
  store ptr %748, ptr %81, align 8, !tbaa !5
  %749 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %750 = load ptr, ptr %749, align 8, !tbaa !11
  %751 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %750, ptr noundef @.str.14)
  %752 = load ptr, ptr %80, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.AST::Named", ptr %752, i32 0, i32 1
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(24) %753)
  %754 = load ptr, ptr %80, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.AST::Named", ptr %754, i32 0, i32 2
  %756 = load ptr, ptr %80, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.AST::Named", ptr %756, i32 0, i32 3
  %758 = load ptr, ptr %81, align 8, !tbaa !5
  call void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(36) %755, ptr noundef nonnull align 8 dereferenceable(8) %757, ptr noundef nonnull align 8 dereferenceable(368) %758)
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  store i32 0, ptr %9, align 4
  br label %759

759:                                              ; preds = %745, %744
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  %760 = load i32, ptr %9, align 4
  switch i32 %760, label %762 [
    i32 0, label %761
  ]

761:                                              ; preds = %759
  store i32 0, ptr %9, align 4
  br label %762

762:                                              ; preds = %761, %759
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  %763 = load i32, ptr %9, align 4
  switch i32 %763, label %1020 [
    i32 0, label %764
    i32 24, label %765
  ]

764:                                              ; preds = %762
  br label %765

765:                                              ; preds = %764, %762
  %766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %734

767:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %768 = load ptr, ptr %4, align 8, !tbaa !5
  %769 = getelementptr inbounds %"class.AST::Module", ptr %768, i32 0, i32 1
  store ptr %769, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %770 = load ptr, ptr %82, align 8, !tbaa !5
  %771 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %770) #8
  %772 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %83, i32 0, i32 0
  store ptr %771, ptr %772, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %773 = load ptr, ptr %82, align 8, !tbaa !5
  %774 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %773) #8
  %775 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.50", ptr %84, i32 0, i32 0
  store ptr %774, ptr %775, align 8
  br label %776

776:                                              ; preds = %1011, %767
  %777 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br i1 %777, label %779, label %778

778:                                              ; preds = %776
  store i32 25, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %1014

779:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  store ptr %780, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %781 = load ptr, ptr %85, align 8, !tbaa !5
  %782 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %781) #8
  store ptr %782, ptr %86, align 8, !tbaa !5
  %783 = load ptr, ptr %86, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.AST::Named", ptr %783, i32 0, i32 4
  %785 = call noundef zeroext i1 @_ZNK3AST4Item7is_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %784)
  br i1 %785, label %787, label %786

786:                                              ; preds = %779
  store i32 26, ptr %9, align 4
  br label %1005

787:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %788 = load ptr, ptr %86, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.AST::Named", ptr %788, i32 0, i32 4
  %790 = call noundef nonnull align 8 dereferenceable(472) ptr @_ZNK3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %789)
  store ptr %790, ptr %87, align 8, !tbaa !5
  %791 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %792 = load ptr, ptr %791, align 8, !tbaa !11
  %793 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %792, ptr noundef @.str.14)
  %794 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %795 = load ptr, ptr %794, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #8
  %796 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %797 = getelementptr inbounds { ptr, i32 }, ptr %88, i32 0, i32 0
  %798 = extractvalue { ptr, i32 } %796, 0
  store ptr %798, ptr %797, align 8
  %799 = getelementptr inbounds { ptr, i32 }, ptr %88, i32 0, i32 1
  %800 = extractvalue { ptr, i32 } %796, 1
  store i32 %800, ptr %799, align 8
  %801 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %795, ptr noundef nonnull align 8 dereferenceable(16) %88)
  %802 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %801, ptr noundef @.str.27)
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  %803 = load ptr, ptr %87, align 8, !tbaa !5
  %804 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %803)
  %805 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %804)
  call void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(48) %805)
  %806 = load ptr, ptr %87, align 8, !tbaa !5
  %807 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %806)
  %808 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %807)
  %809 = getelementptr inbounds %struct.Spanned, ptr %808, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 240, ptr %89) #8
  call void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %89)
  %810 = invoke noundef zeroext i1 @_ZNK3AST4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %809, ptr noundef nonnull align 8 dereferenceable(240) %89)
          to label %811 unwind label %822

811:                                              ; preds = %787
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %89) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %89) #8
  br i1 %810, label %812, label %826

812:                                              ; preds = %811
  %813 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %814 = load ptr, ptr %813, align 8, !tbaa !11
  %815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %814, ptr noundef @.str.28)
  %816 = load ptr, ptr %87, align 8, !tbaa !5
  %817 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %816)
  %818 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %817)
  %819 = getelementptr inbounds %struct.Spanned, ptr %818, i32 0, i32 1
  %820 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %815, ptr noundef nonnull align 8 dereferenceable(240) %819)
  %821 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %820, ptr noundef @.str.29)
  br label %826

822:                                              ; preds = %787
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %90, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %91, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %89) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr %89) #8
  br label %1013

826:                                              ; preds = %812, %811
  %827 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %828 = load ptr, ptr %827, align 8, !tbaa !11
  %829 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %828, ptr noundef @.str.28)
  %830 = load ptr, ptr %87, align 8, !tbaa !5
  %831 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %830)
  %832 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %831)
  %833 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %829, ptr noundef nonnull align 8 dereferenceable(120) %832)
  %834 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %833, ptr noundef @.str.14)
  %835 = load ptr, ptr %87, align 8, !tbaa !5
  %836 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %835)
  %837 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %836)
  call void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(48) %837)
  %838 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %839 = load ptr, ptr %838, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #8
  %840 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %841 = getelementptr inbounds { ptr, i32 }, ptr %92, i32 0, i32 0
  %842 = extractvalue { ptr, i32 } %840, 0
  store ptr %842, ptr %841, align 8
  %843 = getelementptr inbounds { ptr, i32 }, ptr %92, i32 0, i32 1
  %844 = extractvalue { ptr, i32 } %840, 1
  store i32 %844, ptr %843, align 8
  %845 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %839, ptr noundef nonnull align 8 dereferenceable(16) %92)
  %846 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %845, ptr noundef @.str.16)
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #8
  call void @_ZN11RustPrinter10inc_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %847 = load ptr, ptr %87, align 8, !tbaa !5
  %848 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %847)
  store ptr %848, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %849 = load ptr, ptr %93, align 8, !tbaa !5
  %850 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %849) #8
  %851 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.197", ptr %94, i32 0, i32 0
  store ptr %850, ptr %851, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %852 = load ptr, ptr %93, align 8, !tbaa !5
  %853 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %852) #8
  %854 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.197", ptr %95, i32 0, i32 0
  store ptr %853, ptr %854, align 8
  br label %855

855:                                              ; preds = %993, %826
  %856 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #8
  br i1 %856, label %858, label %857

857:                                              ; preds = %855
  store i32 27, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %995

858:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %859 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  store ptr %859, ptr %96, align 8, !tbaa !5
  %860 = load ptr, ptr %96, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %860, i32 0, i32 5
  %862 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %861) #8
  %863 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %862)
  switch i32 %863, label %956 [
    i32 0, label %864
    i32 1, label %865
    i32 2, label %871
    i32 18, label %877
    i32 11, label %922
    i32 17, label %945
  ]

864:                                              ; preds = %858
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.31, i32 noundef 965, ptr noundef @__PRETTY_FUNCTION__._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE) #9
  unreachable

865:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %866 = load ptr, ptr %96, align 8, !tbaa !5
  %867 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %866, i32 0, i32 5
  %868 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %867) #8
  %869 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %868)
  store ptr %869, ptr %97, align 8, !tbaa !5
  %870 = load ptr, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %992

871:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %872 = load ptr, ptr %96, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %872, i32 0, i32 5
  %874 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %873) #8
  %875 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %874)
  store ptr %875, ptr %98, align 8, !tbaa !5
  %876 = load ptr, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  br label %992

877:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %878 = load ptr, ptr %96, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %878, i32 0, i32 5
  %880 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %879) #8
  %881 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %880)
  store ptr %881, ptr %99, align 8, !tbaa !5
  %882 = load ptr, ptr %99, align 8, !tbaa !5
  %883 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %884 = load ptr, ptr %883, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #8
  %885 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %886 = getelementptr inbounds { ptr, i32 }, ptr %100, i32 0, i32 0
  %887 = extractvalue { ptr, i32 } %885, 0
  store ptr %887, ptr %886, align 8
  %888 = getelementptr inbounds { ptr, i32 }, ptr %100, i32 0, i32 1
  %889 = extractvalue { ptr, i32 } %885, 1
  store i32 %889, ptr %888, align 8
  %890 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %884, ptr noundef nonnull align 8 dereferenceable(16) %100)
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #8
  %891 = load ptr, ptr %99, align 8, !tbaa !5
  %892 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %891)
  %893 = load i32, ptr %892, align 4, !tbaa !17
  switch i32 %893, label %906 [
    i32 0, label %894
    i32 1, label %898
    i32 2, label %902
  ]

894:                                              ; preds = %877
  %895 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %896 = load ptr, ptr %895, align 8, !tbaa !11
  %897 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %896, ptr noundef @.str.23)
  br label %906

898:                                              ; preds = %877
  %899 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %900 = load ptr, ptr %899, align 8, !tbaa !11
  %901 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %900, ptr noundef @.str.24)
  br label %906

902:                                              ; preds = %877
  %903 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %904 = load ptr, ptr %903, align 8, !tbaa !11
  %905 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %904, ptr noundef @.str.25)
  br label %906

906:                                              ; preds = %902, %898, %894, %877
  %907 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %908 = load ptr, ptr %907, align 8, !tbaa !11
  %909 = load ptr, ptr %96, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %909, i32 0, i32 4
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %908, ptr noundef nonnull align 8 dereferenceable(8) %910)
  %912 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %911, ptr noundef @.str.26)
  %913 = load ptr, ptr %99, align 8, !tbaa !5
  %914 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %913)
  %915 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %912, ptr noundef nonnull align 8 dereferenceable(120) %914)
  %916 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %915, ptr noundef @.str.19)
  %917 = load ptr, ptr %99, align 8, !tbaa !5
  %918 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %917)
  call void @_ZN3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16) %918, ptr noundef nonnull align 8 dereferenceable(8) %109)
  %919 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %920 = load ptr, ptr %919, align 8, !tbaa !11
  %921 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %920, ptr noundef @.str.9)
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %992

922:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %923 = load ptr, ptr %96, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %923, i32 0, i32 5
  %925 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %924) #8
  %926 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %925)
  store ptr %926, ptr %101, align 8, !tbaa !5
  %927 = load ptr, ptr %101, align 8, !tbaa !5
  %928 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %929 = load ptr, ptr %928, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #8
  %930 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %931 = getelementptr inbounds { ptr, i32 }, ptr %102, i32 0, i32 0
  %932 = extractvalue { ptr, i32 } %930, 0
  store ptr %932, ptr %931, align 8
  %933 = getelementptr inbounds { ptr, i32 }, ptr %102, i32 0, i32 1
  %934 = extractvalue { ptr, i32 } %930, 1
  store i32 %934, ptr %933, align 8
  %935 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %929, ptr noundef nonnull align 8 dereferenceable(16) %102)
  %936 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %935, ptr noundef @.str.18)
  %937 = load ptr, ptr %96, align 8, !tbaa !5
  %938 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %937, i32 0, i32 4
  %939 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %936, ptr noundef nonnull align 8 dereferenceable(8) %938)
  %940 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %939, ptr noundef @.str.19)
  %941 = load ptr, ptr %101, align 8, !tbaa !5
  %942 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %941)
  %943 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %940, ptr noundef nonnull align 8 dereferenceable(120) %942)
  %944 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %943, ptr noundef @.str.9)
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %992

945:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %946 = load ptr, ptr %96, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %946, i32 0, i32 5
  %948 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %947) #8
  %949 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %948)
  store ptr %949, ptr %103, align 8, !tbaa !5
  %950 = load ptr, ptr %103, align 8, !tbaa !5
  %951 = load ptr, ptr %96, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %951, i32 0, i32 2
  %953 = load ptr, ptr %96, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %953, i32 0, i32 4
  %955 = load ptr, ptr %103, align 8, !tbaa !5
  call void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21) %109, ptr noundef nonnull align 8 dereferenceable(36) %952, ptr noundef nonnull align 8 dereferenceable(8) %954, ptr noundef nonnull align 8 dereferenceable(368) %955)
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %992

956:                                              ; preds = %858
  store i1 true, ptr %107, align 1
  %957 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr %105) #8
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %105)
          to label %958 unwind label %970

958:                                              ; preds = %956
  %959 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA38_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %105, ptr noundef nonnull align 1 dereferenceable(38) @.str.32)
          to label %960 unwind label %974

960:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %961 = load ptr, ptr %96, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.AST::Impl::ImplItem", ptr %961, i32 0, i32 5
  %963 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %962) #8
  %964 = invoke noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %963)
          to label %965 unwind label %978

965:                                              ; preds = %960
  store ptr %964, ptr %106, align 8, !tbaa !5
  %966 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKcEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %959, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %967 unwind label %978

967:                                              ; preds = %965
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(112) %966)
          to label %968 unwind label %978

968:                                              ; preds = %967
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %957, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %969 unwind label %982

969:                                              ; preds = %968
  store i1 false, ptr %107, align 1
  invoke void @__cxa_throw(ptr %957, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1020 unwind label %982

970:                                              ; preds = %956
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %90, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %91, align 4
  br label %988

974:                                              ; preds = %958
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %90, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %91, align 4
  br label %987

978:                                              ; preds = %967, %965, %960
  %979 = landingpad { ptr, i32 }
          cleanup
  %980 = extractvalue { ptr, i32 } %979, 0
  store ptr %980, ptr %90, align 8
  %981 = extractvalue { ptr, i32 } %979, 1
  store i32 %981, ptr %91, align 4
  br label %986

982:                                              ; preds = %969, %968
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %90, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %91, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  br label %986

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

987:                                              ; preds = %986, %974
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %105) #8
  br label %988

988:                                              ; preds = %987, %970
  call void @llvm.lifetime.end.p0(i64 376, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #8
  %989 = load i1, ptr %107, align 1
  br i1 %989, label %990, label %991

990:                                              ; preds = %988
  call void @__cxa_free_exception(ptr %957) #8
  br label %991

991:                                              ; preds = %990, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  br label %1013

992:                                              ; preds = %945, %922, %906, %871, %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %993

993:                                              ; preds = %992
  %994 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %855

995:                                              ; preds = %857
  call void @_ZN11RustPrinter10dec_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %996 = getelementptr inbounds %class.RustPrinter, ptr %109, i32 0, i32 1
  %997 = load ptr, ptr %996, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #8
  %998 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %109)
  %999 = getelementptr inbounds { ptr, i32 }, ptr %108, i32 0, i32 0
  %1000 = extractvalue { ptr, i32 } %998, 0
  store ptr %1000, ptr %999, align 8
  %1001 = getelementptr inbounds { ptr, i32 }, ptr %108, i32 0, i32 1
  %1002 = extractvalue { ptr, i32 } %998, 1
  store i32 %1002, ptr %1001, align 8
  %1003 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %997, ptr noundef nonnull align 8 dereferenceable(16) %108)
  %1004 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1003, ptr noundef @.str.17)
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  store i32 0, ptr %9, align 4
  br label %1005

1005:                                             ; preds = %995, %786
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  %1006 = load i32, ptr %9, align 4
  switch i32 %1006, label %1008 [
    i32 0, label %1007
  ]

1007:                                             ; preds = %1005
  store i32 0, ptr %9, align 4
  br label %1008

1008:                                             ; preds = %1007, %1005
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  %1009 = load i32, ptr %9, align 4
  switch i32 %1009, label %1020 [
    i32 0, label %1010
    i32 26, label %1011
  ]

1010:                                             ; preds = %1008
  br label %1011

1011:                                             ; preds = %1010, %1008
  %1012 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %83) #8
  br label %776

1013:                                             ; preds = %991, %822
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  br label %1015

1014:                                             ; preds = %778
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #8
  ret void

1015:                                             ; preds = %1013
  %1016 = load ptr, ptr %90, align 8
  %1017 = load i32, ptr %91, align 4
  %1018 = insertvalue { ptr, i32 } poison, ptr %1016, 0
  %1019 = insertvalue { ptr, i32 } %1018, i32 %1017, 1
  resume { ptr, i32 } %1019

1020:                                             ; preds = %1008, %969, %762, %720, %637, %584, %531, %478, %409, %336, %289, %238
  unreachable
}

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36)) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_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(256) ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 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)) #5

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST11ExternBlock3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(80)) #3 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 @_ZNK3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter13handle_structERKN3AST6StructE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(152)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter11handle_enumERKN3AST4EnumE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12handle_traitERKN3AST5TraitE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(128)) #0 align 2

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

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

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

declare void @_ZNK3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(368)) #0 align 2

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_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(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

; 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 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(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(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216)) #3 align 2

declare void @_ZN3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #5

; 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 nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488)) #3 align 2

declare ptr @__cxa_allocate_exception(i64)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA38_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(38)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #0 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

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

declare void @__cxa_throw(ptr, ptr, ptr)

; 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 void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3 align 2

declare void @__cxa_free_exception(ptr)

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #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 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 #5 = { "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 = { 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 #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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS11RustPrinter", !13, i64 0, !6, i64 8, !14, i64 16, !10, i64 20}
!13 = !{!"_ZTSN3AST11NodeVisitorE"}
!14 = !{!"int", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTSN3AST6Static5ClassE", !7, i64 0}


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

%"class.__gnu_cxx::__normal_iterator.50" = type { ptr }
%struct.RepeatLitStr = type { ptr, i32 }
%"class.__gnu_cxx::__normal_iterator.191" = 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.67", %"class.std::unique_ptr.75", %"class.std::vector.62" }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"class.std::unique_ptr.75" = type { %"struct.std::__uniq_ptr_data.76" }
%"struct.std::__uniq_ptr_data.76" = type { %"class.std::__uniq_ptr_impl.77" }
%"class.std::__uniq_ptr_impl.77" = type { %"class.std::tuple.78" }
%"class.std::tuple.78" = type { %"struct.std::_Tuple_impl.79" }
%"struct.std::_Tuple_impl.79" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = 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.83", %"struct.AST::PathBinding.84" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.0" }
%class.RcString = type { ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.83" = 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.84" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%"class.__gnu_cxx::__normal_iterator.197" = type { ptr }
%"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::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [71 x i8], align 1
@__PRETTY_FUNCTION__._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE = external hidden unnamed_addr constant [53 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [38 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@switch.table._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE.1 = private unnamed_addr constant [3 x ptr] [ptr @.str.23, ptr @.str.24, ptr @.str.25], align 8

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11RustPrinter13handle_moduleERKN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(480) %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %5 = alloca %struct.RepeatLitStr, align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.191", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.191", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %10 = alloca %struct.RepeatLitStr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %13 = alloca %struct.RepeatLitStr, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %16 = alloca %struct.RepeatLitStr, align 8
  %17 = alloca %struct.RepeatLitStr, align 8
  %18 = alloca %struct.RepeatLitStr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %21 = alloca %struct.RepeatLitStr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %24 = alloca %struct.RepeatLitStr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %27 = alloca %struct.RepeatLitStr, align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %30 = alloca %struct.RepeatLitStr, align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %33 = alloca %struct.RepeatLitStr, align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.50", align 8
  %38 = alloca %struct.RepeatLitStr, align 8
  %39 = alloca %"class.AST::Path", align 8
  %40 = alloca %struct.RepeatLitStr, align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.197", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.197", align 8
  %43 = alloca %struct.RepeatLitStr, align 8
  %44 = alloca %struct.RepeatLitStr, align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %struct.RepeatLitStr, align 8
  %49 = getelementptr inbounds i8, ptr %1, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %50 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %50, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %51 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %51, ptr %4, align 8
  %52 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %52, label %.lr.ph217, label %._crit_edge218

.lr.ph217:                                        ; preds = %2
  %53 = getelementptr inbounds i8, ptr %0, i64 8
  %54 = getelementptr inbounds i8, ptr %5, i64 8
  br label %60

._crit_edge218:                                   ; preds = %124, %2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %55 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %55, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %56 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %56, ptr %9, align 8
  %57 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br i1 %57, label %.lr.ph220, label %._crit_edge221

.lr.ph220:                                        ; preds = %._crit_edge218
  %58 = getelementptr inbounds i8, ptr %0, i64 8
  %59 = getelementptr inbounds i8, ptr %10, i64 8
  br label %132

60:                                               ; preds = %.lr.ph217, %124
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %62 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  %63 = getelementptr inbounds i8, ptr %62, i64 80
  %64 = call noundef zeroext i1 @_ZNK3AST4Item6is_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %63)
  br i1 %64, label %65, label %124

65:                                               ; preds = %60
  %66 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488) %63)
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = call noundef zeroext i1 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  br i1 %68, label %124, label %69

69:                                               ; preds = %65
  %70 = load ptr, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  %71 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %5, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %54, align 8
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(16) %5)
  %75 = getelementptr inbounds i8, ptr %62, i64 32
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(36) %75)
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @.str.2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  %78 = call noundef i64 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  %79 = icmp ugt i64 %78, 1
  br i1 %79, label %80, label %83

80:                                               ; preds = %69
  %81 = load ptr, ptr %53, align 8, !tbaa !5
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull @.str.3)
  br label %83

83:                                               ; preds = %80, %69
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %84 = call ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  store ptr %84, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %85 = call ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  store ptr %85, ptr %7, align 8
  %86 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %86, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %115, %83
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %87 = call noundef i64 @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  %88 = icmp ugt i64 %87, 1
  br i1 %88, label %118, label %121

.lr.ph:                                           ; preds = %83, %115
  %89 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %90 = call noundef nonnull align 8 dereferenceable(256) ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  %.not = icmp eq ptr %89, %90
  br i1 %.not, label %94, label %91

91:                                               ; preds = %.lr.ph
  %92 = load ptr, ptr %53, align 8, !tbaa !5
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull @.str.4)
  br label %94

94:                                               ; preds = %91, %.lr.ph
  %95 = load ptr, ptr %53, align 8, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %89, i64 8
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(240) %96)
  %98 = getelementptr inbounds i8, ptr %89, i64 248
  %99 = call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull @.str.5)
  br i1 %99, label %100, label %103

100:                                              ; preds = %94
  %101 = load ptr, ptr %53, align 8, !tbaa !5
  %102 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull @.str.6)
  br label %115

103:                                              ; preds = %94
  %104 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %96)
  %105 = call noundef i64 @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %104) #8
  %.not204 = icmp eq i64 %105, 0
  br i1 %.not204, label %115, label %106

106:                                              ; preds = %103
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %96)
  %108 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt6vectorIN3AST8PathNodeESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %107) #8
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8PathNode4nameEv(ptr noundef nonnull align 8 dereferenceable(40) %108)
  %110 = call noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %109)
  br i1 %110, label %111, label %115

111:                                              ; preds = %106
  %112 = load ptr, ptr %53, align 8, !tbaa !5
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull @.str.7)
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %98)
  br label %115

115:                                              ; preds = %111, %106, %103, %100
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %117 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %117, label %.lr.ph, label %._crit_edge

118:                                              ; preds = %._crit_edge
  %119 = load ptr, ptr %53, align 8, !tbaa !5
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull @.str.8)
  br label %121

121:                                              ; preds = %118, %._crit_edge
  %122 = load ptr, ptr %53, align 8, !tbaa !5
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull @.str.9)
  br label %124

124:                                              ; preds = %121, %65, %60
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  %126 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br i1 %126, label %60, label %._crit_edge218

._crit_edge221:                                   ; preds = %151, %._crit_edge218
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %127 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %127, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %128 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %128, ptr %12, align 8
  %129 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %129, label %.lr.ph223, label %._crit_edge224

.lr.ph223:                                        ; preds = %._crit_edge221
  %130 = getelementptr inbounds i8, ptr %0, i64 8
  %131 = getelementptr inbounds i8, ptr %13, i64 8
  br label %161

132:                                              ; preds = %.lr.ph220, %151
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %134 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  %135 = getelementptr inbounds i8, ptr %134, i64 80
  %136 = call noundef zeroext i1 @_ZNK3AST4Item8is_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %135)
  br i1 %136, label %137, label %151

137:                                              ; preds = %132
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Item8as_CrateEv(ptr noundef nonnull align 8 dereferenceable(488) %135)
  %139 = getelementptr inbounds i8, ptr %134, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %139)
  %140 = load ptr, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  %141 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %10, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %59, align 8
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(16) %10)
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull @.str.10)
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %138)
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.11)
  %148 = getelementptr inbounds i8, ptr %134, i64 72
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(8) %148)
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull @.str.9)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  br label %151

151:                                              ; preds = %132, %137
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %153 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br i1 %153, label %132, label %._crit_edge221

._crit_edge224:                                   ; preds = %178, %._crit_edge221
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %154 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %154, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %155 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %155, ptr %15, align 8
  %156 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %156, label %.lr.ph226, label %._crit_edge227

.lr.ph226:                                        ; preds = %._crit_edge224
  %157 = getelementptr inbounds i8, ptr %0, i64 8
  %158 = getelementptr inbounds i8, ptr %16, i64 8
  %159 = getelementptr inbounds i8, ptr %17, i64 8
  %160 = getelementptr inbounds i8, ptr %18, i64 8
  br label %186

161:                                              ; preds = %.lr.ph223, %178
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %163 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %162) #8
  %164 = getelementptr inbounds i8, ptr %163, i64 80
  %165 = call noundef zeroext i1 @_ZNK3AST4Item14is_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %164)
  br i1 %165, label %166, label %178

166:                                              ; preds = %161
  %167 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3AST4Item14as_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488) %164)
  %168 = getelementptr inbounds i8, ptr %163, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %168)
  %169 = load ptr, ptr %130, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  %170 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %13, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %131, align 8
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(16) %13)
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @.str.12)
  %175 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST11ExternBlock3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(80) %167)
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull align 8 dereferenceable(32) %175)
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull @.str.13)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  br label %178

178:                                              ; preds = %161, %166
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %180 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %180, label %161, label %._crit_edge224

._crit_edge227:                                   ; preds = %220, %._crit_edge224
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %181 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %181, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %182 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %182, ptr %20, align 8
  %183 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %183, label %.lr.ph230, label %._crit_edge231

.lr.ph230:                                        ; preds = %._crit_edge227
  %184 = getelementptr inbounds i8, ptr %0, i64 8
  %185 = getelementptr inbounds i8, ptr %21, i64 8
  br label %228

186:                                              ; preds = %.lr.ph226, %220
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %188 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  %189 = getelementptr inbounds i8, ptr %188, i64 80
  %190 = call noundef zeroext i1 @_ZNK3AST4Item9is_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %189)
  br i1 %190, label %191, label %220

191:                                              ; preds = %186
  %192 = call noundef nonnull align 8 dereferenceable(480) ptr @_ZNK3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488) %189)
  %193 = load ptr, ptr %157, align 8, !tbaa !5
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull @.str.14)
  %195 = load ptr, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #8
  %196 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %16, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %158, align 8
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(16) %16)
  %200 = getelementptr inbounds i8, ptr %188, i64 32
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(36) %200)
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull @.str.15)
  %203 = getelementptr inbounds i8, ptr %188, i64 72
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %203)
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull @.str.14)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #8
  %206 = load ptr, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #8
  %207 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %17, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %159, align 8
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(16) %17)
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @.str.16)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  call void @_ZN11RustPrinter10inc_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  call void @_ZN11RustPrinter13handle_moduleERKN3AST6ModuleE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(480) %192)
  call void @_ZN11RustPrinter10dec_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %212 = load ptr, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #8
  %213 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %18, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %160, align 8
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(16) %18)
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull @.str.17)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  %218 = load ptr, ptr %157, align 8, !tbaa !5
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @.str.14)
  br label %220

220:                                              ; preds = %186, %191
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %222, label %186, label %._crit_edge227

._crit_edge231:                                   ; preds = %258, %._crit_edge227
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %223 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %223, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %224 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %224, ptr %23, align 8
  %225 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %225, label %.lr.ph233, label %._crit_edge234

.lr.ph233:                                        ; preds = %._crit_edge231
  %226 = getelementptr inbounds i8, ptr %0, i64 8
  %227 = getelementptr inbounds i8, ptr %24, i64 8
  br label %266

228:                                              ; preds = %.lr.ph230, %258
  %.0182228 = phi i1 [ true, %.lr.ph230 ], [ %.2184, %258 ]
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %230 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %229) #8
  %231 = getelementptr inbounds i8, ptr %230, i64 80
  %232 = call noundef zeroext i1 @_ZNK3AST4Item7is_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %231)
  br i1 %232, label %233, label %258

233:                                              ; preds = %228
  %234 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %231)
  br i1 %.0182228, label %235, label %238

235:                                              ; preds = %233
  %236 = load ptr, ptr %184, align 8, !tbaa !5
  %237 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef nonnull @.str.14)
  br label %238

238:                                              ; preds = %235, %233
  %239 = getelementptr inbounds i8, ptr %230, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %239)
  %240 = load ptr, ptr %184, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  %241 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %21, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %185, align 8
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull align 8 dereferenceable(16) %21)
  %245 = getelementptr inbounds i8, ptr %230, i64 32
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(36) %245)
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull @.str.18)
  %248 = getelementptr inbounds i8, ptr %230, i64 72
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %248)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  %250 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %234)
  call void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(48) %250)
  %251 = load ptr, ptr %184, align 8, !tbaa !5
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull @.str.19)
  %253 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %234)
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(120) %253)
  %255 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %234)
  call void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(48) %255)
  %256 = load ptr, ptr %184, align 8, !tbaa !5
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull @.str.9)
  br label %258

258:                                              ; preds = %228, %238
  %.2184 = phi i1 [ false, %238 ], [ %.0182228, %228 ]
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %260, label %228, label %._crit_edge231

._crit_edge234:                                   ; preds = %286, %._crit_edge231
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  %261 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %261, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %262 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %262, ptr %26, align 8
  %263 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %263, label %.lr.ph236, label %._crit_edge237

.lr.ph236:                                        ; preds = %._crit_edge234
  %264 = getelementptr inbounds i8, ptr %0, i64 8
  %265 = getelementptr inbounds i8, ptr %27, i64 8
  br label %294

266:                                              ; preds = %.lr.ph233, %286
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %268 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %267) #8
  %269 = getelementptr inbounds i8, ptr %268, i64 80
  %270 = call noundef zeroext i1 @_ZNK3AST4Item9is_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %269)
  br i1 %270, label %271, label %286

271:                                              ; preds = %266
  %272 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488) %269)
  %273 = load ptr, ptr %226, align 8, !tbaa !5
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull @.str.14)
  %275 = getelementptr inbounds i8, ptr %268, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %275)
  %276 = load ptr, ptr %226, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %277 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %24, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %227, align 8
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull align 8 dereferenceable(16) %24)
  %281 = getelementptr inbounds i8, ptr %268, i64 32
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull align 8 dereferenceable(36) %281)
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull @.str.20)
  %284 = getelementptr inbounds i8, ptr %268, i64 72
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull align 8 dereferenceable(8) %284)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @_ZN11RustPrinter13handle_structERKN3AST6StructE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(152) %272)
  br label %286

286:                                              ; preds = %266, %271
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %288 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %288, label %266, label %._crit_edge234

._crit_edge237:                                   ; preds = %314, %._crit_edge234
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %289 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %289, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  %290 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %290, ptr %29, align 8
  %291 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br i1 %291, label %.lr.ph239, label %._crit_edge240

.lr.ph239:                                        ; preds = %._crit_edge237
  %292 = getelementptr inbounds i8, ptr %0, i64 8
  %293 = getelementptr inbounds i8, ptr %30, i64 8
  br label %322

294:                                              ; preds = %.lr.ph236, %314
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  %296 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %295) #8
  %297 = getelementptr inbounds i8, ptr %296, i64 80
  %298 = call noundef zeroext i1 @_ZNK3AST4Item7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %297)
  br i1 %298, label %299, label %314

299:                                              ; preds = %294
  %300 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488) %297)
  %301 = load ptr, ptr %264, align 8, !tbaa !5
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull @.str.14)
  %303 = getelementptr inbounds i8, ptr %296, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %303)
  %304 = load ptr, ptr %264, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  %305 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %27, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %265, align 8
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull align 8 dereferenceable(16) %27)
  %309 = getelementptr inbounds i8, ptr %296, i64 32
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull align 8 dereferenceable(36) %309)
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull @.str.21)
  %312 = getelementptr inbounds i8, ptr %296, i64 72
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull align 8 dereferenceable(8) %312)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  call void @_ZN11RustPrinter11handle_enumERKN3AST4EnumE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(80) %300)
  br label %314

314:                                              ; preds = %294, %299
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  %316 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %316, label %294, label %._crit_edge237

._crit_edge240:                                   ; preds = %342, %._crit_edge237
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %317 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %317, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %318 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %318, ptr %32, align 8
  %319 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br i1 %319, label %.lr.ph243, label %._crit_edge244

.lr.ph243:                                        ; preds = %._crit_edge240
  %320 = getelementptr inbounds i8, ptr %0, i64 8
  %321 = getelementptr inbounds i8, ptr %33, i64 8
  br label %349

322:                                              ; preds = %.lr.ph239, %342
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %324 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %323) #8
  %325 = getelementptr inbounds i8, ptr %324, i64 80
  %326 = call noundef zeroext i1 @_ZNK3AST4Item8is_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %325)
  br i1 %326, label %327, label %342

327:                                              ; preds = %322
  %328 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3AST4Item8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(488) %325)
  %329 = load ptr, ptr %292, align 8, !tbaa !5
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull @.str.14)
  %331 = getelementptr inbounds i8, ptr %324, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %331)
  %332 = load ptr, ptr %292, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #8
  %333 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %30, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %293, align 8
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(16) %30)
  %337 = getelementptr inbounds i8, ptr %324, i64 32
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(36) %337)
  %339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull @.str.22)
  %340 = getelementptr inbounds i8, ptr %324, i64 72
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %340)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #8
  call void @_ZN11RustPrinter12handle_traitERKN3AST5TraitE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(128) %328)
  br label %342

342:                                              ; preds = %322, %327
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  %344 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br i1 %344, label %322, label %._crit_edge240

._crit_edge244:                                   ; preds = %385, %._crit_edge240
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  %345 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %345, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  %346 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %346, ptr %35, align 8
  %347 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br i1 %347, label %.lr.ph246, label %._crit_edge247

.lr.ph246:                                        ; preds = %._crit_edge244
  %348 = getelementptr inbounds i8, ptr %0, i64 8
  br label %397

349:                                              ; preds = %.lr.ph243, %385
  %.3185241 = phi i1 [ true, %.lr.ph243 ], [ %.5, %385 ]
  %350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %351 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %350) #8
  %352 = getelementptr inbounds i8, ptr %351, i64 80
  %353 = call noundef zeroext i1 @_ZNK3AST4Item9is_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %352)
  br i1 %353, label %354, label %385

354:                                              ; preds = %349
  %355 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %352)
  br i1 %.3185241, label %356, label %359

356:                                              ; preds = %354
  %357 = load ptr, ptr %320, align 8, !tbaa !5
  %358 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull @.str.14)
  br label %359

359:                                              ; preds = %356, %354
  %360 = getelementptr inbounds i8, ptr %351, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %360)
  %361 = load ptr, ptr %320, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  %362 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %33, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %321, align 8
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef nonnull align 8 dereferenceable(16) %33)
  %366 = getelementptr inbounds i8, ptr %351, i64 32
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(36) %366)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  %368 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %355)
  %369 = load i32, ptr %368, align 4, !tbaa !13
  %370 = icmp ult i32 %369, 3
  br i1 %370, label %switch.lookup, label %374

switch.lookup:                                    ; preds = %359
  %371 = zext nneg i32 %369 to i64
  %switch.gep = getelementptr inbounds [3 x ptr], ptr @switch.table._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE.1, i64 0, i64 %371
  %switch.load = load ptr, ptr %switch.gep, align 8
  %372 = load ptr, ptr %320, align 8, !tbaa !5
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef nonnull %switch.load)
  br label %374

374:                                              ; preds = %359, %switch.lookup
  %375 = load ptr, ptr %320, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %351, i64 72
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef nonnull align 8 dereferenceable(8) %376)
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull @.str.26)
  %379 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %355)
  %380 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull align 8 dereferenceable(120) %379)
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull @.str.19)
  %382 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %355)
  call void @_ZNK3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef nonnull align 8 dereferenceable(8) %0)
  %383 = load ptr, ptr %320, align 8, !tbaa !5
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull @.str.9)
  br label %385

385:                                              ; preds = %349, %374
  %.5 = phi i1 [ false, %374 ], [ %.3185241, %349 ]
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %387 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br i1 %387, label %349, label %._crit_edge244

._crit_edge247:                                   ; preds = %409, %._crit_edge244
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  %388 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %388, ptr %36, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  %389 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  store ptr %389, ptr %37, align 8
  %390 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br i1 %390, label %.lr.ph252, label %._crit_edge253

.lr.ph252:                                        ; preds = %._crit_edge247
  %391 = getelementptr inbounds i8, ptr %0, i64 8
  %392 = getelementptr inbounds i8, ptr %38, i64 8
  %393 = getelementptr inbounds i8, ptr %40, i64 8
  %394 = getelementptr inbounds i8, ptr %44, i64 8
  %395 = getelementptr inbounds i8, ptr %43, i64 8
  %396 = getelementptr inbounds i8, ptr %48, i64 8
  br label %412

397:                                              ; preds = %.lr.ph246, %409
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  %399 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %398) #8
  %400 = getelementptr inbounds i8, ptr %399, i64 80
  %401 = call noundef zeroext i1 @_ZNK3AST4Item11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %400)
  br i1 %401, label %402, label %409

402:                                              ; preds = %397
  %403 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %400)
  %404 = load ptr, ptr %348, align 8, !tbaa !5
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %404, ptr noundef nonnull @.str.14)
  %406 = getelementptr inbounds i8, ptr %399, i64 8
  call void @_ZN11RustPrinter11print_attrsERKN3AST13AttributeListE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(24) %406)
  %407 = getelementptr inbounds i8, ptr %399, i64 32
  %408 = getelementptr inbounds i8, ptr %399, i64 72
  call void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(36) %407, ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull align 8 dereferenceable(368) %403)
  br label %409

409:                                              ; preds = %397, %402
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  %411 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br i1 %411, label %397, label %._crit_edge247

._crit_edge253:                                   ; preds = %547, %._crit_edge247
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  ret void

412:                                              ; preds = %.lr.ph252, %547
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  %414 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNKSt10unique_ptrIN3AST5NamedINS0_4ItemEEESt14default_deleteIS3_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %413) #8
  %415 = getelementptr inbounds i8, ptr %414, i64 80
  %416 = call noundef zeroext i1 @_ZNK3AST4Item7is_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %415)
  br i1 %416, label %417, label %547

417:                                              ; preds = %412
  %418 = call noundef nonnull align 8 dereferenceable(472) ptr @_ZNK3AST4Item7as_ImplEv(ptr noundef nonnull align 8 dereferenceable(488) %415)
  %419 = load ptr, ptr %391, align 8, !tbaa !5
  %420 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef nonnull @.str.14)
  %421 = load ptr, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #8
  %422 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %38, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %392, align 8
  %425 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull align 8 dereferenceable(16) %38)
  %426 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull @.str.27)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #8
  %427 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  %428 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %427)
  call void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(48) %428)
  %429 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  %430 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %429)
  %431 = getelementptr inbounds i8, ptr %430, i64 8
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %39) #8
  call void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %39)
  %432 = invoke noundef zeroext i1 @_ZNK3AST4PathneERKS0_(ptr noundef nonnull align 8 dereferenceable(240) %431, ptr noundef nonnull align 8 dereferenceable(240) %39)
          to label %433 unwind label %442

433:                                              ; preds = %417
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %39) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %39) #8
  br i1 %432, label %434, label %444

434:                                              ; preds = %433
  %435 = load ptr, ptr %391, align 8, !tbaa !5
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull @.str.28)
  %437 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  %438 = call noundef nonnull align 8 dereferenceable(248) ptr @_ZNK3AST7ImplDef5traitEv(ptr noundef nonnull align 8 dereferenceable(448) %437)
  %439 = getelementptr inbounds i8, ptr %438, i64 8
  %440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %436, ptr noundef nonnull align 8 dereferenceable(240) %439)
  %441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull @.str.29)
  br label %444

442:                                              ; preds = %417
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %39) #8
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %39) #8
  br label %550

444:                                              ; preds = %434, %433
  %445 = load ptr, ptr %391, align 8, !tbaa !5
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull @.str.28)
  %447 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  %448 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST7ImplDef4typeEv(ptr noundef nonnull align 8 dereferenceable(448) %447)
  %449 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %446, ptr noundef nonnull align 8 dereferenceable(120) %448)
  %450 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull @.str.14)
  %451 = call noundef nonnull align 8 dereferenceable(448) ptr @_ZNK3AST4Impl3defEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  %452 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448) %451)
  call void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(48) %452)
  %453 = load ptr, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #8
  %454 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %40, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %393, align 8
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull align 8 dereferenceable(16) %40)
  %458 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef nonnull @.str.16)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #8
  call void @_ZN11RustPrinter10inc_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %459 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST4Impl5itemsEv(ptr noundef nonnull align 8 dereferenceable(472) %418)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  %460 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %459) #8
  store ptr %460, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %461 = call ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %459) #8
  store ptr %461, ptr %42, align 8
  %462 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br i1 %462, label %.lr.ph249, label %._crit_edge250

._crit_edge250:                                   ; preds = %544, %444
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  call void @_ZN11RustPrinter10dec_indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %463 = load ptr, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #8
  %464 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %48, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %396, align 8
  %467 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(16) %48)
  %468 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef nonnull @.str.17)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  br label %547

.lr.ph249:                                        ; preds = %444, %544
  %469 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  %470 = getelementptr inbounds i8, ptr %469, i64 88
  %471 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %472 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %471)
  switch i32 %472, label %525 [
    i32 0, label %473
    i32 1, label %474
    i32 2, label %477
    i32 18, label %480
    i32 11, label %505
    i32 17, label %520
  ]

473:                                              ; preds = %.lr.ph249
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.31, i32 noundef 965, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE) #9
  unreachable

474:                                              ; preds = %.lr.ph249
  %475 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %476 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %475)
  br label %544

477:                                              ; preds = %.lr.ph249
  %478 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %479 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZN3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %478)
  br label %544

480:                                              ; preds = %.lr.ph249
  %481 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %482 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %481)
  %483 = load ptr, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #8
  %484 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %43, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %395, align 8
  %487 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef nonnull align 8 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #8
  %488 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %482)
  %489 = load i32, ptr %488, align 4, !tbaa !13
  %490 = icmp ult i32 %489, 3
  br i1 %490, label %switch.lookup262, label %494

switch.lookup262:                                 ; preds = %480
  %491 = zext nneg i32 %489 to i64
  %switch.gep263 = getelementptr inbounds [3 x ptr], ptr @switch.table._ZN11RustPrinter13handle_moduleERKN3AST6ModuleE.1, i64 0, i64 %491
  %switch.load264 = load ptr, ptr %switch.gep263, align 8
  %492 = load ptr, ptr %391, align 8, !tbaa !5
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef nonnull %switch.load264)
  br label %494

494:                                              ; preds = %480, %switch.lookup262
  %495 = load ptr, ptr %391, align 8, !tbaa !5
  %496 = getelementptr inbounds i8, ptr %469, i64 80
  %497 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(8) %496)
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull @.str.26)
  %499 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %482)
  %500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull align 8 dereferenceable(120) %499)
  %501 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %500, ptr noundef nonnull @.str.19)
  %502 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %482)
  call void @_ZN3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16) %502, ptr noundef nonnull align 8 dereferenceable(8) %0)
  %503 = load ptr, ptr %391, align 8, !tbaa !5
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull @.str.9)
  br label %544

505:                                              ; preds = %.lr.ph249
  %506 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %507 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZN3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %506)
  %508 = load ptr, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #8
  %509 = call { ptr, i32 } @_ZN11RustPrinter6indentEv(ptr noundef nonnull align 8 dereferenceable(21) %0)
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %44, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %394, align 8
  %512 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK12RepeatLitStr(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef nonnull align 8 dereferenceable(16) %44)
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef nonnull @.str.18)
  %514 = getelementptr inbounds i8, ptr %469, i64 80
  %515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %513, ptr noundef nonnull align 8 dereferenceable(8) %514)
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull @.str.19)
  %517 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZN3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %507)
  %518 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8) %516, ptr noundef nonnull align 8 dereferenceable(120) %517)
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef nonnull @.str.9)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #8
  br label %544

520:                                              ; preds = %.lr.ph249
  %521 = call noundef nonnull align 8 dereferenceable(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %522 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %521)
  %523 = getelementptr inbounds i8, ptr %469, i64 32
  %524 = getelementptr inbounds i8, ptr %469, i64 80
  call void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21) %0, ptr noundef nonnull align 8 dereferenceable(36) %523, ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull align 8 dereferenceable(368) %522)
  br label %544

525:                                              ; preds = %.lr.ph249
  %526 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %46) #8
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %46)
          to label %527 unwind label %.thread

527:                                              ; preds = %525
  %528 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA38_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %46, ptr noundef nonnull align 1 dereferenceable(38) @.str.32)
          to label %529 unwind label %.thread209

529:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  %530 = call noundef ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %470) #8
  %531 = invoke noundef ptr @_ZNK3AST4Item7tag_strEv(ptr noundef nonnull align 8 dereferenceable(488) %530)
          to label %532 unwind label %.thread212

532:                                              ; preds = %529
  store ptr %531, ptr %47, align 8, !tbaa !15
  %533 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKcEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %528, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %534 unwind label %.thread212

534:                                              ; preds = %532
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(112) %533)
          to label %535 unwind label %.thread212

535:                                              ; preds = %534
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %526, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %536 unwind label %540

536:                                              ; preds = %535
  invoke void @__cxa_throw(ptr nonnull %526, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %551 unwind label %540

.thread:                                          ; preds = %525
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %542

.thread209:                                       ; preds = %527
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %542

.thread212:                                       ; preds = %529, %532, %534
  %539 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %542

540:                                              ; preds = %535, %536
  %.0 = phi i1 [ false, %536 ], [ true, %535 ]
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br i1 %.0, label %542, label %543

542:                                              ; preds = %.thread212, %.thread209, %.thread, %540
  %.pn.pn.pn208 = phi { ptr, i32 } [ %537, %.thread ], [ %541, %540 ], [ %538, %.thread209 ], [ %539, %.thread212 ]
  call void @__cxa_free_exception(ptr %526) #8
  br label %543

543:                                              ; preds = %542, %540
  %.pn.pn.pn207 = phi { ptr, i32 } [ %.pn.pn.pn208, %542 ], [ %541, %540 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %550

544:                                              ; preds = %520, %505, %494, %477, %474
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  %546 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br i1 %546, label %.lr.ph249, label %._crit_edge250

547:                                              ; preds = %412, %._crit_edge250
  %548 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  %549 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br i1 %549, label %412, label %._crit_edge253

550:                                              ; preds = %543, %442
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn207, %543 ], [ %443, %442 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  resume { ptr, i32 } %.pn.pn.pn.pn

551:                                              ; preds = %536
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorISt10unique_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 @_ZNKSt6vectorISt10unique_ptrIN3AST5NamedINS1_4ItemEEESt14default_deleteIS4_EESaIS7_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_cxxneIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3AST5NamedINS2_4ItemEEESt14default_deleteIS5_EESt6vectorIS8_SaIS8_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(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 @_ZNK3AST4Item6is_UseEv(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(32) ptr @_ZNK3AST4Item6as_UseEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_10VisibilityE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(36)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_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_cxxneIPKN3AST7UseItem3EntESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(256) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST7UseItem3EntESt6vectorIS3_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(256) ptr @_ZNKSt6vectorIN3AST7UseItem3EntESaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 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 #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 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 #0 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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item8is_CrateEv(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 @_ZNK3AST4Item8as_CrateEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item14is_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(80) ptr @_ZNK3AST4Item14as_ExternBlockEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3AST11ExternBlock3abiB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3 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 @_ZNK3AST4Item9as_ModuleEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item7is_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(216) ptr @_ZNK3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12print_paramsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK7TypeRef(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12print_boundsERKN3AST13GenericParamsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item9is_StructEv(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 @_ZNK3AST4Item9as_StructEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter13handle_structERKN3AST6StructE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item7is_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(80) ptr @_ZNK3AST4Item7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter11handle_enumERKN3AST4EnumE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item8is_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(128) ptr @_ZNK3AST4Item8as_TraitEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter12handle_traitERKN3AST5TraitE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item9is_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(216) ptr @_ZNK3AST4Item9as_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 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(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 @_ZNK3AST6Static4typeEv(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(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216)) local_unnamed_addr #3 align 2

declare void @_ZNK3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item11is_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(368) ptr @_ZNK3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11RustPrinter15handle_functionERKN3AST10VisibilityERK8RcStringRKNS0_8FunctionE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3AST4Item7is_ImplEv(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(472) ptr @_ZNK3AST4Item7as_ImplEv(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(448) ptr @_ZNK3AST4Impl3defEv(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(48) ptr @_ZNK3AST7ImplDef6paramsEv(ptr noundef nonnull align 8 dereferenceable(448)) local_unnamed_addr #3 align 2

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3AST4Impl8ImplItemESaIS2_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_cxxneIPKN3AST4Impl8ImplItemESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST4Impl8ImplItemESt6vectorIS3_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(488) ptr @_ZNKSt10unique_ptrIN3AST4ItemESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_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: 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 @_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 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(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(16) ptr @_ZN3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216)) local_unnamed_addr #3 align 2

declare void @_ZN3AST4Expr11visit_nodesERNS_11NodeVisitorE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; 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 nonnull align 8 dereferenceable(368) ptr @_ZN3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488)) local_unnamed_addr #3 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA38_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(38)) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #0 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

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

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

; 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 void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #3 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #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 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 #5 = { "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 = { 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 #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, !8, i64 8}
!6 = !{!"_ZTS11RustPrinter", !7, i64 0, !8, i64 8, !11, i64 16, !12, i64 20}
!7 = !{!"_ZTSN3AST11NodeVisitorE"}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"int", !9, i64 0}
!12 = !{!"bool", !9, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN3AST6Static5ClassE", !9, i64 0}
!15 = !{!8, !8, i64 0}


; Effective O3 passes: AggressiveInstCombinePass,ConstantMergePass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass