; LLVM IR from thepowersgang/mrustc :: src/macro_rules/eval.ll (ZN13MacroExpander12realGetTokenEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Span = type { ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.42 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.42 = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.384 = type { ptr }
%class.U128 = type { i64, i64 }
%class.anon.385 = type { ptr, ptr }
%"class.std::allocator.39" = type { i8 }
%class.anon.386 = type { i8 }
%class.anon.388 = type { ptr }
%class.anon.389 = type { ptr, ptr }
%class.TokenTree = type { ptr, i32, %"class.Ident::Hygiene", %class.Token, %"class.std::vector.71" }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Token::TagTakeIP" = type { i8 }
%class.InterpolatedFragment = type { i32, ptr }
%class.MacroExpander = type { %class.TokenStream, i32, %struct.Span, %class.RcString, %struct.Span, i32, [4 x i8], %class.ParameterMappings, %class.MacroExpandState, %class.Token, %"class.std::unique_ptr.332", i32, i8, %"class.Ident::Hygiene" }
%class.TokenStream = type { ptr, i8, %class.Token, %"class.Ident::Hygiene", i32, %"class.std::vector.62", %struct.ParseState }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<TokenStream::LookaheadEnt, std::allocator<TokenStream::LookaheadEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<TokenStream::LookaheadEnt, std::allocator<TokenStream::LookaheadEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<TokenStream::LookaheadEnt, std::allocator<TokenStream::LookaheadEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TokenStream::LookaheadEnt, std::allocator<TokenStream::LookaheadEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ParameterMappings = type <{ %"class.std::map", %"class.std::vector.3", i32, [4 x i8] }>
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::map<std::vector<unsigned int>, unsigned int>>, std::_Select1st<std::pair<const unsigned int, std::map<std::vector<unsigned int>, unsigned int>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::map<std::vector<unsigned int>, unsigned int>>, std::_Select1st<std::pair<const unsigned int, std::map<std::vector<unsigned int>, unsigned int>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<ParameterMappings::CapturedVar, std::allocator<ParameterMappings::CapturedVar>>::_Vector_impl" }
%"struct.std::_Vector_base<ParameterMappings::CapturedVar, std::allocator<ParameterMappings::CapturedVar>>::_Vector_impl" = type { %"struct.std::_Vector_base<ParameterMappings::CapturedVar, std::allocator<ParameterMappings::CapturedVar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ParameterMappings::CapturedVar, std::allocator<ParameterMappings::CapturedVar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.MacroExpandState = type { ptr, ptr, %"class.std::vector.327", %"class.std::vector", ptr }
%"class.std::vector.327" = type { %"struct.std::_Vector_base.328" }
%"struct.std::_Vector_base.328" = type { %"struct.std::_Vector_base<MacroExpandState::t_offset, std::allocator<MacroExpandState::t_offset>>::_Vector_impl" }
%"struct.std::_Vector_base<MacroExpandState::t_offset, std::allocator<MacroExpandState::t_offset>>::_Vector_impl" = type { %"struct.std::_Vector_base<MacroExpandState::t_offset, std::allocator<MacroExpandState::t_offset>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MacroExpandState::t_offset, std::allocator<MacroExpandState::t_offset>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.332" = type { %"struct.std::__uniq_ptr_data.333" }
%"struct.std::__uniq_ptr_data.333" = type { %"class.std::__uniq_ptr_impl.334" }
%"class.std::__uniq_ptr_impl.334" = type { %"class.std::tuple.335" }
%"class.std::tuple.335" = type { %"struct.std::_Tuple_impl.336" }
%"struct.std::_Tuple_impl.336" = type { %"struct.std::_Head_base.339" }
%"struct.std::_Head_base.339" = type { ptr }
%"struct.MacroExpansionEnt::Data_Loop" = type { %"class.std::vector.322", %class.Token, %"class.std::set" }
%"class.std::vector.322" = type { %"struct.std::_Vector_base.323" }
%"struct.std::_Vector_base.323" = type { %"struct.std::_Vector_base<MacroExpansionEnt, std::allocator<MacroExpansionEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<MacroExpansionEnt, std::allocator<MacroExpansionEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<MacroExpansionEnt, std::allocator<MacroExpansionEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MacroExpansionEnt, std::allocator<MacroExpansionEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree.380" }
%"class.std::_Rb_tree.380" = type { %"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

@g_debug_indent_level = external global i32, align 4
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@__FUNCTION__._ZN13MacroExpander12realGetTokenEv = external hidden unnamed_addr constant [13 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._ZN13MacroExpander12realGetTokenEv = external hidden unnamed_addr constant [44 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [4 x i8], align 1

declare noundef zeroext i1 @_Z13debug_enabledv() #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) #0

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

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @_ZN20InterpolatedFragmentC1EOS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #0

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #8

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #9

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #0

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

declare void @_ZN9TTStreamOC1E4Span10ParseState9TokenTree(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef, ptr noundef byval(%struct.ParseState) align 8, ptr noundef) unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(72)) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13MacroExpander12realGetTokenEv(ptr dead_on_unwind noalias writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(480) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca %struct.Ident, align 8
  %16 = alloca %"class.Ident::Hygiene", align 8
  %17 = alloca i1, align 1
  %18 = alloca %struct.Ident, align 8
  %19 = alloca %"class.Ident::Hygiene", align 8
  %20 = alloca %"class.Ident::Hygiene", align 8
  %21 = alloca i1, align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.Ident::Hygiene", align 8
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %"class.std::function", align 8
  %28 = alloca %class.anon.384, align 8
  %29 = alloca i32, align 4
  %30 = alloca %struct.Span, align 8
  %31 = alloca %"class.std::vector", align 8
  %32 = alloca %class.U128, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::vector", align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.385, align 8
  %39 = alloca %class.Token, align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.39", align 1
  %42 = alloca %"class.Ident::Hygiene", align 8
  %43 = alloca %"class.std::vector", align 8
  %44 = alloca %struct.Span, align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon.386, align 1
  %47 = alloca %class.U128, align 8
  %48 = alloca %"class.std::vector", align 8
  %49 = alloca %struct.Span, align 8
  %50 = alloca %"class.std::function", align 8
  %51 = alloca %class.anon.388, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %struct.Span, align 8
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca %struct.Span, align 8
  %56 = alloca %"class.std::function", align 8
  %57 = alloca %class.anon.389, align 8
  %58 = alloca i8, align 1
  %59 = alloca %struct.Span, align 8
  %60 = alloca %"class.std::vector", align 8
  %61 = alloca %class.TokenTree, align 8
  %62 = alloca %struct.Span, align 8
  %63 = alloca %struct.ParseState, align 8
  %64 = alloca %class.TokenTree, align 8
  %65 = alloca i1, align 1
  %66 = alloca %"struct.Token::TagTakeIP", align 1
  %67 = alloca %class.InterpolatedFragment, align 8
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %70 = load ptr, ptr %4, align 8
  %71 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 9
  %72 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %71)
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %92

74:                                               ; preds = %2
  br label %75

75:                                               ; preds = %74
  %76 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %76, label %77, label %89

77:                                               ; preds = %75
  %78 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %78, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef @.str.48)
  %81 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %82 = load i32, ptr %81, align 8, !tbaa !11
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %80, i32 noundef %82)
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef @.str.49)
  %85 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 9
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(88) %85)
  %87 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef @_ZSt3decRSt8ios_base)
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %89

89:                                               ; preds = %77, %75
  br label %90

90:                                               ; preds = %89
  %91 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 9
  call void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(88) %91)
  br label %787

92:                                               ; preds = %2
  %93 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 10
  %94 = call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  %95 = icmp ne ptr %94, null
  br i1 %95, label %96, label %139

96:                                               ; preds = %92
  store i1 false, ptr %5, align 1
  %97 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 10
  %98 = call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  call void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %98)
  br label %99

99:                                               ; preds = %96
  %100 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %101 unwind label %120

101:                                              ; preds = %99
  br i1 %100, label %102, label %124

102:                                              ; preds = %101
  %103 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %103, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %105 unwind label %120

105:                                              ; preds = %102
  %106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef @.str.48)
          to label %107 unwind label %120

107:                                              ; preds = %105
  %108 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %109 = load i32, ptr %108, align 8, !tbaa !11
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef %109)
          to label %111 unwind label %120

111:                                              ; preds = %107
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef @.str.50)
          to label %113 unwind label %120

113:                                              ; preds = %111
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %115 unwind label %120

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef @_ZSt3decRSt8ios_base)
          to label %117 unwind label %120

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %119 unwind label %120

119:                                              ; preds = %117
  br label %124

120:                                              ; preds = %126, %117, %115, %113, %111, %107, %105, %102, %99
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %6, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %7, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %788

124:                                              ; preds = %119, %101
  br label %125

125:                                              ; preds = %124
  br label %126

126:                                              ; preds = %125
  %127 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %128 unwind label %120

128:                                              ; preds = %126
  %129 = icmp ne i32 %127, 1
  br i1 %129, label %130, label %131

130:                                              ; preds = %128
  store i1 true, ptr %5, align 1
  store i32 1, ptr %8, align 4
  br label %133

131:                                              ; preds = %128
  %132 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 10
  call void @_ZNSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef null) #10
  store i32 0, ptr %8, align 4
  br label %133

133:                                              ; preds = %131, %130
  %134 = load i1, ptr %5, align 1
  br i1 %134, label %136, label %135

135:                                              ; preds = %133
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %136

136:                                              ; preds = %135, %133
  %137 = load i32, ptr %8, align 4
  switch i32 %137, label %793 [
    i32 0, label %138
    i32 1, label %787
  ]

138:                                              ; preds = %136
  br label %139

139:                                              ; preds = %138, %92
  br label %140

140:                                              ; preds = %775, %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %141 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  %142 = call noundef ptr @_ZN16MacroExpandState8next_entEv(ptr noundef nonnull align 8 dereferenceable(72) %141)
  store ptr %142, ptr %9, align 8, !tbaa !5
  %143 = load ptr, ptr %9, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %146, label %145

145:                                              ; preds = %140
  store i32 7, ptr %8, align 4
  br label %773

146:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %147, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #10
  store i8 1, ptr %11, align 1, !tbaa !64
  br label %148

148:                                              ; preds = %766, %146
  %149 = load i8, ptr %11, align 1, !tbaa !64, !range !65, !noundef !66
  %150 = trunc i8 %149 to i1
  br i1 %150, label %152, label %151

151:                                              ; preds = %148
  store i32 8, ptr %8, align 4
  br label %767

152:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %153 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %153, ptr %12, align 8, !tbaa !5
  br label %154

154:                                              ; preds = %761, %152
  %155 = load i8, ptr %11, align 1, !tbaa !64, !range !65, !noundef !66
  %156 = trunc i8 %155 to i1
  br i1 %156, label %158, label %157

157:                                              ; preds = %154
  store i32 11, ptr %8, align 4
  br label %762

158:                                              ; preds = %154
  %159 = load ptr, ptr %12, align 8, !tbaa !5
  %160 = call noundef i32 @_ZNK17MacroExpansionEnt3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %159)
  switch i32 %160, label %760 [
    i32 0, label %161
    i32 1, label %162
    i32 2, label %361
    i32 3, label %718
  ]

161:                                              ; preds = %158
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.4, i32 noundef 2236, ptr noundef @__PRETTY_FUNCTION__._ZN13MacroExpander12realGetTokenEv) #11
  unreachable

162:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #10
  store i8 1, ptr %13, align 1, !tbaa !64
  br label %163

163:                                              ; preds = %357, %162
  %164 = load i8, ptr %13, align 1, !tbaa !64, !range !65, !noundef !66
  %165 = trunc i8 %164 to i1
  br i1 %165, label %167, label %166

166:                                              ; preds = %163
  store i32 15, ptr %8, align 4
  br label %358

167:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  %169 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK17MacroExpansionEnt8as_TokenEv(ptr noundef nonnull align 8 dereferenceable(168) %168)
  store ptr %169, ptr %14, align 8, !tbaa !5
  br label %170

170:                                              ; preds = %352, %167
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  %172 = load i8, ptr %13, align 1, !tbaa !64, !range !65, !noundef !66
  %173 = trunc i8 %172 to i1
  br i1 %173, label %175, label %174

174:                                              ; preds = %170
  store i32 18, ptr %8, align 4
  br label %353

175:                                              ; preds = %170
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  %177 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %176)
  switch i32 %177, label %333 [
    i32 14, label %178
    i32 15, label %178
    i32 20, label %252
    i32 19, label %252
  ]

178:                                              ; preds = %175, %175
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #10
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  %180 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %179)
  call void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %180)
  %181 = getelementptr inbounds %struct.Ident, ptr %15, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %182 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 13
  invoke void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind writable sret(%"class.Ident::Hygiene") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %183 unwind label %197

183:                                              ; preds = %178
  %184 = invoke noundef zeroext i1 @_ZNK5Ident7HygieneeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %185 unwind label %201

185:                                              ; preds = %183
  br i1 %184, label %190, label %186

186:                                              ; preds = %185
  %187 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 12
  %188 = load i8, ptr %187, align 4, !tbaa !67, !range !65, !noundef !66
  %189 = trunc i8 %188 to i1
  br label %190

190:                                              ; preds = %186, %185
  %191 = phi i1 [ true, %185 ], [ %189, %186 ]
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br i1 %191, label %192, label %210

192:                                              ; preds = %190
  %193 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 13
  %194 = getelementptr inbounds %struct.Ident, ptr %15, i32 0, i32 0
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Ident7HygieneaSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %196 unwind label %206

196:                                              ; preds = %192
  br label %210

197:                                              ; preds = %178
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %6, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %7, align 4
  br label %205

201:                                              ; preds = %183
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %6, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %7, align 4
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %205

205:                                              ; preds = %201, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %251

206:                                              ; preds = %213, %210, %192
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %6, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %7, align 4
  br label %251

210:                                              ; preds = %196, %190
  store i1 false, ptr %17, align 1
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %211)
          to label %213 unwind label %206

213:                                              ; preds = %210
  invoke void @_ZN5IdentC2EOS_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %214 unwind label %206

214:                                              ; preds = %213
  invoke void @_ZN5TokenC1E10eTokenType5Ident(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef %212, ptr noundef %18)
          to label %215 unwind label %237

215:                                              ; preds = %214
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #10
  br label %216

216:                                              ; preds = %215
  %217 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %218 unwind label %241

218:                                              ; preds = %216
  br i1 %217, label %219, label %245

219:                                              ; preds = %218
  %220 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %220, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %222 unwind label %241

222:                                              ; preds = %219
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef @.str.48)
          to label %224 unwind label %241

224:                                              ; preds = %222
  %225 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %226 = load i32, ptr %225, align 8, !tbaa !11
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %223, i32 noundef %226)
          to label %228 unwind label %241

228:                                              ; preds = %224
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @.str.51)
          to label %230 unwind label %241

230:                                              ; preds = %228
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %232 unwind label %241

232:                                              ; preds = %230
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef @_ZSt3decRSt8ios_base)
          to label %234 unwind label %241

234:                                              ; preds = %232
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %236 unwind label %241

236:                                              ; preds = %234
  br label %245

237:                                              ; preds = %214
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %6, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %7, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #10
  br label %251

241:                                              ; preds = %234, %232, %230, %228, %224, %222, %219, %216
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %6, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %7, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %251

245:                                              ; preds = %236, %218
  br label %246

246:                                              ; preds = %245
  br label %247

247:                                              ; preds = %246
  store i1 true, ptr %17, align 1
  store i32 1, ptr %8, align 4
  %248 = load i1, ptr %17, align 1
  br i1 %248, label %250, label %249

249:                                              ; preds = %247
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %250

250:                                              ; preds = %249, %247
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #10
  br label %353

251:                                              ; preds = %241, %237, %206, %205
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #10
  br label %355

252:                                              ; preds = %175, %175
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Token11str_hygieneEv(ptr noundef nonnull align 8 dereferenceable(88) %253)
  call void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %254)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %255 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 13
  invoke void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind writable sret(%"class.Ident::Hygiene") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %255)
          to label %256 unwind label %269

256:                                              ; preds = %252
  %257 = invoke noundef zeroext i1 @_ZNK5Ident7HygieneeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %258 unwind label %273

258:                                              ; preds = %256
  br i1 %257, label %263, label %259

259:                                              ; preds = %258
  %260 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 12
  %261 = load i8, ptr %260, align 4, !tbaa !67, !range !65, !noundef !66
  %262 = trunc i8 %261 to i1
  br label %263

263:                                              ; preds = %259, %258
  %264 = phi i1 [ true, %258 ], [ %262, %259 ]
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br i1 %264, label %265, label %282

265:                                              ; preds = %263
  %266 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 13
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Ident7HygieneaSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %268 unwind label %278

268:                                              ; preds = %265
  br label %282

269:                                              ; preds = %252
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %6, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %7, align 4
  br label %277

273:                                              ; preds = %256
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %6, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %7, align 4
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  br label %277

277:                                              ; preds = %273, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %332

278:                                              ; preds = %288, %285, %282, %265
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %6, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %7, align 4
  br label %332

282:                                              ; preds = %268, %263
  store i1 false, ptr %21, align 1
  %283 = load ptr, ptr %14, align 8, !tbaa !5
  %284 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %283)
          to label %285 unwind label %278

285:                                              ; preds = %282
  %286 = load ptr, ptr %14, align 8, !tbaa !5
  %287 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %286)
          to label %288 unwind label %278

288:                                              ; preds = %285
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %289 unwind label %278

289:                                              ; preds = %288
  invoke void @_ZN5Ident7HygieneC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %290 unwind label %313

290:                                              ; preds = %289
  invoke void @_ZN5TokenC1E10eTokenTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef %284, ptr noundef %22, ptr noundef %23)
          to label %291 unwind label %317

291:                                              ; preds = %290
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  br label %292

292:                                              ; preds = %291
  %293 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %294 unwind label %322

294:                                              ; preds = %292
  br i1 %293, label %295, label %326

295:                                              ; preds = %294
  %296 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %296, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %298 unwind label %322

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

300:                                              ; preds = %298
  %301 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %302 = load i32, ptr %301, align 8, !tbaa !11
  %303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %299, i32 noundef %302)
          to label %304 unwind label %322

304:                                              ; preds = %300
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef @.str.51)
          to label %306 unwind label %322

306:                                              ; preds = %304
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %308 unwind label %322

308:                                              ; preds = %306
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef @_ZSt3decRSt8ios_base)
          to label %310 unwind label %322

310:                                              ; preds = %308
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %312 unwind label %322

312:                                              ; preds = %310
  br label %326

313:                                              ; preds = %289
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %6, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %7, align 4
  br label %321

317:                                              ; preds = %290
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %6, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %7, align 4
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br label %321

321:                                              ; preds = %317, %313
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  br label %332

322:                                              ; preds = %310, %308, %306, %304, %300, %298, %295, %292
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %6, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %7, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %332

326:                                              ; preds = %312, %294
  br label %327

327:                                              ; preds = %326
  br label %328

328:                                              ; preds = %327
  store i1 true, ptr %21, align 1
  store i32 1, ptr %8, align 4
  %329 = load i1, ptr %21, align 1
  br i1 %329, label %331, label %330

330:                                              ; preds = %328
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %331

331:                                              ; preds = %330, %328
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %353

332:                                              ; preds = %322, %321, %278, %277
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %355

333:                                              ; preds = %175
  br label %334

334:                                              ; preds = %333
  %335 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %335, label %336, label %348

336:                                              ; preds = %334
  %337 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %337, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef @.str.48)
  %340 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %341 = load i32, ptr %340, align 8, !tbaa !11
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %339, i32 noundef %341)
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef @.str.52)
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  %345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull align 8 dereferenceable(88) %344)
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef @_ZSt3decRSt8ios_base)
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %348

348:                                              ; preds = %336, %334
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349
  %351 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZNK5Token5cloneEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(88) %351)
  store i32 1, ptr %8, align 4
  br label %353

352:                                              ; No predecessors!
  store i8 0, ptr %13, align 1, !tbaa !64
  br label %170, !llvm.loop !68

353:                                              ; preds = %350, %331, %250, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  %354 = load i32, ptr %8, align 4
  switch i32 %354, label %358 [
    i32 18, label %356
  ]

355:                                              ; preds = %332, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #10
  br label %764

356:                                              ; preds = %353
  br label %357

357:                                              ; preds = %356
  store i8 0, ptr %13, align 1, !tbaa !64
  br label %163, !llvm.loop !70

358:                                              ; preds = %353, %166
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #10
  %359 = load i32, ptr %8, align 4
  switch i32 %359, label %762 [
    i32 15, label %360
  ]

360:                                              ; preds = %358
  br label %760

361:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #10
  store i8 1, ptr %24, align 1, !tbaa !64
  br label %362

362:                                              ; preds = %714, %361
  %363 = load i8, ptr %24, align 1, !tbaa !64, !range !65, !noundef !66
  %364 = trunc i8 %363 to i1
  br i1 %364, label %366, label %365

365:                                              ; preds = %362
  store i32 28, ptr %8, align 4
  br label %715

366:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %367 = load ptr, ptr %12, align 8, !tbaa !5
  %368 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17MacroExpansionEnt13as_NamedValueEv(ptr noundef nonnull align 8 dereferenceable(168) %367)
  store ptr %368, ptr %25, align 8, !tbaa !5
  br label %369

369:                                              ; preds = %709, %366
  %370 = load ptr, ptr %25, align 8, !tbaa !5
  %371 = load i8, ptr %24, align 1, !tbaa !64, !range !65, !noundef !66
  %372 = trunc i8 %371 to i1
  br i1 %372, label %374, label %373

373:                                              ; preds = %369
  store i32 31, ptr %8, align 4
  br label %710

374:                                              ; preds = %369
  %375 = load ptr, ptr %25, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = and i32 %376, -1073741824
  switch i32 %377, label %378 [
    i32 -1073741824, label %395
    i32 -2147483648, label %419
    i32 1073741824, label %459
    i32 0, label %566
  ]

378:                                              ; preds = %374
  br label %379

379:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %26, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %380 = getelementptr inbounds %class.anon.384, ptr %28, i32 0, i32 0
  %381 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %381, ptr %380, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef %27)
          to label %382 unwind label %385

382:                                              ; preds = %379
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  %383 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %383, ptr noundef @.str.8)
          to label %384 unwind label %389

384:                                              ; preds = %382
  call void @__cxa_throw(ptr %383, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

385:                                              ; preds = %379
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %6, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %7, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %712

389:                                              ; preds = %382
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %6, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %7, align 4
  call void @__cxa_free_exception(ptr %383) #10
  br label %712

393:                                              ; No predecessors!
  br label %394

394:                                              ; preds = %393
  br label %395

395:                                              ; preds = %394, %374
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %396 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %30, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #10
  %397 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %31, ptr noundef nonnull align 8 dereferenceable(72) %397)
          to label %398 unwind label %410

398:                                              ; preds = %395
  %399 = load ptr, ptr %25, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = and i32 %400, 1073741823
  %402 = invoke noundef i32 @_ZNK17ParameterMappings18get_variable_countERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %396, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef %401)
          to label %403 unwind label %414

403:                                              ; preds = %398
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  store i32 %402, ptr %29, align 4, !tbaa !9
  %404 = load i32, ptr %29, align 4, !tbaa !9
  %405 = zext i32 %404 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %32, i64 noundef %405, i64 noundef 0)
  %406 = getelementptr inbounds { i64, i64 }, ptr %32, i32 0, i32 0
  %407 = load i64, ptr %406, align 8
  %408 = getelementptr inbounds { i64, i64 }, ptr %32, i32 0, i32 1
  %409 = load i64, ptr %408, align 8
  call void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88) %0, i64 %407, i64 %409, i32 noundef 1)
  store i32 1, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %710

410:                                              ; preds = %395
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %6, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %7, align 4
  br label %418

414:                                              ; preds = %398
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %6, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %7, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  br label %418

418:                                              ; preds = %414, %410
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %712

419:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %420 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %34, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #10
  %421 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %35, ptr noundef nonnull align 8 dereferenceable(72) %421)
          to label %422 unwind label %438

422:                                              ; preds = %419
  %423 = load ptr, ptr %25, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = and i32 %424, 1073741823
  %426 = invoke noundef ptr @_ZN17ParameterMappings3getERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %420, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(24) %35, i32 noundef %425)
          to label %427 unwind label %442

427:                                              ; preds = %422
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  store ptr %426, ptr %33, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %427
  %429 = load ptr, ptr %33, align 8, !tbaa !5
  %430 = icmp ne ptr %429, null
  br i1 %430, label %455, label %431

431:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #10
  %432 = getelementptr inbounds %class.anon.385, ptr %38, i32 0, i32 0
  %433 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %433, ptr %432, align 8, !tbaa !5
  %434 = getelementptr inbounds %class.anon.385, ptr %38, i32 0, i32 1
  store ptr %70, ptr %434, align 8, !tbaa !71
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(16) %38) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %37)
          to label %435 unwind label %447

435:                                              ; preds = %431
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  %436 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %436, ptr noundef @.str.8)
          to label %437 unwind label %451

437:                                              ; preds = %435
  call void @__cxa_throw(ptr %436, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

438:                                              ; preds = %419
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %6, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %7, align 4
  br label %446

442:                                              ; preds = %422
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %6, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %7, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  br label %446

446:                                              ; preds = %442, %438
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %458

447:                                              ; preds = %431
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %6, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %7, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %458

451:                                              ; preds = %435
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %6, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %7, align 4
  call void @__cxa_free_exception(ptr %436) #10
  br label %458

455:                                              ; preds = %428
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  store i32 34, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %708

458:                                              ; preds = %451, %447, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %712

459:                                              ; preds = %374
  %460 = load ptr, ptr %25, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  switch i32 %461, label %548 [
    i32 1073741824, label %462
    i32 1073741825, label %513
  ]

462:                                              ; preds = %459
  br label %463

463:                                              ; preds = %462
  %464 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %464, label %465, label %475

465:                                              ; preds = %463
  %466 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %467 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %466, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %468 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef @.str.48)
  %469 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %470 = load i32, ptr %469, align 8, !tbaa !11
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %468, i32 noundef %470)
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef @.str.53)
  %473 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef @_ZSt3decRSt8ios_base)
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %475

475:                                              ; preds = %465, %463
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  %478 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 3
  %479 = call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef @.str.14)
  br i1 %479, label %480, label %484

480:                                              ; preds = %477
  %481 = call noundef zeroext i1 @_ZNK11TokenStream13edition_afterEN3AST7EditionE(ptr noundef nonnull align 8 dereferenceable(176) %70, i32 noundef 1)
  br i1 %481, label %482, label %483

482:                                              ; preds = %480
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 83)
  store i32 1, ptr %8, align 4
  br label %710

483:                                              ; preds = %480
  br label %512

484:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 88, ptr %39) #10
  %485 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 3
  %486 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %485)
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef %486, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %487 unwind label %493

487:                                              ; preds = %484
  invoke void @_ZN5Ident7HygieneC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %488 unwind label %497

488:                                              ; preds = %487
  invoke void @_ZN5TokenC1E10eTokenTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(88) %39, i32 noundef 19, ptr noundef %40, ptr noundef %42)
          to label %489 unwind label %501

489:                                              ; preds = %488
  %490 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 9
  %491 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %490, ptr noundef nonnull align 8 dereferenceable(88) %39)
          to label %492 unwind label %505

492:                                              ; preds = %489
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #10
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %39) #10
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 34)
  store i32 1, ptr %8, align 4
  br label %710

493:                                              ; preds = %484
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %6, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %7, align 4
  br label %511

497:                                              ; preds = %487
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %6, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %7, align 4
  br label %510

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

505:                                              ; preds = %489
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %6, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %7, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #10
  br label %509

509:                                              ; preds = %505, %501
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br label %510

510:                                              ; preds = %509, %497
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  br label %511

511:                                              ; preds = %510, %493
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %39) #10
  br label %712

512:                                              ; preds = %483
  br label %565

513:                                              ; preds = %459
  br label %514

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #10
  %515 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  call void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %43, ptr noundef nonnull align 8 dereferenceable(72) %515)
  %516 = call noundef zeroext i1 @_ZNKSt6vectorIjSaIjEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  %517 = xor i1 %516, true
  %518 = xor i1 %517, true
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #10
  br i1 %518, label %519, label %531

519:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %44, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 1 dereferenceable(1) %46) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %45)
          to label %520 unwind label %523

520:                                              ; preds = %519
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  %521 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %521, ptr noundef @.str.8)
          to label %522 unwind label %527

522:                                              ; preds = %520
  call void @__cxa_throw(ptr %521, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

523:                                              ; preds = %519
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %6, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %7, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %712

527:                                              ; preds = %520
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %6, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %7, align 4
  call void @__cxa_free_exception(ptr %521) #10
  br label %712

531:                                              ; preds = %514
  br label %532

532:                                              ; preds = %531
  br label %533

533:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #10
  %534 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  call void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %48, ptr noundef nonnull align 8 dereferenceable(72) %534)
  %535 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = zext i32 %536 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %47, i64 noundef %537, i64 noundef 0)
          to label %538 unwind label %544

538:                                              ; preds = %533
  %539 = getelementptr inbounds { i64, i64 }, ptr %47, i32 0, i32 0
  %540 = load i64, ptr %539, align 8
  %541 = getelementptr inbounds { i64, i64 }, ptr %47, i32 0, i32 1
  %542 = load i64, ptr %541, align 8
  invoke void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88) %0, i64 %540, i64 %542, i32 noundef 1)
          to label %543 unwind label %544

543:                                              ; preds = %538
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #10
  store i32 1, ptr %8, align 4
  br label %710

544:                                              ; preds = %538, %533
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %6, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %7, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #10
  br label %712

548:                                              ; preds = %459
  br label %549

549:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %49, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %550 = getelementptr inbounds %class.anon.388, ptr %51, i32 0, i32 0
  %551 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %551, ptr %550, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef %50)
          to label %552 unwind label %555

552:                                              ; preds = %549
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  %553 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %553, ptr noundef @.str.8)
          to label %554 unwind label %559

554:                                              ; preds = %552
  call void @__cxa_throw(ptr %553, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

555:                                              ; preds = %549
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %6, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %7, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %712

559:                                              ; preds = %552
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %6, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %7, align 4
  call void @__cxa_free_exception(ptr %553) #10
  br label %712

563:                                              ; No predecessors!
  br label %564

564:                                              ; preds = %563
  br label %565

565:                                              ; preds = %564, %512
  br label %708

566:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %567 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %53, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #10
  %568 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %54, ptr noundef nonnull align 8 dereferenceable(72) %568)
          to label %569 unwind label %584

569:                                              ; preds = %566
  %570 = load ptr, ptr %25, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = invoke noundef ptr @_ZN17ParameterMappings3getERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %567, ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(24) %54, i32 noundef %571)
          to label %573 unwind label %588

573:                                              ; preds = %569
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  store ptr %572, ptr %52, align 8, !tbaa !5
  br label %574

574:                                              ; preds = %573
  %575 = load ptr, ptr %52, align 8, !tbaa !5
  %576 = icmp ne ptr %575, null
  br i1 %576, label %601, label %577

577:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %55, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #10
  %578 = getelementptr inbounds %class.anon.389, ptr %57, i32 0, i32 0
  %579 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %579, ptr %578, align 8, !tbaa !5
  %580 = getelementptr inbounds %class.anon.389, ptr %57, i32 0, i32 1
  store ptr %70, ptr %580, align 8, !tbaa !73
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef %56)
          to label %581 unwind label %593

581:                                              ; preds = %577
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  %582 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %582, ptr noundef @.str.8)
          to label %583 unwind label %597

583:                                              ; preds = %581
  call void @__cxa_throw(ptr %582, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
  unreachable

584:                                              ; preds = %566
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %6, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %7, align 4
  br label %592

588:                                              ; preds = %569
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %6, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %7, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  br label %592

592:                                              ; preds = %588, %584
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %707

593:                                              ; preds = %577
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %6, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %7, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %707

597:                                              ; preds = %581
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %6, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %7, align 4
  call void @__cxa_free_exception(ptr %582) #10
  br label %707

601:                                              ; preds = %574
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #10
  %604 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %59, ptr noundef nonnull align 8 dereferenceable(176) %70)
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #10
  %605 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 8
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %60, ptr noundef nonnull align 8 dereferenceable(72) %605)
          to label %606 unwind label %632

606:                                              ; preds = %603
  %607 = load ptr, ptr %25, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = invoke noundef zeroext i1 @_ZN17ParameterMappings9dec_countERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %604, ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(24) %60, i32 noundef %608)
          to label %610 unwind label %636

610:                                              ; preds = %606
  %611 = zext i1 %609 to i32
  %612 = icmp eq i32 %611, 0
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  %613 = zext i1 %612 to i8
  store i8 %613, ptr %58, align 1, !tbaa !64
  br label %614

614:                                              ; preds = %610
  %615 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %615, label %616, label %641

616:                                              ; preds = %614
  %617 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %618 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %617, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef @.str.48)
  %620 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %621 = load i32, ptr %620, align 8, !tbaa !11
  %622 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %619, i32 noundef %621)
  %623 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef @.str.54)
  %624 = load ptr, ptr %25, align 8, !tbaa !5
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %623, i32 noundef %625)
  %627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef @.str.55)
  %628 = load ptr, ptr %52, align 8, !tbaa !5
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(16) %628)
  %630 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef @_ZSt3decRSt8ios_base)
  %631 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %630, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %641

632:                                              ; preds = %603
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %6, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %7, align 4
  br label %640

636:                                              ; preds = %606
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %6, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %7, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #10
  br label %640

640:                                              ; preds = %636, %632
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %706

641:                                              ; preds = %616, %614
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  %644 = load ptr, ptr %52, align 8, !tbaa !5
  %645 = getelementptr inbounds %class.InterpolatedFragment, ptr %644, i32 0, i32 0
  %646 = load i32, ptr %645, align 8, !tbaa !75
  %647 = icmp eq i32 %646, 0
  br i1 %647, label %648, label %693

648:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 136, ptr %61) #10
  %649 = load i8, ptr %58, align 1, !tbaa !64, !range !65, !noundef !66
  %650 = trunc i8 %649 to i1
  br i1 %650, label %651, label %654

651:                                              ; preds = %648
  %652 = load ptr, ptr %52, align 8, !tbaa !5
  %653 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN20InterpolatedFragment5as_ttEv(ptr noundef nonnull align 8 dereferenceable(16) %652)
  call void @_ZN9TokenTreeC2EOS_(ptr noundef nonnull align 8 dereferenceable(136) %61, ptr noundef nonnull align 8 dereferenceable(136) %653)
  br label %657

654:                                              ; preds = %648
  %655 = load ptr, ptr %52, align 8, !tbaa !5
  %656 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN20InterpolatedFragment5as_ttEv(ptr noundef nonnull align 8 dereferenceable(16) %655)
  call void @_ZNK9TokenTree5cloneEv(ptr dead_on_unwind writable sret(%class.TokenTree) align 8 %61, ptr noundef nonnull align 8 dereferenceable(136) %656)
  br label %657

657:                                              ; preds = %654, %651
  %658 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 10
  %659 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 384) #13
          to label %660 unwind label %671

660:                                              ; preds = %657
  store i1 true, ptr %65, align 1
  %661 = load ptr, ptr %70, align 8, !tbaa !78
  %662 = getelementptr inbounds ptr, ptr %661, i64 5
  %663 = load ptr, ptr %662, align 8
  invoke void %663(ptr dead_on_unwind writable sret(%struct.Span) align 8 %62, ptr noundef nonnull align 8 dereferenceable(480) %70)
          to label %664 unwind label %675

664:                                              ; preds = %660
  invoke void @_ZN10ParseStateC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %665 unwind label %679

665:                                              ; preds = %664
  invoke void @_ZN9TokenTreeC2EOS_(ptr noundef nonnull align 8 dereferenceable(136) %64, ptr noundef nonnull align 8 dereferenceable(136) %61)
          to label %666 unwind label %679

666:                                              ; preds = %665
  invoke void @_ZN9TTStreamOC1E4Span10ParseState9TokenTree(ptr noundef nonnull align 8 dereferenceable(384) %659, ptr noundef %62, ptr noundef byval(%struct.ParseState) align 8 %63, ptr noundef %64)
          to label %667 unwind label %683

667:                                              ; preds = %666
  store i1 false, ptr %65, align 1
  call void @_ZNSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef %659) #10
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %64) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  %668 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 10
  %669 = call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %668) #10
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %669)
          to label %670 unwind label %671

670:                                              ; preds = %667
  store i32 1, ptr %8, align 4
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %61) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %61) #10
  br label %705

671:                                              ; preds = %667, %657
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %6, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %7, align 4
  br label %692

675:                                              ; preds = %660
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %6, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %7, align 4
  br label %688

679:                                              ; preds = %665, %664
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %6, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %7, align 4
  br label %687

683:                                              ; preds = %666
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %6, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %7, align 4
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %64) #10
  br label %687

687:                                              ; preds = %683, %679
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  br label %688

688:                                              ; preds = %687, %675
  %689 = load i1, ptr %65, align 1
  br i1 %689, label %690, label %691

690:                                              ; preds = %688
  call void @_ZdlPvm(ptr noundef %659, i64 noundef 384) #14
  br label %691

691:                                              ; preds = %690, %688
  br label %692

692:                                              ; preds = %691, %671
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %61) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %61) #10
  br label %706

693:                                              ; preds = %643
  %694 = load i8, ptr %58, align 1, !tbaa !64, !range !65, !noundef !66
  %695 = trunc i8 %694 to i1
  br i1 %695, label %696, label %703

696:                                              ; preds = %693
  %697 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_ZN20InterpolatedFragmentC1EOS_(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(16) %697)
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef %67)
          to label %698 unwind label %699

698:                                              ; preds = %696
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  store i32 1, ptr %8, align 4
  br label %705

699:                                              ; preds = %696
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %6, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %7, align 4
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  br label %706

703:                                              ; preds = %693
  %704 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_ZN5TokenC1ERK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(16) %704)
  store i32 1, ptr %8, align 4
  br label %705

705:                                              ; preds = %703, %698, %670
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %710

706:                                              ; preds = %699, %692, %640
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #10
  br label %707

707:                                              ; preds = %706, %597, %593, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %712

708:                                              ; preds = %565, %457
  br label %709

709:                                              ; preds = %708
  store i8 0, ptr %24, align 1, !tbaa !64
  br label %369, !llvm.loop !80

710:                                              ; preds = %705, %543, %492, %482, %403, %373
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  %711 = load i32, ptr %8, align 4
  switch i32 %711, label %715 [
    i32 31, label %713
  ]

712:                                              ; preds = %707, %559, %555, %544, %527, %523, %511, %458, %418, %389, %385
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #10
  br label %764

713:                                              ; preds = %710
  br label %714

714:                                              ; preds = %713
  store i8 0, ptr %24, align 1, !tbaa !64
  br label %362, !llvm.loop !81

715:                                              ; preds = %710, %365
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #10
  %716 = load i32, ptr %8, align 4
  switch i32 %716, label %762 [
    i32 28, label %717
  ]

717:                                              ; preds = %715
  br label %760

718:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #10
  store i8 1, ptr %68, align 1, !tbaa !64
  br label %719

719:                                              ; preds = %756, %718
  %720 = load i8, ptr %68, align 1, !tbaa !64, !range !65, !noundef !66
  %721 = trunc i8 %720 to i1
  br i1 %721, label %723, label %722

722:                                              ; preds = %719
  store i32 50, ptr %8, align 4
  br label %757

723:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %724 = load ptr, ptr %12, align 8, !tbaa !5
  %725 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK17MacroExpansionEnt7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(168) %724)
  store ptr %725, ptr %69, align 8, !tbaa !5
  br label %726

726:                                              ; preds = %752, %723
  %727 = load ptr, ptr %69, align 8, !tbaa !5
  %728 = load i8, ptr %68, align 1, !tbaa !64, !range !65, !noundef !66
  %729 = trunc i8 %728 to i1
  br i1 %729, label %731, label %730

730:                                              ; preds = %726
  store i32 53, ptr %8, align 4
  br label %753

731:                                              ; preds = %726
  br label %732

732:                                              ; preds = %731
  %733 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %733, label %734, label %747

734:                                              ; preds = %732
  %735 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %736 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %735, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %737 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %736, ptr noundef @.str.48)
  %738 = getelementptr inbounds %class.MacroExpander, ptr %70, i32 0, i32 1
  %739 = load i32, ptr %738, align 8, !tbaa !11
  %740 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %737, i32 noundef %739)
  %741 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %740, ptr noundef @.str.56)
  %742 = load ptr, ptr %69, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.MacroExpansionEnt::Data_Loop", ptr %742, i32 0, i32 1
  %744 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef nonnull align 8 dereferenceable(88) %743)
  %745 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef @_ZSt3decRSt8ios_base)
  %746 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %747

747:                                              ; preds = %734, %732
  br label %748

748:                                              ; preds = %747
  br label %749

749:                                              ; preds = %748
  %750 = load ptr, ptr %69, align 8, !tbaa !5
  %751 = getelementptr inbounds %"struct.MacroExpansionEnt::Data_Loop", ptr %750, i32 0, i32 1
  call void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(88) %751)
  store i32 1, ptr %8, align 4
  br label %753

752:                                              ; No predecessors!
  store i8 0, ptr %68, align 1, !tbaa !64
  br label %726, !llvm.loop !82

753:                                              ; preds = %749, %730
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  %754 = load i32, ptr %8, align 4
  switch i32 %754, label %757 [
    i32 53, label %755
  ]

755:                                              ; preds = %753
  br label %756

756:                                              ; preds = %755
  store i8 0, ptr %68, align 1, !tbaa !64
  br label %719, !llvm.loop !83

757:                                              ; preds = %753, %722
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #10
  %758 = load i32, ptr %8, align 4
  switch i32 %758, label %762 [
    i32 50, label %759
  ]

759:                                              ; preds = %757
  br label %760

760:                                              ; preds = %759, %717, %360, %158
  br label %761

761:                                              ; preds = %760
  store i8 0, ptr %11, align 1, !tbaa !64
  br label %154, !llvm.loop !84

762:                                              ; preds = %757, %715, %358, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  %763 = load i32, ptr %8, align 4
  switch i32 %763, label %767 [
    i32 11, label %765
  ]

764:                                              ; preds = %712, %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %788

765:                                              ; preds = %762
  br label %766

766:                                              ; preds = %765
  store i8 0, ptr %11, align 1, !tbaa !64
  br label %148, !llvm.loop !85

767:                                              ; preds = %762, %151
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #10
  %768 = load i32, ptr %8, align 4
  switch i32 %768, label %770 [
    i32 8, label %769
  ]

769:                                              ; preds = %767
  store i32 0, ptr %8, align 4
  br label %770

770:                                              ; preds = %769, %767
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  %771 = load i32, ptr %8, align 4
  switch i32 %771, label %773 [
    i32 0, label %772
  ]

772:                                              ; preds = %770
  store i32 0, ptr %8, align 4
  br label %773

773:                                              ; preds = %772, %770, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %774 = load i32, ptr %8, align 4
  switch i32 %774, label %793 [
    i32 0, label %775
    i32 7, label %776
    i32 1, label %787
  ]

775:                                              ; preds = %773
  br label %140, !llvm.loop !86

776:                                              ; preds = %773
  br label %777

777:                                              ; preds = %776
  %778 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %778, label %779, label %785

779:                                              ; preds = %777
  %780 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %781 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %780, ptr noundef @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %782 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %781, ptr noundef @.str.57)
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %782, ptr noundef @_ZSt3decRSt8ios_base)
  %784 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %783, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %785

785:                                              ; preds = %779, %777
  br label %786

786:                                              ; preds = %785
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 1)
  br label %787

787:                                              ; preds = %786, %773, %136, %90
  ret void

788:                                              ; preds = %764, %120
  %789 = load ptr, ptr %6, align 8
  %790 = load i32, ptr %7, align 4
  %791 = insertvalue { ptr, i32 } poison, ptr %789, 0
  %792 = insertvalue { ptr, i32 } %791, i32 %790, 1
  resume { ptr, i32 } %792

793:                                              ; preds = %773, %136
  unreachable
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind noalias writable sret(%"class.Ident::Hygiene") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK5Token5cloneEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(88)) #0

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

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

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

declare void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88), i64, i64, i32 noundef) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK9TokenTree5cloneEv(ptr dead_on_unwind writable sret(%class.TokenTree) align 8, ptr noundef nonnull align 8 dereferenceable(136)) #0

declare void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #0

declare void @_ZN5TokenC1ERK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 176}
!12 = !{!"_ZTS13MacroExpander", !13, i64 0, !10, i64 176, !20, i64 184, !21, i64 192, !20, i64 200, !29, i64 208, !35, i64 216, !49, i64 296, !15, i64 368, !58, i64 456, !29, i64 464, !14, i64 468, !22, i64 472}
!13 = !{!"_ZTS11TokenStream", !14, i64 8, !15, i64 16, !22, i64 104, !29, i64 112, !30, i64 120, !34, i64 144}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS5Token", !16, i64 8, !17, i64 16, !19, i64 56, !22, i64 80}
!16 = !{!"_ZTS10eTokenType", !7, i64 0}
!17 = !{!"_ZTSN5Token4DataE", !18, i64 0, !7, i64 8}
!18 = !{!"_ZTSN5Token4Data3TagE", !7, i64 0}
!19 = !{!"_ZTS8Position", !20, i64 0, !21, i64 8, !10, i64 16, !10, i64 20}
!20 = !{!"_ZTS4Span", !6, i64 0}
!21 = !{!"_ZTS8RcString", !6, i64 0}
!22 = !{!"_ZTSN5Ident7HygieneE", !23, i64 0}
!23 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !25, i64 0}
!25 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !26, i64 0}
!26 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !27, i64 0}
!27 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !28, i64 0}
!28 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !6, i64 0}
!29 = !{!"_ZTSN3AST7EditionE", !7, i64 0}
!30 = !{!"_ZTSSt6vectorIN11TokenStream12LookaheadEntESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTS10ParseState", !14, i64 0, !14, i64 1, !14, i64 2, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!"_ZTS17ParameterMappings", !36, i64 0, !45, i64 48, !10, i64 72}
!36 = !{!"_ZTSSt3mapIjS_ISt6vectorIjSaIjEEjSt4lessIS2_ESaISt4pairIKS2_jEEES3_IjESaIS5_IKjS9_EEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjSt3mapISt6vectorIjSaIjEEjSt4lessIS5_ESaIS0_IKS5_jEEEESt10_Select1stISC_ES6_IjESaISC_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjSt3mapISt6vectorIjSaIjEEjSt4lessIS5_ESaIS0_IKS5_jEEEESt10_Select1stISC_ES6_IjESaISC_EE13_Rb_tree_implISF_Lb1EEE", !39, i64 0, !41, i64 8}
!39 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !40, i64 0}
!40 = !{!"_ZTSSt4lessIjE"}
!41 = !{!"_ZTSSt15_Rb_tree_header", !42, i64 0, !44, i64 32}
!42 = !{!"_ZTSSt18_Rb_tree_node_base", !43, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!43 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!44 = !{!"long", !7, i64 0}
!45 = !{!"_ZTSSt6vectorIN17ParameterMappings11CapturedVarESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTS16MacroExpandState", !6, i64 0, !6, i64 8, !50, i64 16, !54, i64 40, !6, i64 64}
!50 = !{!"_ZTSSt6vectorIN16MacroExpandState8t_offsetESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSSt6vectorIjSaIjEE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE", !59, i64 0}
!59 = !{!"_ZTSSt15__uniq_ptr_dataI9TTStreamOSt14default_deleteIS0_ELb1ELb1EE", !60, i64 0}
!60 = !{!"_ZTSSt15__uniq_ptr_implI9TTStreamOSt14default_deleteIS0_EE", !61, i64 0}
!61 = !{!"_ZTSSt5tupleIJP9TTStreamOSt14default_deleteIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSSt11_Tuple_implILm0EJP9TTStreamOSt14default_deleteIS0_EEE", !63, i64 0}
!63 = !{!"_ZTSSt10_Head_baseILm0EP9TTStreamOLb0EE", !6, i64 0}
!64 = !{!14, !14, i64 0}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = !{!12, !14, i64 468}
!68 = distinct !{!68, !69}
!69 = !{!"llvm.loop.mustprogress"}
!70 = distinct !{!70, !69}
!71 = !{!72, !6, i64 8}
!72 = !{!"_ZTSZN13MacroExpander12realGetTokenEvE3$_1", !6, i64 0, !6, i64 8}
!73 = !{!74, !6, i64 8}
!74 = !{!"_ZTSZN13MacroExpander12realGetTokenEvE3$_4", !6, i64 0, !6, i64 8}
!75 = !{!76, !77, i64 0}
!76 = !{!"_ZTS20InterpolatedFragment", !77, i64 0, !6, i64 8}
!77 = !{!"_ZTSN20InterpolatedFragment4TypeE", !7, i64 0}
!78 = !{!79, !79, i64 0}
!79 = !{!"vtable pointer", !8, i64 0}
!80 = distinct !{!80, !69}
!81 = distinct !{!81, !69}
!82 = distinct !{!82, !69}
!83 = distinct !{!83, !69}
!84 = distinct !{!84, !69}
!85 = distinct !{!85, !69}
!86 = distinct !{!86, !69}


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

%struct.Span = type { ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.42 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.42 = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.38" }
%"struct.std::_Head_base.38" = type { ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%class.U128 = type { i64, i64 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.385 = type { ptr, ptr }
%"class.std::allocator.39" = type { i8 }
%class.anon.386 = type { i8 }
%class.anon.388 = type { ptr }
%class.anon.389 = type { ptr, ptr }
%class.TokenTree = type { ptr, i32, %"class.Ident::Hygiene", %class.Token, %"class.std::vector.71" }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl" = type { %"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TokenTree, std::allocator<TokenTree>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.InterpolatedFragment = type { i32, ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.12 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [1 x i8], align 1
@__FUNCTION__._ZN13MacroExpander12realGetTokenEv = external hidden unnamed_addr constant [13 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__._ZN13MacroExpander12realGetTokenEv = external hidden unnamed_addr constant [44 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [4 x i8], align 1

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #0

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

declare void @_ZN20InterpolatedFragmentC1EOS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #0

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #8

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #9

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #0

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

declare void @_ZN9TTStreamOC1E4Span10ParseState9TokenTree(ptr noundef nonnull align 8 dereferenceable(384), ptr noundef, ptr noundef byval(%struct.ParseState) align 8, ptr noundef) unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13MacroExpander12realGetTokenEv(ptr dead_on_unwind noalias writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(480) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.Ident, align 8
  %4 = alloca %"class.Ident::Hygiene", align 8
  %5 = alloca %struct.Ident, align 8
  %6 = alloca %"class.Ident::Hygiene", align 8
  %7 = alloca %"class.Ident::Hygiene", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.Ident::Hygiene", align 8
  %10 = alloca %struct.Span, align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca %class.U128, align 8
  %13 = alloca %struct.Span, align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.385, align 8
  %18 = alloca %class.Token, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.39", align 1
  %21 = alloca %"class.Ident::Hygiene", align 8
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca %struct.Span, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.386, align 1
  %26 = alloca %class.U128, align 8
  %27 = alloca %"class.std::vector", align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.388, align 8
  %31 = alloca %struct.Span, align 8
  %32 = alloca %"class.std::vector", align 8
  %33 = alloca %struct.Span, align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.389, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %class.TokenTree, align 8
  %39 = alloca %struct.Span, align 8
  %40 = alloca %struct.ParseState, align 8
  %41 = alloca %class.TokenTree, align 8
  %42 = alloca %class.InterpolatedFragment, align 8
  %43 = getelementptr inbounds i8, ptr %1, i64 368
  %44 = tail call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %43)
  %.not = icmp eq i32 %44, 0
  br i1 %.not, label %59, label %45

45:                                               ; preds = %2
  %46 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %46, label %47, label %58

47:                                               ; preds = %45
  %48 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %49 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %48, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %50 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull @.str.48)
  %51 = getelementptr inbounds i8, ptr %1, i64 176
  %52 = load i32, ptr %51, align 8, !tbaa !9
  %53 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef %52)
  %54 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull @.str.49)
  %55 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(88) %43)
  %56 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %57 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %58

58:                                               ; preds = %45, %47
  tail call void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(88) %43)
  br label %.critedge156

59:                                               ; preds = %2
  %60 = getelementptr inbounds i8, ptr %1, i64 456
  %61 = tail call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  %.not118 = icmp eq ptr %61, null
  br i1 %.not118, label %87, label %62

62:                                               ; preds = %59
  %63 = tail call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  tail call void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %63)
  %64 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %65 unwind label %83

65:                                               ; preds = %62
  br i1 %64, label %66, label %85

66:                                               ; preds = %65
  %67 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %67, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %69 unwind label %83

69:                                               ; preds = %66
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @.str.48)
          to label %71 unwind label %83

71:                                               ; preds = %69
  %72 = getelementptr inbounds i8, ptr %1, i64 176
  %73 = load i32, ptr %72, align 8, !tbaa !9
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef %73)
          to label %75 unwind label %83

75:                                               ; preds = %71
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull @.str.50)
          to label %77 unwind label %83

77:                                               ; preds = %75
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %79 unwind label %83

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %81 unwind label %83

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %85 unwind label %83

83:                                               ; preds = %81, %79, %77, %75, %71, %69, %66, %62
  %84 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %412

85:                                               ; preds = %81, %65
  %86 = tail call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
  %.not119.not.not = icmp eq i32 %86, 1
  br i1 %.not119.not.not, label %.critedge156.thread, label %.critedge156

.critedge156.thread:                              ; preds = %85
  tail call void @_ZNSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef null) #10
  tail call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %87

87:                                               ; preds = %.critedge156.thread, %59
  %88 = getelementptr inbounds i8, ptr %1, i64 296
  %89 = tail call noundef ptr @_ZN16MacroExpandState8next_entEv(ptr noundef nonnull align 8 dereferenceable(72) %88)
  %.not120220 = icmp eq ptr %89, null
  br i1 %.not120220, label %._crit_edge, label %.preheader176.lr.ph

.preheader176.lr.ph:                              ; preds = %87
  %90 = getelementptr inbounds i8, ptr %1, i64 176
  %91 = getelementptr inbounds i8, ptr %1, i64 192
  %92 = getelementptr inbounds i8, ptr %1, i64 216
  br label %.lr.ph218

.loopexit175:                                     ; preds = %.lr.ph218, %261, %232
  %93 = call noundef ptr @_ZN16MacroExpandState8next_entEv(ptr noundef nonnull align 8 dereferenceable(72) %88)
  %.not120 = icmp eq ptr %93, null
  br i1 %.not120, label %._crit_edge, label %.lr.ph218

.lr.ph218:                                        ; preds = %.loopexit175, %.preheader176.lr.ph
  %94 = phi ptr [ %89, %.preheader176.lr.ph ], [ %93, %.loopexit175 ]
  %95 = call noundef i32 @_ZNK17MacroExpansionEnt3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %94)
  switch i32 %95, label %.loopexit175 [
    i32 0, label %96
    i32 1, label %97
    i32 2, label %.lr.ph
    i32 3, label %388
  ]

96:                                               ; preds = %.lr.ph218
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.4, i32 noundef 2236, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN13MacroExpander12realGetTokenEv) #11
  unreachable

97:                                               ; preds = %.lr.ph218
  %98 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK17MacroExpansionEnt8as_TokenEv(ptr noundef nonnull align 8 dereferenceable(168) %94)
  %99 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %98)
  switch i32 %99, label %195 [
    i32 14, label %100
    i32 15, label %100
    i32 20, label %147
    i32 19, label %147
  ]

100:                                              ; preds = %97, %97
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #10
  %101 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %98)
  call void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %101)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  %102 = getelementptr inbounds i8, ptr %1, i64 472
  invoke void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind nonnull writable sret(%"class.Ident::Hygiene") align 8 %4, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %103 unwind label %112

103:                                              ; preds = %100
  %104 = invoke noundef zeroext i1 @_ZNK5Ident7HygieneeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %105 unwind label %114

105:                                              ; preds = %103
  br i1 %104, label %.critedge, label %106

106:                                              ; preds = %105
  %107 = getelementptr inbounds i8, ptr %1, i64 468
  %108 = load i8, ptr %107, align 4, !tbaa !63, !range !64, !noundef !65
  %109 = trunc nuw i8 %108 to i1
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br i1 %109, label %110, label %119

.critedge:                                        ; preds = %105
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %110

110:                                              ; preds = %.critedge, %106
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Ident7HygieneaSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %119 unwind label %117

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

114:                                              ; preds = %103
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  br label %116

116:                                              ; preds = %114, %112
  %.pn148 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %146

117:                                              ; preds = %119, %110
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %146

119:                                              ; preds = %110, %106
  %120 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %98)
  invoke void @_ZN5IdentC2EOS_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %121 unwind label %117

121:                                              ; preds = %119
  invoke void @_ZN5TokenC1E10eTokenType5Ident(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef %120, ptr noundef nonnull %5)
          to label %122 unwind label %141

122:                                              ; preds = %121
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  %123 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %124 unwind label %143

124:                                              ; preds = %122
  br i1 %123, label %125, label %145

125:                                              ; preds = %124
  %126 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %126, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %128 unwind label %143

128:                                              ; preds = %125
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.48)
          to label %130 unwind label %143

130:                                              ; preds = %128
  %131 = load i32, ptr %90, align 8, !tbaa !9
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %129, i32 noundef %131)
          to label %133 unwind label %143

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

135:                                              ; preds = %133
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %137 unwind label %143

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

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

141:                                              ; preds = %121
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  br label %146

143:                                              ; preds = %139, %137, %135, %133, %130, %128, %125, %122
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %146

145:                                              ; preds = %124, %139
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #10
  br label %.critedge156

146:                                              ; preds = %143, %141, %117, %116
  %.pn150 = phi { ptr, i32 } [ %144, %143 ], [ %142, %141 ], [ %118, %117 ], [ %.pn148, %116 ]
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #10
  br label %412

147:                                              ; preds = %97, %97
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Token11str_hygieneEv(ptr noundef nonnull align 8 dereferenceable(88) %98)
  call void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %148)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %149 = getelementptr inbounds i8, ptr %1, i64 472
  invoke void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind nonnull writable sret(%"class.Ident::Hygiene") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %150 unwind label %159

150:                                              ; preds = %147
  %151 = invoke noundef zeroext i1 @_ZNK5Ident7HygieneeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %152 unwind label %161

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

153:                                              ; preds = %152
  %154 = getelementptr inbounds i8, ptr %1, i64 468
  %155 = load i8, ptr %154, align 4, !tbaa !63, !range !64, !noundef !65
  %156 = trunc nuw i8 %155 to i1
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  br i1 %156, label %157, label %166

.critedge10:                                      ; preds = %152
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  br label %157

157:                                              ; preds = %.critedge10, %153
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Ident7HygieneaSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %166 unwind label %164

159:                                              ; preds = %147
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %163

161:                                              ; preds = %150
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br label %163

163:                                              ; preds = %161, %159
  %.pn144 = phi { ptr, i32 } [ %162, %161 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  br label %194

164:                                              ; preds = %166, %157
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %194

166:                                              ; preds = %157, %153
  %167 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %98)
  %168 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %98)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %168)
          to label %169 unwind label %164

169:                                              ; preds = %166
  call void @_ZN5Ident7HygieneC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %6)
  invoke void @_ZN5TokenC1E10eTokenTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef %167, ptr noundef nonnull %8, ptr noundef nonnull %9)
          to label %170 unwind label %189

170:                                              ; preds = %169
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  %171 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %172 unwind label %191

172:                                              ; preds = %170
  br i1 %171, label %173, label %193

173:                                              ; preds = %172
  %174 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %174, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
          to label %176 unwind label %191

176:                                              ; preds = %173
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull @.str.48)
          to label %178 unwind label %191

178:                                              ; preds = %176
  %179 = load i32, ptr %90, align 8, !tbaa !9
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %177, i32 noundef %179)
          to label %181 unwind label %191

181:                                              ; preds = %178
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull @.str.51)
          to label %183 unwind label %191

183:                                              ; preds = %181
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(88) %0)
          to label %185 unwind label %191

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

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %193 unwind label %191

189:                                              ; preds = %169
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  br label %194

191:                                              ; preds = %187, %185, %183, %181, %178, %176, %173, %170
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %0) #10
  br label %194

193:                                              ; preds = %172, %187
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %.critedge156

194:                                              ; preds = %191, %189, %164, %163
  %.pn146 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ], [ %165, %164 ], [ %.pn144, %163 ]
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %412

195:                                              ; preds = %97
  %196 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %196, label %197, label %207

197:                                              ; preds = %195
  %198 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %198, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull @.str.48)
  %201 = load i32, ptr %90, align 8, !tbaa !9
  %202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %200, i32 noundef %201)
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull @.str.52)
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(88) %98)
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %207

207:                                              ; preds = %197, %195
  call void @_ZNK5Token5cloneEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(88) %98)
  br label %.critedge156

.lr.ph:                                           ; preds = %.lr.ph218
  %208 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17MacroExpansionEnt13as_NamedValueEv(ptr noundef nonnull align 8 dereferenceable(168) %94)
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = lshr i32 %209, 30
  %211 = xor i32 %210, 2
  switch i32 %211, label %default.unreachable [
    i32 1, label %212
    i32 0, label %227
    i32 3, label %247
    i32 2, label %310
  ]

default.unreachable:                              ; preds = %.lr.ph
  unreachable

212:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %10, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #10
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %11, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %213 unwind label %222

213:                                              ; preds = %212
  %214 = load i32, ptr %208, align 4, !tbaa !5
  %215 = and i32 %214, 1073741823
  %216 = invoke noundef i32 @_ZNK17ParameterMappings18get_variable_countERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %92, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %215)
          to label %217 unwind label %224

217:                                              ; preds = %213
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  %218 = zext i32 %216 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %218, i64 noundef 0)
  %219 = load i64, ptr %12, align 8
  %220 = getelementptr inbounds i8, ptr %12, i64 8
  %221 = load i64, ptr %220, align 8
  call void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88) %0, i64 %219, i64 %221, i32 noundef 1)
  br label %.critedge156

222:                                              ; preds = %212
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %213
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  br label %226

226:                                              ; preds = %224, %222
  %.pn141 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br label %412

227:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #10
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %14, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %228 unwind label %238

228:                                              ; preds = %227
  %229 = load i32, ptr %208, align 4, !tbaa !5
  %230 = and i32 %229, 1073741823
  %231 = invoke noundef ptr @_ZN17ParameterMappings3getERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %92, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef %230)
          to label %232 unwind label %240

232:                                              ; preds = %228
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  %.not138 = icmp eq ptr %231, null
  br i1 %.not138, label %233, label %.loopexit175

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  store ptr %208, ptr %17, align 8, !tbaa !66
  %234 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %1, ptr %234, align 8, !tbaa !67
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(16) %17) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %16)
          to label %235 unwind label %243

235:                                              ; preds = %233
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  %236 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef nonnull @.str.8)
          to label %237 unwind label %245

237:                                              ; preds = %235
  call void @__cxa_throw(ptr nonnull %236, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
  unreachable

238:                                              ; preds = %227
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %242

240:                                              ; preds = %228
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  br label %242

242:                                              ; preds = %240, %238
  %.pn136 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  br label %412

243:                                              ; preds = %233
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %412

245:                                              ; preds = %235
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %236) #10
  br label %412

247:                                              ; preds = %.lr.ph
  switch i32 %209, label %302 [
    i32 1073741824, label %248
    i32 1073741825, label %282
  ]

248:                                              ; preds = %247
  %249 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %249, label %250, label %259

250:                                              ; preds = %248
  %251 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %251, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull @.str.48)
  %254 = load i32, ptr %90, align 8, !tbaa !9
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %253, i32 noundef %254)
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull @.str.53)
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %259

259:                                              ; preds = %250, %248
  %260 = call noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull @.str.14)
  br i1 %260, label %261, label %264

261:                                              ; preds = %259
  %262 = call noundef zeroext i1 @_ZNK11TokenStream13edition_afterEN3AST7EditionE(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1)
  br i1 %262, label %263, label %.loopexit175

263:                                              ; preds = %261
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 83)
  br label %.critedge156

264:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %18) #10
  %265 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %91)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %265, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %266 unwind label %271

266:                                              ; preds = %264
  invoke void @_ZN5Ident7HygieneC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %267 unwind label %273

267:                                              ; preds = %266
  invoke void @_ZN5TokenC1E10eTokenTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(88) %18, i32 noundef 19, ptr noundef nonnull %19, ptr noundef nonnull %21)
          to label %268 unwind label %275

268:                                              ; preds = %267
  %269 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %43, ptr noundef nonnull align 8 dereferenceable(88) %18)
          to label %270 unwind label %277

270:                                              ; preds = %268
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #10
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #10
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 34)
  br label %.critedge156

271:                                              ; preds = %264
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %281

273:                                              ; preds = %266
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %280

275:                                              ; preds = %267
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %279

277:                                              ; preds = %268
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #10
  br label %279

279:                                              ; preds = %277, %275
  %.pn132 = phi { ptr, i32 } [ %278, %277 ], [ %276, %275 ]
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br label %280

280:                                              ; preds = %279, %273
  %.pn132.pn = phi { ptr, i32 } [ %.pn132, %279 ], [ %274, %273 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %281

281:                                              ; preds = %280, %271
  %.pn132.pn.pn = phi { ptr, i32 } [ %.pn132.pn, %280 ], [ %272, %271 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #10
  br label %412

282:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #10
  call void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %22, ptr noundef nonnull align 8 dereferenceable(72) %88)
  %283 = call noundef zeroext i1 @_ZNKSt6vectorIjSaIjEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #10
  br i1 %283, label %284, label %292

284:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %23, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %24)
          to label %285 unwind label %288

285:                                              ; preds = %284
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  %286 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %286, ptr noundef nonnull @.str.8)
          to label %287 unwind label %290

287:                                              ; preds = %285
  call void @__cxa_throw(ptr nonnull %286, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
  unreachable

288:                                              ; preds = %284
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %412

290:                                              ; preds = %285
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %286) #10
  br label %412

292:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #10
  call void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %27, ptr noundef nonnull align 8 dereferenceable(72) %88)
  %293 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  %294 = load i32, ptr %293, align 4, !tbaa !5
  %295 = zext i32 %294 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %26, i64 noundef %295, i64 noundef 0)
  %296 = load i64, ptr %26, align 8
  %297 = getelementptr inbounds i8, ptr %26, i64 8
  %298 = load i64, ptr %297, align 8
  invoke void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88) %0, i64 %296, i64 %298, i32 noundef 1)
          to label %299 unwind label %300

299:                                              ; preds = %292
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  br label %.critedge156

300:                                              ; preds = %292
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  br label %412

302:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %28, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  store ptr %208, ptr %30, align 8, !tbaa !66
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull %29)
          to label %303 unwind label %306

303:                                              ; preds = %302
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  %304 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %304, ptr noundef nonnull @.str.8)
          to label %305 unwind label %308

305:                                              ; preds = %303
  call void @__cxa_throw(ptr nonnull %304, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
  unreachable

306:                                              ; preds = %302
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  br label %412

308:                                              ; preds = %303
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %304) #10
  br label %412

310:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %31, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #10
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %32, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %311 unwind label %320

311:                                              ; preds = %310
  %312 = load i32, ptr %208, align 4, !tbaa !5
  %313 = invoke noundef ptr @_ZN17ParameterMappings3getERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %92, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(24) %32, i32 noundef %312)
          to label %314 unwind label %322

314:                                              ; preds = %311
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  %.not122 = icmp eq ptr %313, null
  br i1 %.not122, label %315, label %329

315:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %33, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #10
  store ptr %208, ptr %35, align 8, !tbaa !66
  %316 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %1, ptr %316, align 8, !tbaa !69
  call void @"_ZNSt8functionIFvRSoEEC2IZN13MacroExpander12realGetTokenEvE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(16) %35) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %34)
          to label %317 unwind label %325

317:                                              ; preds = %315
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  %318 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %318, ptr noundef nonnull @.str.8)
          to label %319 unwind label %327

319:                                              ; preds = %317
  call void @__cxa_throw(ptr nonnull %318, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
  unreachable

320:                                              ; preds = %310
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %324

322:                                              ; preds = %311
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  br label %324

324:                                              ; preds = %322, %320
  %.pn = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  br label %412

325:                                              ; preds = %315
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  br label %412

327:                                              ; preds = %317
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %318) #10
  br label %412

329:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  call void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #10
  invoke void @_ZNK16MacroExpandState10iterationsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %37, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %330 unwind label %348

330:                                              ; preds = %329
  %331 = load i32, ptr %208, align 4, !tbaa !5
  %332 = invoke noundef zeroext i1 @_ZN17ParameterMappings9dec_countERK4SpanRKSt6vectorIjSaIjEEj(ptr noundef nonnull align 8 dereferenceable(76) %92, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(24) %37, i32 noundef %331)
          to label %333 unwind label %350

333:                                              ; preds = %330
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  %334 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %334, label %335, label %353

335:                                              ; preds = %333
  %336 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %336, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull @.str.48)
  %339 = load i32, ptr %90, align 8, !tbaa !9
  %340 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %338, i32 noundef %339)
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull @.str.54)
  %342 = load i32, ptr %208, align 4, !tbaa !5
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %341, i32 noundef %342)
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull @.str.55)
  %345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull align 8 dereferenceable(16) %313)
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %353

348:                                              ; preds = %329
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %352

350:                                              ; preds = %330
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  br label %352

352:                                              ; preds = %350, %348
  %.pn123 = phi { ptr, i32 } [ %351, %350 ], [ %349, %348 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  br label %412

353:                                              ; preds = %335, %333
  %354 = load i32, ptr %313, align 8, !tbaa !71
  %355 = icmp eq i32 %354, 0
  br i1 %355, label %356, label %382

356:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %38) #10
  %357 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN20InterpolatedFragment5as_ttEv(ptr noundef nonnull align 8 dereferenceable(16) %313)
  br i1 %332, label %359, label %358

358:                                              ; preds = %356
  call void @_ZN9TokenTreeC2EOS_(ptr noundef nonnull align 8 dereferenceable(136) %38, ptr noundef nonnull align 8 dereferenceable(136) %357)
  br label %360

359:                                              ; preds = %356
  call void @_ZNK9TokenTree5cloneEv(ptr dead_on_unwind nonnull writable sret(%class.TokenTree) align 8 %38, ptr noundef nonnull align 8 dereferenceable(136) %357)
  br label %360

360:                                              ; preds = %359, %358
  %361 = invoke noalias noundef nonnull dereferenceable(384) ptr @_Znwm(i64 noundef 384) #13
          to label %362 unwind label %371

362:                                              ; preds = %360
  %363 = load ptr, ptr %1, align 8, !tbaa !74
  %364 = getelementptr inbounds i8, ptr %363, i64 40
  %365 = load ptr, ptr %364, align 8
  invoke void %365(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %39, ptr noundef nonnull align 8 dereferenceable(480) %1)
          to label %366 unwind label %373

366:                                              ; preds = %362
  call void @_ZN10ParseStateC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40)
  invoke void @_ZN9TokenTreeC2EOS_(ptr noundef nonnull align 8 dereferenceable(136) %41, ptr noundef nonnull align 8 dereferenceable(136) %38)
          to label %367 unwind label %375

367:                                              ; preds = %366
  invoke void @_ZN9TTStreamOC1E4Span10ParseState9TokenTree(ptr noundef nonnull align 8 dereferenceable(384) %361, ptr noundef nonnull %39, ptr noundef nonnull byval(%struct.ParseState) align 8 %40, ptr noundef nonnull %41)
          to label %368 unwind label %377

368:                                              ; preds = %367
  call void @_ZNSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE5resetEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull %361) #10
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %41) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  %369 = call noundef ptr @_ZNKSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %369)
          to label %370 unwind label %371

370:                                              ; preds = %368
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %38) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %38) #10
  br label %.critedge156

371:                                              ; preds = %368, %360
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %381

373:                                              ; preds = %362
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %380

375:                                              ; preds = %366
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %379

377:                                              ; preds = %367
  %378 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %41) #10
  br label %379

379:                                              ; preds = %377, %375
  %.pn125 = phi { ptr, i32 } [ %378, %377 ], [ %376, %375 ]
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  br label %380

380:                                              ; preds = %373, %379
  %.pn125.pn = phi { ptr, i32 } [ %.pn125, %379 ], [ %374, %373 ]
  call void @_ZdlPvm(ptr noundef nonnull %361, i64 noundef 384) #14
  br label %381

381:                                              ; preds = %380, %371
  %.pn128 = phi { ptr, i32 } [ %372, %371 ], [ %.pn125.pn, %380 ]
  call void @_ZN9TokenTreeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %38) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %38) #10
  br label %412

382:                                              ; preds = %353
  br i1 %332, label %387, label %383

383:                                              ; preds = %382
  call void @_ZN20InterpolatedFragmentC1EOS_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %313)
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull %42)
          to label %384 unwind label %385

384:                                              ; preds = %383
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  br label %.critedge156

385:                                              ; preds = %383
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  br label %412

387:                                              ; preds = %382
  call void @_ZN5TokenC1ERK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(16) %313)
  br label %.critedge156

388:                                              ; preds = %.lr.ph218
  %389 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK17MacroExpansionEnt7as_LoopEv(ptr noundef nonnull align 8 dereferenceable(168) %94)
  %390 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %390, label %391, label %402

391:                                              ; preds = %388
  %392 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %393 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %392, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %393, ptr noundef nonnull @.str.48)
  %395 = load i32, ptr %90, align 8, !tbaa !9
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %394, i32 noundef %395)
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull @.str.56)
  %398 = getelementptr inbounds i8, ptr %389, i64 24
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK5Token(ptr noundef nonnull align 8 dereferenceable(8) %397, ptr noundef nonnull align 8 dereferenceable(88) %398)
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %402

402:                                              ; preds = %391, %388
  %403 = getelementptr inbounds i8, ptr %389, i64 24
  call void @_ZN5TokenC1ERKS_(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 8 dereferenceable(88) %403)
  br label %.critedge156

._crit_edge:                                      ; preds = %.loopexit175, %87
  %404 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %404, label %405, label %411

405:                                              ; preds = %._crit_edge
  %406 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %406, ptr noundef nonnull @__FUNCTION__._ZN13MacroExpander12realGetTokenEv)
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %407, ptr noundef nonnull @.str.57)
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %411

411:                                              ; preds = %._crit_edge, %405
  call void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %0, i32 noundef 1)
  br label %.critedge156

.critedge156:                                     ; preds = %217, %263, %270, %299, %387, %384, %370, %207, %193, %145, %402, %85, %411, %58
  ret void

412:                                              ; preds = %194, %146, %324, %325, %327, %385, %381, %352, %242, %243, %245, %308, %306, %300, %290, %288, %281, %226, %83
  %.pn128.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %84, %83 ], [ %.pn146, %194 ], [ %.pn150, %146 ], [ %309, %308 ], [ %307, %306 ], [ %291, %290 ], [ %289, %288 ], [ %301, %300 ], [ %.pn132.pn.pn, %281 ], [ %.pn141, %226 ], [ %246, %245 ], [ %244, %243 ], [ %.pn136, %242 ], [ %328, %327 ], [ %326, %325 ], [ %.pn, %324 ], [ %.pn128, %381 ], [ %386, %385 ], [ %.pn123, %352 ]
  resume { ptr, i32 } %.pn128.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5Ident7Hygiene10get_parentEv(ptr dead_on_unwind noalias writable sret(%"class.Ident::Hygiene") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK5Token5cloneEv(ptr dead_on_unwind writable sret(%class.Token) align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #0

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

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

declare void @_ZN5TokenC1E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(88), i64, i64, i32 noundef) unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK9TokenTree5cloneEv(ptr dead_on_unwind writable sret(%class.TokenTree) align 8, ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #0

declare void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #0

declare void @_ZN5TokenC1ERK20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 176}
!10 = !{!"_ZTS13MacroExpander", !11, i64 0, !6, i64 176, !18, i64 184, !20, i64 192, !18, i64 200, !28, i64 208, !34, i64 216, !48, i64 296, !13, i64 368, !57, i64 456, !28, i64 464, !12, i64 468, !21, i64 472}
!11 = !{!"_ZTS11TokenStream", !12, i64 8, !13, i64 16, !21, i64 104, !28, i64 112, !29, i64 120, !33, i64 144}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS5Token", !14, i64 8, !15, i64 16, !17, i64 56, !21, i64 80}
!14 = !{!"_ZTS10eTokenType", !7, i64 0}
!15 = !{!"_ZTSN5Token4DataE", !16, i64 0, !7, i64 8}
!16 = !{!"_ZTSN5Token4Data3TagE", !7, i64 0}
!17 = !{!"_ZTS8Position", !18, i64 0, !20, i64 8, !6, i64 16, !6, i64 20}
!18 = !{!"_ZTS4Span", !19, i64 0}
!19 = !{!"any pointer", !7, i64 0}
!20 = !{!"_ZTS8RcString", !19, i64 0}
!21 = !{!"_ZTSN5Ident7HygieneE", !22, i64 0}
!22 = !{!"_ZTSSt10unique_ptrIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataIN5Ident7Hygiene5InnerESt14default_deleteIS2_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implIN5Ident7Hygiene5InnerESt14default_deleteIS2_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJPN5Ident7Hygiene5InnerESt14default_deleteIS2_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EPN5Ident7Hygiene5InnerELb0EE", !19, i64 0}
!28 = !{!"_ZTSN3AST7EditionE", !7, i64 0}
!29 = !{!"_ZTSSt6vectorIN11TokenStream12LookaheadEntESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN11TokenStream12LookaheadEntESaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!33 = !{!"_ZTS10ParseState", !12, i64 0, !12, i64 1, !12, i64 2, !19, i64 8, !19, i64 16, !19, i64 24}
!34 = !{!"_ZTS17ParameterMappings", !35, i64 0, !44, i64 48, !6, i64 72}
!35 = !{!"_ZTSSt3mapIjS_ISt6vectorIjSaIjEEjSt4lessIS2_ESaISt4pairIKS2_jEEES3_IjESaIS5_IKjS9_EEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjSt3mapISt6vectorIjSaIjEEjSt4lessIS5_ESaIS0_IKS5_jEEEESt10_Select1stISC_ES6_IjESaISC_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjSt3mapISt6vectorIjSaIjEEjSt4lessIS5_ESaIS0_IKS5_jEEEESt10_Select1stISC_ES6_IjESaISC_EE13_Rb_tree_implISF_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessIjE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !43, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = !{!"_ZTSSt6vectorIN17ParameterMappings11CapturedVarESaIS1_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN17ParameterMappings11CapturedVarESaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!48 = !{!"_ZTS16MacroExpandState", !19, i64 0, !19, i64 8, !49, i64 16, !53, i64 40, !19, i64 64}
!49 = !{!"_ZTSSt6vectorIN16MacroExpandState8t_offsetESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN16MacroExpandState8t_offsetESaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!53 = !{!"_ZTSSt6vectorIjSaIjEE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!57 = !{!"_ZTSSt10unique_ptrI9TTStreamOSt14default_deleteIS0_EE", !58, i64 0}
!58 = !{!"_ZTSSt15__uniq_ptr_dataI9TTStreamOSt14default_deleteIS0_ELb1ELb1EE", !59, i64 0}
!59 = !{!"_ZTSSt15__uniq_ptr_implI9TTStreamOSt14default_deleteIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt5tupleIJP9TTStreamOSt14default_deleteIS0_EEE", !61, i64 0}
!61 = !{!"_ZTSSt11_Tuple_implILm0EJP9TTStreamOSt14default_deleteIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSSt10_Head_baseILm0EP9TTStreamOLb0EE", !19, i64 0}
!63 = !{!10, !12, i64 468}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = !{!19, !19, i64 0}
!67 = !{!68, !19, i64 8}
!68 = !{!"_ZTSZN13MacroExpander12realGetTokenEvE3$_1", !19, i64 0, !19, i64 8}
!69 = !{!70, !19, i64 8}
!70 = !{!"_ZTSZN13MacroExpander12realGetTokenEvE3$_4", !19, i64 0, !19, i64 8}
!71 = !{!72, !73, i64 0}
!72 = !{!"_ZTS20InterpolatedFragment", !73, i64 0, !19, i64 8}
!73 = !{!"_ZTSN20InterpolatedFragment4TypeE", !7, i64 0}
!74 = !{!75, !75, i64 0}
!75 = !{!"vtable pointer", !8, i64 0}


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