; LLVM IR from thepowersgang/mrustc :: src/parse/expr.ll (Z19Parse_ExprVal_InnerR11TokenStream)

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

%class.RcString = type { ptr }
%"class.AST::ExprNodeP" = type { ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = 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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::unique_ptr.18" = type { %"struct.std::__uniq_ptr_data.19" }
%"struct.std::__uniq_ptr_data.19" = type { %"class.std::__uniq_ptr_impl.20" }
%"class.std::__uniq_ptr_impl.20" = type { %"class.std::tuple.21" }
%"class.std::tuple.21" = type { %"struct.std::_Tuple_impl.22" }
%"struct.std::_Tuple_impl.22" = type { %"struct.std::_Head_base.25" }
%"struct.std::_Head_base.25" = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.92", %"class.std::unique_ptr.100", %"class.std::vector.87" }
%"class.std::unique_ptr.92" = type { %"struct.std::__uniq_ptr_data.93" }
%"struct.std::__uniq_ptr_data.93" = type { %"class.std::__uniq_ptr_impl.94" }
%"class.std::__uniq_ptr_impl.94" = type { %"class.std::tuple.95" }
%"class.std::tuple.95" = type { %"struct.std::_Tuple_impl.96" }
%"struct.std::_Tuple_impl.96" = type { %"struct.std::_Head_base.99" }
%"struct.std::_Head_base.99" = type { ptr }
%"class.std::unique_ptr.100" = type { %"struct.std::__uniq_ptr_data.101" }
%"struct.std::__uniq_ptr_data.101" = type { %"class.std::__uniq_ptr_impl.102" }
%"class.std::__uniq_ptr_impl.102" = type { %"class.std::tuple.103" }
%"class.std::tuple.103" = type { %"struct.std::_Tuple_impl.104" }
%"struct.std::_Tuple_impl.104" = type { %"struct.std::_Head_base.107" }
%"struct.std::_Head_base.107" = type { ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.108", %"struct.AST::PathBinding.109" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.108" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.109" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.146", %"class.std::vector.146", %"class.std::vector.151" }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%class.U128 = type { i64, i64 }
%"class.std::allocator" = type { i8 }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.156", i8, [7 x i8] }>
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.89" = type { i8 }
%"class.AST::PathParamEnt" = type { i32, %"union.AST::PathParamEnt::DataUnion" }
%"union.AST::PathParamEnt::DataUnion" = type { %"struct.std::pair.192" }
%"struct.std::pair.192" = type { %class.RcString, %"class.AST::Path" }
%class.anon.194 = type { ptr, ptr }
%class.SavedParseState = type { ptr, %struct.ParseState }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__func__._Z19Parse_ExprVal_InnerR11TokenStream = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self = external hidden global %class.RcString, align 8
@_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self = external hidden global i64, align 8
@.str.17 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #5

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

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

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

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

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

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

declare noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #5

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

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

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

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

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

declare void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.18") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #5

declare void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #5

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) #8

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

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

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

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

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

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

declare void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind writable sret(%"class.AST::Path") align 8, ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88)) #1 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z19Parse_ExprVal_InnerR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1) #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %class.Token, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.AST::Path", align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca %class.Token, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::unique_ptr.18", align 8
  %14 = alloca %class.Token, align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca %struct.Ident, align 8
  %17 = alloca %"class.AST::ExprNodeP", align 8
  %18 = alloca i1, align 1
  %19 = alloca %struct.Ident, align 8
  %20 = alloca %struct.Ident, align 8
  %21 = alloca %class.Token, align 8
  %22 = alloca %struct.Ident, align 8
  %23 = alloca %struct.Ident, align 8
  %24 = alloca %"class.AST::Path", align 8
  %25 = alloca %class.RcString, align 8
  %26 = alloca i1, align 1
  %27 = alloca %class.Token, align 8
  %28 = alloca %"class.AST::Path", align 8
  %29 = alloca %class.Token, align 8
  %30 = alloca %"class.AST::Path", align 8
  %31 = alloca %class.Token, align 8
  %32 = alloca %"class.std::vector.5", align 8
  %33 = alloca i1, align 1
  %34 = alloca %"class.AST::Path", align 8
  %35 = alloca %class.Token, align 8
  %36 = alloca %"class.AST::Path", align 8
  %37 = alloca i1, align 1
  %38 = alloca %class.Token, align 8
  %39 = alloca %class.Token, align 8
  %40 = alloca i1, align 1
  %41 = alloca %class.Token, align 8
  %42 = alloca %class.Token, align 8
  %43 = alloca i1, align 1
  %44 = alloca %class.TypeRef, align 8
  %45 = alloca %"class.std::vector.5", align 8
  %46 = alloca %class.Token, align 8
  %47 = alloca %class.Token, align 8
  %48 = alloca i1, align 1
  %49 = alloca %class.Token, align 8
  %50 = alloca %class.Token, align 8
  %51 = alloca i1, align 1
  %52 = alloca %"class.AST::ExprNodeP", align 8
  %53 = alloca %class.U128, align 8
  %54 = alloca %class.Token, align 8
  %55 = alloca %class.Token, align 8
  %56 = alloca i1, align 1
  %57 = alloca %"class.AST::ExprNodeP", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator", align 1
  %60 = alloca %"class.Ident::Hygiene", align 8
  %61 = alloca i1, align 1
  %62 = alloca %class.Token, align 8
  %63 = alloca %class.Token, align 8
  %64 = alloca i1, align 1
  %65 = alloca %"class.AST::Path", align 8
  %66 = alloca %class.RcString, align 8
  %67 = alloca %"class.std::vector.87", align 8
  %68 = alloca %"class.std::initializer_list", align 8
  %69 = alloca [1 x %"class.AST::PathNode"], align 8
  %70 = alloca ptr, align 8
  %71 = alloca %class.RcString, align 8
  %72 = alloca %"struct.AST::PathParams", align 8
  %73 = alloca i1, align 1
  %74 = alloca %"class.std::allocator.89", align 1
  %75 = alloca %"class.AST::PathParamEnt", align 8
  %76 = alloca %class.TypeRef, align 8
  %77 = alloca ptr, align 8
  %78 = alloca %struct.Span, align 8
  %79 = alloca %"class.std::function", align 8
  %80 = alloca %class.anon.194, align 8
  %81 = alloca %class.Token, align 8
  %82 = alloca %"class.AST::Path", align 8
  %83 = alloca i1, align 1
  %84 = alloca %class.Token, align 8
  %85 = alloca %class.U128, align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.Ident::Hygiene", align 8
  %88 = alloca i1, align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca i1, align 1
  %91 = alloca %class.Token, align 8
  %92 = alloca %"class.std::vector.5", align 8
  %93 = alloca i1, align 1
  %94 = alloca %class.SavedParseState, align 8
  %95 = alloca %struct.ParseState, align 8
  %96 = alloca %class.Token, align 8
  %97 = alloca i1, align 1
  %98 = alloca %class.Token, align 8
  %99 = alloca %"class.std::vector.5", align 8
  %100 = alloca %class.Token, align 8
  %101 = alloca %class.Token, align 8
  %102 = alloca %"class.AST::ExprNodeP", align 8
  %103 = alloca %class.Token, align 8
  %104 = alloca %"class.AST::ExprNodeP", align 8
  %105 = alloca %"class.std::vector.5", align 8
  %106 = alloca i1, align 1
  %107 = alloca %class.Token, align 8
  %108 = alloca i1, align 1
  %109 = alloca %class.Token, align 8
  %110 = alloca %"class.std::vector.5", align 8
  %111 = alloca i1, align 1
  %112 = alloca %class.SavedParseState, align 8
  %113 = alloca %struct.ParseState, align 8
  %114 = alloca %class.Token, align 8
  %115 = alloca %"class.AST::ExprNodeP", align 8
  %116 = alloca %class.Token, align 8
  %117 = alloca %"class.AST::ExprNodeP", align 8
  %118 = alloca %class.Token, align 8
  %119 = alloca %class.Token, align 8
  %120 = alloca i1, align 1
  %121 = alloca %"class.AST::ExprNodeP", align 8
  %122 = alloca %"class.AST::ExprNodeP", align 8
  %123 = alloca i1, align 1
  %124 = alloca %"class.std::vector.5", align 8
  %125 = alloca %class.Token, align 8
  %126 = alloca %class.Token, align 8
  %127 = alloca %"class.AST::ExprNodeP", align 8
  %128 = alloca %class.Token, align 8
  %129 = alloca %class.Token, align 8
  %130 = alloca i1, align 1
  %131 = alloca %"class.std::vector.5", align 8
  %132 = alloca i1, align 1
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %5) #0
  %133 = call noundef zeroext i1 @_Z13debug_enabledv()
  %134 = zext i1 %133 to i64
  %135 = select i1 %133, ptr @__func__._Z19Parse_ExprVal_InnerR11TokenStream, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %135)
  call void @llvm.lifetime.start.p0(i64 88, ptr %6) #0
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %136 unwind label %144

136:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 240, ptr %9) #0
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %137 unwind label %148

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 88, ptr %10) #0
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %10, ptr noundef nonnull align 8 dereferenceable(176) %138)
          to label %139 unwind label %152

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %10)
          to label %141 unwind label %156

141:                                              ; preds = %139
  %142 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %140)
          to label %143 unwind label %156

143:                                              ; preds = %141
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %10) #0
  switch i32 %142, label %1823 [
    i32 25, label %161
    i32 8, label %175
    i32 10, label %175
    i32 105, label %182
    i32 106, label %182
    i32 103, label %182
    i32 104, label %182
    i32 15, label %192
    i32 98, label %202
    i32 99, label %228
    i32 100, label %236
    i32 125, label %244
    i32 102, label %247
    i32 95, label %296
    i32 96, label %299
    i32 81, label %302
    i32 79, label %310
    i32 111, label %318
    i32 64, label %362
    i32 27, label %362
    i32 83, label %362
    i32 112, label %362
    i32 34, label %362
    i32 14, label %362
    i32 5, label %362
    i32 80, label %1154
    i32 113, label %1154
    i32 37, label %1154
    i32 63, label %1154
    i32 22, label %1164
    i32 16, label %1174
    i32 18, label %1196
    i32 19, label %1210
    i32 20, label %1239
    i32 110, label %1260
    i32 109, label %1270
    i32 23, label %1280
    i32 29, label %1517
  ]

144:                                              ; preds = %2
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %7, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %8, align 4
  br label %1834

148:                                              ; preds = %136
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %7, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %8, align 4
  br label %1833

152:                                              ; preds = %137
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %7, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %8, align 4
  br label %160

156:                                              ; preds = %141, %139
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %7, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #0
  br label %160

160:                                              ; preds = %156, %152
  call void @llvm.lifetime.end.p0(i64 88, ptr %10) #0
  br label %1832

161:                                              ; preds = %143
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %11, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %163 unwind label %167

163:                                              ; preds = %161
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %162, ptr noundef %11)
          to label %164 unwind label %171

164:                                              ; preds = %163
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %11) #0
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %165)
          to label %166 unwind label %167

166:                                              ; preds = %164
  store i32 1, ptr %12, align 4
  br label %1831

167:                                              ; preds = %1826, %1525, %1313, %1299, %1297, %1295, %1292, %1289, %1274, %1270, %1264, %1260, %1239, %1210, %1204, %1196, %1190, %1174, %1168, %1164, %1157, %1154, %1131, %1128, %618, %616, %614, %612, %610, %608, %605, %602, %589, %587, %554, %552, %550, %548, %546, %544, %541, %538, %525, %523, %520, %497, %494, %488, %486, %484, %481, %478, %469, %460, %436, %433, %425, %391, %389, %387, %385, %382, %380, %378, %376, %373, %370, %362, %332, %318, %310, %302, %299, %296, %291, %285, %281, %279, %275, %263, %259, %257, %253, %244, %236, %228, %202, %195, %192, %185, %182, %175, %164, %161
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %7, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %8, align 4
  br label %1832

171:                                              ; preds = %163
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %7, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %11) #0
  br label %1832

175:                                              ; preds = %143, %143
  invoke void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.18") align 8 %13, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %176 unwind label %167

176:                                              ; preds = %175
  invoke void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %13)
          to label %177 unwind label %178

177:                                              ; preds = %176
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #0
  store i32 1, ptr %12, align 4
  br label %1831

178:                                              ; preds = %176
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %7, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %8, align 4
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #0
  br label %1832

182:                                              ; preds = %143, %143, %143, %143
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %14, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %184 unwind label %167

184:                                              ; preds = %182
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %183, ptr noundef %14)
          to label %185 unwind label %188

185:                                              ; preds = %184
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #0
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z10Parse_StmtR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %186)
          to label %187 unwind label %167

187:                                              ; preds = %185
  store i32 1, ptr %12, align 4
  br label %1831

188:                                              ; preds = %184
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %7, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #0
  br label %1832

192:                                              ; preds = %143
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %15, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %194 unwind label %167

194:                                              ; preds = %192
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %193, ptr noundef %15)
          to label %195 unwind label %198

195:                                              ; preds = %194
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #0
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockLineR11TokenStreamPb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %196, ptr noundef null)
          to label %197 unwind label %167

197:                                              ; preds = %195
  store i32 1, ptr %12, align 4
  br label %1831

198:                                              ; preds = %194
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %7, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #0
  br label %1832

202:                                              ; preds = %143
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 624) #12
          to label %205 unwind label %167

205:                                              ; preds = %202
  store i1 true, ptr %18, align 1
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef @.str.9)
          to label %206 unwind label %211

206:                                              ; preds = %205
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %207)
          to label %208 unwind label %215

208:                                              ; preds = %206
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %204, ptr noundef %16, ptr noundef %17)
          to label %209 unwind label %219

209:                                              ; preds = %208
  store i1 false, ptr %18, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %203, ptr noundef %204)
          to label %210 unwind label %219

210:                                              ; preds = %209
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #0
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #0
  store i32 1, ptr %12, align 4
  br label %1831

211:                                              ; preds = %205
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %7, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %8, align 4
  br label %224

215:                                              ; preds = %206
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %7, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %8, align 4
  br label %223

219:                                              ; preds = %209, %208
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %7, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #0
  br label %223

223:                                              ; preds = %219, %215
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #0
  br label %224

224:                                              ; preds = %223, %211
  %225 = load i1, ptr %18, align 1
  br i1 %225, label %226, label %227

226:                                              ; preds = %224
  call void @_ZdlPvm(ptr noundef %204, i64 noundef 624) #13
  br label %227

227:                                              ; preds = %226, %224
  br label %1832

228:                                              ; preds = %143
  %229 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef @.str.9)
          to label %230 unwind label %167

230:                                              ; preds = %228
  invoke void @_Z15Parse_WhileStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %229, ptr noundef %19)
          to label %231 unwind label %232

231:                                              ; preds = %230
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #0
  store i32 1, ptr %12, align 4
  br label %1831

232:                                              ; preds = %230
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %7, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %8, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #0
  br label %1832

236:                                              ; preds = %143
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef @.str.9)
          to label %238 unwind label %167

238:                                              ; preds = %236
  invoke void @_Z13Parse_ForStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %237, ptr noundef %20)
          to label %239 unwind label %240

239:                                              ; preds = %238
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #0
  store i32 1, ptr %12, align 4
  br label %1831

240:                                              ; preds = %238
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %7, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %8, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #0
  br label %1832

244:                                              ; preds = %143
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z14Parse_Expr_TryR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %245)
          to label %246 unwind label %167

246:                                              ; preds = %244
  store i32 1, ptr %12, align 4
  br label %1831

247:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 88, ptr %21) #0
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %248)
          to label %249 unwind label %266

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %21)
          to label %251 unwind label %270

251:                                              ; preds = %249
  %252 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %250)
          to label %253 unwind label %270

253:                                              ; preds = %251
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %21) #0
  %254 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %255 unwind label %167

255:                                              ; preds = %253
  %256 = icmp eq i32 %254, 14
  br i1 %256, label %257, label %275

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %259 unwind label %167

259:                                              ; preds = %257
  %260 = getelementptr inbounds %struct.Ident, ptr %258, i32 0, i32 1
  %261 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef @.str.15)
          to label %262 unwind label %167

262:                                              ; preds = %259
  br i1 %261, label %263, label %275

263:                                              ; preds = %262
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z14Parse_Expr_TryR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %264)
          to label %265 unwind label %167

265:                                              ; preds = %263
  store i32 1, ptr %12, align 4
  br label %1831

266:                                              ; preds = %247
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %7, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %8, align 4
  br label %274

270:                                              ; preds = %251, %249
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %7, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %21) #0
  br label %274

274:                                              ; preds = %270, %266
  call void @llvm.lifetime.end.p0(i64 88, ptr %21) #0
  br label %1832

275:                                              ; preds = %262, %255
  %276 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %277 unwind label %167

277:                                              ; preds = %275
  %278 = icmp eq i32 %276, 14
  br i1 %278, label %279, label %288

279:                                              ; preds = %277
  %280 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %281 unwind label %167

281:                                              ; preds = %279
  %282 = getelementptr inbounds %struct.Ident, ptr %280, i32 0, i32 1
  %283 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef @.str.16)
          to label %284 unwind label %167

284:                                              ; preds = %281
  br i1 %283, label %285, label %288

285:                                              ; preds = %284
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z17Parse_FlowControlR11TokenStreamN3AST13ExprNode_Flow4TypeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %286, i32 noundef 4)
          to label %287 unwind label %167

287:                                              ; preds = %285
  store i32 1, ptr %12, align 4
  br label %1831

288:                                              ; preds = %284, %277
  %289 = call ptr @__cxa_allocate_exception(i64 96) #0
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %289, ptr noundef nonnull align 8 dereferenceable(176) %290, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %291 unwind label %292

291:                                              ; preds = %288
  invoke void @__cxa_throw(ptr %289, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %167

292:                                              ; preds = %288
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %7, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %8, align 4
  call void @__cxa_free_exception(ptr %289) #0
  br label %1832

296:                                              ; preds = %143
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z16Parse_Expr_MatchR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %297)
          to label %298 unwind label %167

298:                                              ; preds = %296
  store i32 1, ptr %12, align 4
  br label %1831

299:                                              ; preds = %143
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z12Parse_IfStmtR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %300)
          to label %301 unwind label %167

301:                                              ; preds = %299
  store i32 1, ptr %12, align 4
  br label %1831

302:                                              ; preds = %143
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef @.str.9)
          to label %304 unwind label %167

304:                                              ; preds = %302
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %303, i32 noundef 1, ptr noundef %22)
          to label %305 unwind label %306

305:                                              ; preds = %304
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #0
  store i32 1, ptr %12, align 4
  br label %1831

306:                                              ; preds = %304
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %7, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %8, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #0
  br label %1832

310:                                              ; preds = %143
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef @.str.9)
          to label %312 unwind label %167

312:                                              ; preds = %310
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %311, i32 noundef 2, ptr noundef %23)
          to label %313 unwind label %314

313:                                              ; preds = %312
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #0
  store i32 1, ptr %12, align 4
  br label %1831

314:                                              ; preds = %312
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %7, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %8, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #0
  br label %1832

318:                                              ; preds = %143
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %319, i32 noundef 0)
          to label %321 unwind label %167

321:                                              ; preds = %318
  %322 = icmp ne i32 %320, 34
  br i1 %322, label %323, label %361

323:                                              ; preds = %321
  %324 = load atomic i8, ptr @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self acquire, align 8
  %325 = icmp eq i8 %324, 0
  br i1 %325, label %326, label %332, !prof !9

326:                                              ; preds = %323
  %327 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #0
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %332

329:                                              ; preds = %326
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self, ptr noundef @.str.17)
          to label %330 unwind label %340

330:                                              ; preds = %329
  %331 = call i32 @__cxa_atexit(ptr @_ZN8RcStringD1Ev, ptr @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #0
  br label %332

332:                                              ; preds = %330, %326, %323
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 280) #12
          to label %335 unwind label %167

335:                                              ; preds = %332
  store i1 true, ptr %26, align 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self)
          to label %336 unwind label %344

336:                                              ; preds = %335
  invoke void @_ZN3AST4PathC2E8RcString(ptr noundef nonnull align 8 dereferenceable(240) %24, ptr noundef %25)
          to label %337 unwind label %348

337:                                              ; preds = %336
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %334, ptr noundef %24)
          to label %338 unwind label %352

338:                                              ; preds = %337
  store i1 false, ptr %26, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %333, ptr noundef %334)
          to label %339 unwind label %352

339:                                              ; preds = %338
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %24) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  store i32 1, ptr %12, align 4
  br label %1831

340:                                              ; preds = %329
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %7, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %8, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #0
  br label %1832

344:                                              ; preds = %335
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %7, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %8, align 4
  br label %357

348:                                              ; preds = %336
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %7, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %8, align 4
  br label %356

352:                                              ; preds = %338, %337
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %7, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %24) #0
  br label %356

356:                                              ; preds = %352, %348
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  br label %357

357:                                              ; preds = %356, %344
  %358 = load i1, ptr %26, align 1
  br i1 %358, label %359, label %360

359:                                              ; preds = %357
  call void @_ZdlPvm(ptr noundef %334, i64 noundef 280) #13
  br label %360

360:                                              ; preds = %359, %357
  br label %1832

361:                                              ; preds = %321
  br label %362

362:                                              ; preds = %361, %143, %143, %143, %143, %143, %143, %143
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %27, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %364 unwind label %167

364:                                              ; preds = %362
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %363, ptr noundef %27)
          to label %365 unwind label %394

365:                                              ; preds = %364
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #0
  call void @llvm.lifetime.start.p0(i64 240, ptr %28) #0
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind writable sret(%"class.AST::Path") align 8 %28, ptr noundef nonnull align 8 dereferenceable(176) %366, i32 noundef 1)
          to label %367 unwind label %398

367:                                              ; preds = %365
  %368 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %9, ptr noundef nonnull align 8 dereferenceable(240) %28)
          to label %369 unwind label %402

369:                                              ; preds = %367
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #0
  call void @llvm.lifetime.end.p0(i64 240, ptr %28) #0
  br label %370

370:                                              ; preds = %369
  %371 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %372 unwind label %167

372:                                              ; preds = %370
  br i1 %371, label %373, label %407

373:                                              ; preds = %372
  %374 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %374, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %376 unwind label %167

376:                                              ; preds = %373
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %375, ptr noundef @.str.18)
          to label %378 unwind label %167

378:                                              ; preds = %376
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %380 unwind label %167

380:                                              ; preds = %378
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef @.str.19)
          to label %382 unwind label %167

382:                                              ; preds = %380
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %383, i32 noundef 0)
          to label %385 unwind label %167

385:                                              ; preds = %382
  %386 = invoke noundef ptr @_ZN5Token7typestrE10eTokenType(i32 noundef %384)
          to label %387 unwind label %167

387:                                              ; preds = %385
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef %386)
          to label %389 unwind label %167

389:                                              ; preds = %387
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef @_ZSt3decRSt8ios_base)
          to label %391 unwind label %167

391:                                              ; preds = %389
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %393 unwind label %167

393:                                              ; preds = %391
  br label %407

394:                                              ; preds = %364
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %7, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #0
  br label %1832

398:                                              ; preds = %365
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %7, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %8, align 4
  br label %406

402:                                              ; preds = %367
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %7, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #0
  br label %406

406:                                              ; preds = %402, %398
  call void @llvm.lifetime.end.p0(i64 240, ptr %28) #0
  br label %1832

407:                                              ; preds = %393, %372
  br label %408

408:                                              ; preds = %407
  br label %409

409:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 88, ptr %29) #0
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %29, ptr noundef nonnull align 8 dereferenceable(176) %410)
          to label %411 unwind label %416

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %29)
          to label %413 unwind label %420

413:                                              ; preds = %411
  %414 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %412)
          to label %415 unwind label %420

415:                                              ; preds = %413
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %29) #0
  switch i32 %414, label %1128 [
    i32 43, label %425
    i32 23, label %433
    i32 25, label %460
    i32 21, label %520
  ]

416:                                              ; preds = %409
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %7, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %8, align 4
  br label %424

420:                                              ; preds = %413, %411
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %7, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #0
  br label %424

424:                                              ; preds = %420, %416
  call void @llvm.lifetime.end.p0(i64 88, ptr %29) #0
  br label %1832

425:                                              ; preds = %415
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %30, ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %427 unwind label %167

427:                                              ; preds = %425
  invoke void @_Z15Parse_ExprMacroR11TokenStreamN3AST4PathE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %426, ptr noundef %30)
          to label %428 unwind label %429

428:                                              ; preds = %427
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #0
  store i32 1, ptr %12, align 4
  br label %1831

429:                                              ; preds = %427
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %7, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %30) #0
  br label %1832

433:                                              ; preds = %415
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %31, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %435 unwind label %167

435:                                              ; preds = %433
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %434, ptr noundef %31)
          to label %436 unwind label %444

436:                                              ; preds = %435
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #0
  %437 = load ptr, ptr %4, align 8, !tbaa !5
  %438 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 304) #12
          to label %439 unwind label %167

439:                                              ; preds = %436
  store i1 true, ptr %33, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #0
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind writable sret(%"class.std::vector.5") align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %440)
          to label %441 unwind label %448

441:                                              ; preds = %439
  invoke void @_ZN3AST17ExprNode_CallPathC2EONS_4PathEOSt6vectorINS_9ExprNodePESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(304) %438, ptr noundef nonnull align 8 dereferenceable(240) %9, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %442 unwind label %452

442:                                              ; preds = %441
  store i1 false, ptr %33, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %437, ptr noundef %438)
          to label %443 unwind label %452

443:                                              ; preds = %442
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #0
  store i32 1, ptr %12, align 4
  br label %1831

444:                                              ; preds = %435
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %7, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #0
  br label %1832

448:                                              ; preds = %439
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %7, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %8, align 4
  br label %456

452:                                              ; preds = %442, %441
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %7, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %8, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #0
  br label %456

456:                                              ; preds = %452, %448
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #0
  %457 = load i1, ptr %33, align 1
  br i1 %457, label %458, label %459

458:                                              ; preds = %456
  call void @_ZdlPvm(ptr noundef %438, i64 noundef 304) #13
  br label %459

459:                                              ; preds = %458, %456
  br label %1832

460:                                              ; preds = %415
  %461 = load ptr, ptr %4, align 8, !tbaa !5
  %462 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %461)
          to label %463 unwind label %167

463:                                              ; preds = %460
  %464 = getelementptr inbounds %struct.ParseState, ptr %462, i32 0, i32 0
  %465 = load i8, ptr %464, align 8, !tbaa !12, !range !15, !noundef !16
  %466 = trunc i8 %465 to i1
  %467 = zext i1 %466 to i32
  %468 = icmp eq i32 %467, 1
  br i1 %468, label %477, label %469

469:                                              ; preds = %463
  %470 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %34, ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %471 unwind label %167

471:                                              ; preds = %469
  invoke void @_Z27Parse_ExprVal_StructLiteralR11TokenStreamN3AST4PathE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %470, ptr noundef %34)
          to label %472 unwind label %473

472:                                              ; preds = %471
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %34) #0
  store i32 1, ptr %12, align 4
  br label %1831

473:                                              ; preds = %471
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %7, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %34) #0
  br label %1832

477:                                              ; preds = %463
  br label %478

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

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

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

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

486:                                              ; preds = %484
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %485, ptr noundef @_ZSt3decRSt8ios_base)
          to label %488 unwind label %167

488:                                              ; preds = %486
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %490 unwind label %167

490:                                              ; preds = %488
  br label %491

491:                                              ; preds = %490, %480
  br label %492

492:                                              ; preds = %491
  br label %493

493:                                              ; preds = %492
  br label %494

494:                                              ; preds = %493
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %35, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %496 unwind label %167

496:                                              ; preds = %494
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %495, ptr noundef %35)
          to label %497 unwind label %504

497:                                              ; preds = %496
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #0
  %498 = load ptr, ptr %4, align 8, !tbaa !5
  %499 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 280) #12
          to label %500 unwind label %167

500:                                              ; preds = %497
  store i1 true, ptr %37, align 1
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %36, ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %501 unwind label %508

501:                                              ; preds = %500
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %499, ptr noundef %36)
          to label %502 unwind label %512

502:                                              ; preds = %501
  store i1 false, ptr %37, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %498, ptr noundef %499)
          to label %503 unwind label %512

503:                                              ; preds = %502
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %36) #0
  store i32 1, ptr %12, align 4
  br label %1831

504:                                              ; preds = %496
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %7, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #0
  br label %1832

508:                                              ; preds = %500
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %7, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %8, align 4
  br label %516

512:                                              ; preds = %502, %501
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %7, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %36) #0
  br label %516

516:                                              ; preds = %512, %508
  %517 = load i1, ptr %37, align 1
  br i1 %517, label %518, label %519

518:                                              ; preds = %516
  call void @_ZdlPvm(ptr noundef %499, i64 noundef 280) #13
  br label %519

519:                                              ; preds = %518, %516
  br label %1832

520:                                              ; preds = %415
  %521 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %522 unwind label %167

522:                                              ; preds = %520
  br i1 %521, label %523, label %1127

523:                                              ; preds = %522
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %525 unwind label %167

525:                                              ; preds = %523
  %526 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef @.str.21)
          to label %527 unwind label %167

527:                                              ; preds = %525
  br i1 %526, label %528, label %1127

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 88, ptr %38) #0
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %38, ptr noundef nonnull align 8 dereferenceable(176) %530)
          to label %531 unwind label %557

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %38)
          to label %533 unwind label %561

533:                                              ; preds = %531
  %534 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %532)
          to label %535 unwind label %561

535:                                              ; preds = %533
  %536 = icmp ne i32 %534, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %38) #0
  br i1 %536, label %537, label %585

537:                                              ; preds = %535
  br label %538

538:                                              ; preds = %537
  %539 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %540 unwind label %167

540:                                              ; preds = %538
  br i1 %539, label %541, label %566

541:                                              ; preds = %540
  %542 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %542, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %544 unwind label %167

544:                                              ; preds = %541
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef @.str)
          to label %546 unwind label %167

546:                                              ; preds = %544
  %547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef @.str.1)
          to label %548 unwind label %167

548:                                              ; preds = %546
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef @.str.2)
          to label %550 unwind label %167

550:                                              ; preds = %548
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %549, i32 noundef 1440)
          to label %552 unwind label %167

552:                                              ; preds = %550
  %553 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %551, ptr noundef @_ZSt3decRSt8ios_base)
          to label %554 unwind label %167

554:                                              ; preds = %552
  %555 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %553, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %556 unwind label %167

556:                                              ; preds = %554
  br label %566

557:                                              ; preds = %529
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %7, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %8, align 4
  br label %565

561:                                              ; preds = %533, %531
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %7, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #0
  br label %565

565:                                              ; preds = %561, %557
  call void @llvm.lifetime.end.p0(i64 88, ptr %38) #0
  br label %1832

566:                                              ; preds = %556, %540
  br label %567

567:                                              ; preds = %566
  br label %568

568:                                              ; preds = %567
  store i1 true, ptr %40, align 1
  %569 = call ptr @__cxa_allocate_exception(i64 96) #0
  %570 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %39, i32 noundef 14)
          to label %571 unwind label %573

571:                                              ; preds = %568
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %569, ptr noundef nonnull align 8 dereferenceable(176) %570, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %39)
          to label %572 unwind label %577

572:                                              ; preds = %571
  store i1 false, ptr %40, align 1
  invoke void @__cxa_throw(ptr %569, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %577

573:                                              ; preds = %568
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %7, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %8, align 4
  br label %581

577:                                              ; preds = %572, %571
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %7, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #0
  br label %581

581:                                              ; preds = %577, %573
  %582 = load i1, ptr %40, align 1
  br i1 %582, label %583, label %584

583:                                              ; preds = %581
  call void @__cxa_free_exception(ptr %569) #0
  br label %584

584:                                              ; preds = %583, %581
  br label %1832

585:                                              ; preds = %535
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  %588 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %589 unwind label %167

589:                                              ; preds = %587
  %590 = invoke noundef zeroext i1 @_ZNK5IdenteqEPKc(ptr noundef nonnull align 8 dereferenceable(16) %588, ptr noundef @.str.22)
          to label %591 unwind label %167

591:                                              ; preds = %589
  br i1 %590, label %592, label %1097

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 88, ptr %41) #0
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %41, ptr noundef nonnull align 8 dereferenceable(176) %594)
          to label %595 unwind label %621

595:                                              ; preds = %593
  %596 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %41)
          to label %597 unwind label %625

597:                                              ; preds = %595
  %598 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %596)
          to label %599 unwind label %625

599:                                              ; preds = %597
  %600 = icmp ne i32 %598, 23
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %41) #0
  br i1 %600, label %601, label %649

601:                                              ; preds = %599
  br label %602

602:                                              ; preds = %601
  %603 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %604 unwind label %167

604:                                              ; preds = %602
  br i1 %603, label %605, label %630

605:                                              ; preds = %604
  %606 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %606, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %608 unwind label %167

608:                                              ; preds = %605
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef @.str)
          to label %610 unwind label %167

610:                                              ; preds = %608
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef @.str.1)
          to label %612 unwind label %167

612:                                              ; preds = %610
  %613 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef @.str.2)
          to label %614 unwind label %167

614:                                              ; preds = %612
  %615 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %613, i32 noundef 1442)
          to label %616 unwind label %167

616:                                              ; preds = %614
  %617 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %615, ptr noundef @_ZSt3decRSt8ios_base)
          to label %618 unwind label %167

618:                                              ; preds = %616
  %619 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %617, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %620 unwind label %167

620:                                              ; preds = %618
  br label %630

621:                                              ; preds = %593
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %7, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %8, align 4
  br label %629

625:                                              ; preds = %597, %595
  %626 = landingpad { ptr, i32 }
          cleanup
  %627 = extractvalue { ptr, i32 } %626, 0
  store ptr %627, ptr %7, align 8
  %628 = extractvalue { ptr, i32 } %626, 1
  store i32 %628, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #0
  br label %629

629:                                              ; preds = %625, %621
  call void @llvm.lifetime.end.p0(i64 88, ptr %41) #0
  br label %1832

630:                                              ; preds = %620, %604
  br label %631

631:                                              ; preds = %630
  br label %632

632:                                              ; preds = %631
  store i1 true, ptr %43, align 1
  %633 = call ptr @__cxa_allocate_exception(i64 96) #0
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %42, i32 noundef 23)
          to label %635 unwind label %637

635:                                              ; preds = %632
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %633, ptr noundef nonnull align 8 dereferenceable(176) %634, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %42)
          to label %636 unwind label %641

636:                                              ; preds = %635
  store i1 false, ptr %43, align 1
  invoke void @__cxa_throw(ptr %633, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %641

637:                                              ; preds = %632
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %7, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %8, align 4
  br label %645

641:                                              ; preds = %636, %635
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %7, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #0
  br label %645

645:                                              ; preds = %641, %637
  %646 = load i1, ptr %43, align 1
  br i1 %646, label %647, label %648

647:                                              ; preds = %645
  call void @__cxa_free_exception(ptr %633) #0
  br label %648

648:                                              ; preds = %647, %645
  br label %1832

649:                                              ; preds = %599
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 120, ptr %44) #0
  %652 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind writable sret(%class.TypeRef) align 8 %44, ptr noundef nonnull align 8 dereferenceable(176) %652, i1 noundef zeroext true)
          to label %653 unwind label %683

653:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #0
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #0
  br label %654

654:                                              ; preds = %929, %653
  br label %655

655:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 88, ptr %46) #0
  %656 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %46, ptr noundef nonnull align 8 dereferenceable(176) %656)
          to label %657 unwind label %687

657:                                              ; preds = %655
  %658 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %46)
          to label %659 unwind label %691

659:                                              ; preds = %657
  %660 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %658)
          to label %661 unwind label %691

661:                                              ; preds = %659
  %662 = icmp ne i32 %660, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %46) #0
  br i1 %662, label %663, label %719

663:                                              ; preds = %661
  br label %664

664:                                              ; preds = %663
  %665 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %666 unwind label %696

666:                                              ; preds = %664
  br i1 %665, label %667, label %700

667:                                              ; preds = %666
  %668 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %668, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %670 unwind label %696

670:                                              ; preds = %667
  %671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef @.str)
          to label %672 unwind label %696

672:                                              ; preds = %670
  %673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %671, ptr noundef @.str.1)
          to label %674 unwind label %696

674:                                              ; preds = %672
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %673, ptr noundef @.str.2)
          to label %676 unwind label %696

676:                                              ; preds = %674
  %677 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %675, i32 noundef 1446)
          to label %678 unwind label %696

678:                                              ; preds = %676
  %679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %677, ptr noundef @_ZSt3decRSt8ios_base)
          to label %680 unwind label %696

680:                                              ; preds = %678
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %679, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %682 unwind label %696

682:                                              ; preds = %680
  br label %700

683:                                              ; preds = %651
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %7, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %8, align 4
  br label %1096

687:                                              ; preds = %655
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %7, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %8, align 4
  br label %695

691:                                              ; preds = %659, %657
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %7, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #0
  br label %695

695:                                              ; preds = %691, %687
  call void @llvm.lifetime.end.p0(i64 88, ptr %46) #0
  br label %1095

696:                                              ; preds = %1024, %1020, %1013, %1011, %957, %955, %953, %951, %949, %947, %944, %941, %926, %843, %841, %839, %837, %835, %833, %830, %827, %752, %750, %748, %746, %744, %742, %739, %736, %721, %680, %678, %676, %674, %672, %670, %667, %664
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %7, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %8, align 4
  br label %1095

700:                                              ; preds = %682, %666
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701
  store i1 true, ptr %48, align 1
  %703 = call ptr @__cxa_allocate_exception(i64 96) #0
  %704 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %47, i32 noundef 31)
          to label %705 unwind label %707

705:                                              ; preds = %702
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %703, ptr noundef nonnull align 8 dereferenceable(176) %704, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %47)
          to label %706 unwind label %711

706:                                              ; preds = %705
  store i1 false, ptr %48, align 1
  invoke void @__cxa_throw(ptr %703, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %711

707:                                              ; preds = %702
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %7, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %8, align 4
  br label %715

711:                                              ; preds = %706, %705
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %7, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #0
  br label %715

715:                                              ; preds = %711, %707
  %716 = load i1, ptr %48, align 1
  br i1 %716, label %717, label %718

717:                                              ; preds = %715
  call void @__cxa_free_exception(ptr %703) #0
  br label %718

718:                                              ; preds = %717, %715
  br label %1095

719:                                              ; preds = %661
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720
  %722 = load ptr, ptr %4, align 8, !tbaa !5
  %723 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %722, i32 noundef 0)
          to label %724 unwind label %696

724:                                              ; preds = %721
  %725 = icmp eq i32 %723, 16
  br i1 %725, label %726, label %817

726:                                              ; preds = %724
  br label %727

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 88, ptr %49) #0
  %728 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %49, ptr noundef nonnull align 8 dereferenceable(176) %728)
          to label %729 unwind label %755

729:                                              ; preds = %727
  %730 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %49)
          to label %731 unwind label %759

731:                                              ; preds = %729
  %732 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %730)
          to label %733 unwind label %759

733:                                              ; preds = %731
  %734 = icmp ne i32 %732, 16
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %49) #0
  br i1 %734, label %735, label %783

735:                                              ; preds = %733
  br label %736

736:                                              ; preds = %735
  %737 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %738 unwind label %696

738:                                              ; preds = %736
  br i1 %737, label %739, label %764

739:                                              ; preds = %738
  %740 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %740, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %742 unwind label %696

742:                                              ; preds = %739
  %743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef @.str)
          to label %744 unwind label %696

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

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

748:                                              ; preds = %746
  %749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %747, i32 noundef 1448)
          to label %750 unwind label %696

750:                                              ; preds = %748
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %749, ptr noundef @_ZSt3decRSt8ios_base)
          to label %752 unwind label %696

752:                                              ; preds = %750
  %753 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %751, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %754 unwind label %696

754:                                              ; preds = %752
  br label %764

755:                                              ; preds = %727
  %756 = landingpad { ptr, i32 }
          cleanup
  %757 = extractvalue { ptr, i32 } %756, 0
  store ptr %757, ptr %7, align 8
  %758 = extractvalue { ptr, i32 } %756, 1
  store i32 %758, ptr %8, align 4
  br label %763

759:                                              ; preds = %731, %729
  %760 = landingpad { ptr, i32 }
          cleanup
  %761 = extractvalue { ptr, i32 } %760, 0
  store ptr %761, ptr %7, align 8
  %762 = extractvalue { ptr, i32 } %760, 1
  store i32 %762, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #0
  br label %763

763:                                              ; preds = %759, %755
  call void @llvm.lifetime.end.p0(i64 88, ptr %49) #0
  br label %1095

764:                                              ; preds = %754, %738
  br label %765

765:                                              ; preds = %764
  br label %766

766:                                              ; preds = %765
  store i1 true, ptr %51, align 1
  %767 = call ptr @__cxa_allocate_exception(i64 96) #0
  %768 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %50, i32 noundef 16)
          to label %769 unwind label %771

769:                                              ; preds = %766
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %767, ptr noundef nonnull align 8 dereferenceable(176) %768, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %50)
          to label %770 unwind label %775

770:                                              ; preds = %769
  store i1 false, ptr %51, align 1
  invoke void @__cxa_throw(ptr %767, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %775

771:                                              ; preds = %766
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %7, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %8, align 4
  br label %779

775:                                              ; preds = %770, %769
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %7, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #0
  br label %779

779:                                              ; preds = %775, %771
  %780 = load i1, ptr %51, align 1
  br i1 %780, label %781, label %782

781:                                              ; preds = %779
  call void @__cxa_free_exception(ptr %767) #0
  br label %782

782:                                              ; preds = %781, %779
  br label %1095

783:                                              ; preds = %733
  br label %784

784:                                              ; preds = %783
  br label %785

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  %786 = load ptr, ptr %4, align 8, !tbaa !5
  %787 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #12
          to label %788 unwind label %804

788:                                              ; preds = %785
  %789 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %790 unwind label %808

790:                                              ; preds = %788
  %791 = getelementptr inbounds { i64, i64 }, ptr %53, i32 0, i32 0
  %792 = extractvalue { i64, i64 } %789, 0
  store i64 %792, ptr %791, align 8
  %793 = getelementptr inbounds { i64, i64 }, ptr %53, i32 0, i32 1
  %794 = extractvalue { i64, i64 } %789, 1
  store i64 %794, ptr %793, align 8
  %795 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %796 unwind label %808

796:                                              ; preds = %790
  %797 = getelementptr inbounds { i64, i64 }, ptr %53, i32 0, i32 0
  %798 = load i64, ptr %797, align 8
  %799 = getelementptr inbounds { i64, i64 }, ptr %53, i32 0, i32 1
  %800 = load i64, ptr %799, align 8
  invoke void @_ZN3AST16ExprNode_IntegerC2E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(64) %787, i64 %798, i64 %800, i32 noundef %795)
          to label %801 unwind label %808

801:                                              ; preds = %796
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %52, ptr noundef nonnull align 8 dereferenceable(176) %786, ptr noundef %787)
          to label %802 unwind label %804

802:                                              ; preds = %801
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %803 unwind label %812

803:                                              ; preds = %802
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %925

804:                                              ; preds = %801, %785
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %7, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %8, align 4
  br label %816

808:                                              ; preds = %796, %790, %788
  %809 = landingpad { ptr, i32 }
          cleanup
  %810 = extractvalue { ptr, i32 } %809, 0
  store ptr %810, ptr %7, align 8
  %811 = extractvalue { ptr, i32 } %809, 1
  store i32 %811, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %787, i64 noundef 64) #13
  br label %816

812:                                              ; preds = %802
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %7, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  br label %816

816:                                              ; preds = %812, %808, %804
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %1095

817:                                              ; preds = %724
  br label %818

818:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 88, ptr %54) #0
  %819 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %54, ptr noundef nonnull align 8 dereferenceable(176) %819)
          to label %820 unwind label %846

820:                                              ; preds = %818
  %821 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %54)
          to label %822 unwind label %850

822:                                              ; preds = %820
  %823 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %821)
          to label %824 unwind label %850

824:                                              ; preds = %822
  %825 = icmp ne i32 %823, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %54) #0
  br i1 %825, label %826, label %874

826:                                              ; preds = %824
  br label %827

827:                                              ; preds = %826
  %828 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %829 unwind label %696

829:                                              ; preds = %827
  br i1 %828, label %830, label %855

830:                                              ; preds = %829
  %831 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %832 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %831, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %833 unwind label %696

833:                                              ; preds = %830
  %834 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %832, ptr noundef @.str)
          to label %835 unwind label %696

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

837:                                              ; preds = %835
  %838 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %836, ptr noundef @.str.2)
          to label %839 unwind label %696

839:                                              ; preds = %837
  %840 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %838, i32 noundef 1452)
          to label %841 unwind label %696

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

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

845:                                              ; preds = %843
  br label %855

846:                                              ; preds = %818
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %7, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %8, align 4
  br label %854

850:                                              ; preds = %822, %820
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %7, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %54) #0
  br label %854

854:                                              ; preds = %850, %846
  call void @llvm.lifetime.end.p0(i64 88, ptr %54) #0
  br label %1095

855:                                              ; preds = %845, %829
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856
  store i1 true, ptr %56, align 1
  %858 = call ptr @__cxa_allocate_exception(i64 96) #0
  %859 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %55, i32 noundef 14)
          to label %860 unwind label %862

860:                                              ; preds = %857
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %858, ptr noundef nonnull align 8 dereferenceable(176) %859, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %55)
          to label %861 unwind label %866

861:                                              ; preds = %860
  store i1 false, ptr %56, align 1
  invoke void @__cxa_throw(ptr %858, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %866

862:                                              ; preds = %857
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %7, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %8, align 4
  br label %870

866:                                              ; preds = %861, %860
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %7, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #0
  br label %870

870:                                              ; preds = %866, %862
  %871 = load i1, ptr %56, align 1
  br i1 %871, label %872, label %873

872:                                              ; preds = %870
  call void @__cxa_free_exception(ptr %858) #0
  br label %873

873:                                              ; preds = %872, %870
  br label %1095

874:                                              ; preds = %824
  br label %875

875:                                              ; preds = %874
  br label %876

876:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #0
  %877 = load ptr, ptr %4, align 8, !tbaa !5
  %878 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #12
          to label %879 unwind label %893

879:                                              ; preds = %876
  store i1 true, ptr %61, align 1
  %880 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %881 unwind label %897

881:                                              ; preds = %879
  %882 = getelementptr inbounds %struct.Ident, ptr %880, i32 0, i32 1
  %883 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %882)
          to label %884 unwind label %897

884:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #0
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #0
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef %883, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %885 unwind label %901

885:                                              ; preds = %884
  %886 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %887 unwind label %905

887:                                              ; preds = %885
  %888 = getelementptr inbounds %struct.Ident, ptr %886, i32 0, i32 0
  invoke void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %888)
          to label %889 unwind label %905

889:                                              ; preds = %887
  invoke void @_ZN3AST15ExprNode_StringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(80) %878, ptr noundef %58, ptr noundef %60)
          to label %890 unwind label %909

890:                                              ; preds = %889
  store i1 false, ptr %61, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %57, ptr noundef nonnull align 8 dereferenceable(176) %877, ptr noundef %878)
          to label %891 unwind label %909

891:                                              ; preds = %890
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %892 unwind label %913

892:                                              ; preds = %891
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #0
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br label %925

893:                                              ; preds = %876
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %7, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %8, align 4
  br label %924

897:                                              ; preds = %881, %879
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %7, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %8, align 4
  br label %920

901:                                              ; preds = %884
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %7, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %8, align 4
  br label %919

905:                                              ; preds = %887, %885
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %7, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %8, align 4
  br label %918

909:                                              ; preds = %890, %889
  %910 = landingpad { ptr, i32 }
          cleanup
  %911 = extractvalue { ptr, i32 } %910, 0
  store ptr %911, ptr %7, align 8
  %912 = extractvalue { ptr, i32 } %910, 1
  store i32 %912, ptr %8, align 4
  br label %917

913:                                              ; preds = %891
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %7, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  br label %917

917:                                              ; preds = %913, %909
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  br label %918

918:                                              ; preds = %917, %905
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #0
  br label %919

919:                                              ; preds = %918, %901
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #0
  br label %920

920:                                              ; preds = %919, %897
  %921 = load i1, ptr %61, align 1
  br i1 %921, label %922, label %923

922:                                              ; preds = %920
  call void @_ZdlPvm(ptr noundef %878, i64 noundef 80) #13
  br label %923

923:                                              ; preds = %922, %920
  br label %924

924:                                              ; preds = %923, %893
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br label %1095

925:                                              ; preds = %892, %803
  br label %926

926:                                              ; preds = %925
  %927 = load ptr, ptr %4, align 8, !tbaa !5
  %928 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %927, i32 noundef 0)
          to label %929 unwind label %696

929:                                              ; preds = %926
  %930 = icmp eq i32 %928, 31
  br i1 %930, label %654, label %931, !llvm.loop !17

931:                                              ; preds = %929
  br label %932

932:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 88, ptr %62) #0
  %933 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %62, ptr noundef nonnull align 8 dereferenceable(176) %933)
          to label %934 unwind label %960

934:                                              ; preds = %932
  %935 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %62)
          to label %936 unwind label %964

936:                                              ; preds = %934
  %937 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %935)
          to label %938 unwind label %964

938:                                              ; preds = %936
  %939 = icmp ne i32 %937, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %62) #0
  br i1 %939, label %940, label %988

940:                                              ; preds = %938
  br label %941

941:                                              ; preds = %940
  %942 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %943 unwind label %696

943:                                              ; preds = %941
  br i1 %942, label %944, label %969

944:                                              ; preds = %943
  %945 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %946 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %945, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %947 unwind label %696

947:                                              ; preds = %944
  %948 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %946, ptr noundef @.str)
          to label %949 unwind label %696

949:                                              ; preds = %947
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %948, ptr noundef @.str.1)
          to label %951 unwind label %696

951:                                              ; preds = %949
  %952 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %950, ptr noundef @.str.2)
          to label %953 unwind label %696

953:                                              ; preds = %951
  %954 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %952, i32 noundef 1456)
          to label %955 unwind label %696

955:                                              ; preds = %953
  %956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %954, ptr noundef @_ZSt3decRSt8ios_base)
          to label %957 unwind label %696

957:                                              ; preds = %955
  %958 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %956, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %959 unwind label %696

959:                                              ; preds = %957
  br label %969

960:                                              ; preds = %932
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %7, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %8, align 4
  br label %968

964:                                              ; preds = %936, %934
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %7, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %62) #0
  br label %968

968:                                              ; preds = %964, %960
  call void @llvm.lifetime.end.p0(i64 88, ptr %62) #0
  br label %1095

969:                                              ; preds = %959, %943
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  store i1 true, ptr %64, align 1
  %972 = call ptr @__cxa_allocate_exception(i64 96) #0
  %973 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %63, i32 noundef 24)
          to label %974 unwind label %976

974:                                              ; preds = %971
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %972, ptr noundef nonnull align 8 dereferenceable(176) %973, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %63)
          to label %975 unwind label %980

975:                                              ; preds = %974
  store i1 false, ptr %64, align 1
  invoke void @__cxa_throw(ptr %972, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %980

976:                                              ; preds = %971
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %7, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %8, align 4
  br label %984

980:                                              ; preds = %975, %974
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %7, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %63) #0
  br label %984

984:                                              ; preds = %980, %976
  %985 = load i1, ptr %64, align 1
  br i1 %985, label %986, label %987

986:                                              ; preds = %984
  call void @__cxa_free_exception(ptr %972) #0
  br label %987

987:                                              ; preds = %986, %984
  br label %1095

988:                                              ; preds = %938
  br label %989

989:                                              ; preds = %988
  br label %990

990:                                              ; preds = %989
  call void @llvm.lifetime.start.p0(i64 240, ptr %65) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %66, ptr noundef @.str.23)
          to label %991 unwind label %1026

991:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 40, ptr %69) #0
  store i1 true, ptr %73, align 1
  store ptr %69, ptr %70, align 8
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef @.str.22)
          to label %992 unwind label %1030

992:                                              ; preds = %991
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %72)
          to label %993 unwind label %1034

993:                                              ; preds = %992
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %69, ptr noundef %71, ptr noundef %72)
          to label %994 unwind label %1038

994:                                              ; preds = %993
  store i1 false, ptr %73, align 1
  %995 = getelementptr inbounds %"class.std::initializer_list", ptr %68, i32 0, i32 0
  store ptr %69, ptr %995, align 8, !tbaa !19
  %996 = getelementptr inbounds %"class.std::initializer_list", ptr %68, i32 0, i32 1
  store i64 1, ptr %996, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #0
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #0
  %997 = getelementptr inbounds { ptr, i64 }, ptr %68, i32 0, i32 0
  %998 = load ptr, ptr %997, align 8
  %999 = getelementptr inbounds { ptr, i64 }, ptr %68, i32 0, i32 1
  %1000 = load i64, ptr %999, align 8
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr %998, i64 %1000, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %1001 unwind label %1042

1001:                                             ; preds = %994
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %65, ptr noundef %66, ptr noundef %67)
          to label %1002 unwind label %1046

1002:                                             ; preds = %1001
  %1003 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %9, ptr noundef nonnull align 8 dereferenceable(240) %65)
          to label %1004 unwind label %1050

1004:                                             ; preds = %1002
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %65) #0
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #0
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #0
  %1005 = getelementptr inbounds [1 x %"class.AST::PathNode"], ptr %69, i32 0, i32 0
  %1006 = getelementptr inbounds %"class.AST::PathNode", ptr %1005, i64 1
  br label %1007

1007:                                             ; preds = %1007, %1004
  %1008 = phi ptr [ %1006, %1004 ], [ %1009, %1007 ]
  %1009 = getelementptr inbounds %"class.AST::PathNode", ptr %1008, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %1009) #0
  %1010 = icmp eq ptr %1009, %1005
  br i1 %1010, label %1011, label %1007

1011:                                             ; preds = %1007
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %72) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %69) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  call void @llvm.lifetime.end.p0(i64 240, ptr %65) #0
  %1012 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %1013 unwind label %696

1013:                                             ; preds = %1011
  %1014 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN3AST8PathNodeESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1012) #0
  %1015 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST8PathNode4argsEv(ptr noundef nonnull align 8 dereferenceable(40) %1014)
          to label %1016 unwind label %696

1016:                                             ; preds = %1013
  %1017 = getelementptr inbounds %"struct.AST::PathParams", ptr %1015, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 256, ptr %75) #0
  invoke void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120) %76, ptr noundef nonnull align 8 dereferenceable(120) %44)
          to label %1018 unwind label %1077

1018:                                             ; preds = %1016
  invoke void @_ZN3AST12PathParamEntC2E7TypeRef(ptr noundef nonnull align 8 dereferenceable(256) %75, ptr noundef %76)
          to label %1019 unwind label %1081

1019:                                             ; preds = %1018
  invoke void @_ZNSt6vectorIN3AST12PathParamEntESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %1017, ptr noundef nonnull align 8 dereferenceable(256) %75)
          to label %1020 unwind label %1085

1020:                                             ; preds = %1019
  call void @_ZN3AST12PathParamEntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %75) #0
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %76) #0
  call void @llvm.lifetime.end.p0(i64 256, ptr %75) #0
  %1021 = load ptr, ptr %4, align 8, !tbaa !5
  %1022 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 304) #12
          to label %1023 unwind label %696

1023:                                             ; preds = %1020
  invoke void @_ZN3AST17ExprNode_CallPathC2EONS_4PathEOSt6vectorINS_9ExprNodePESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(304) %1022, ptr noundef nonnull align 8 dereferenceable(240) %9, ptr noundef nonnull align 8 dereferenceable(24) %45)
          to label %1024 unwind label %1091

1024:                                             ; preds = %1023
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1021, ptr noundef %1022)
          to label %1025 unwind label %696

1025:                                             ; preds = %1024
  store i32 1, ptr %12, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #0
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %44) #0
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #0
  br label %1831

1026:                                             ; preds = %990
  %1027 = landingpad { ptr, i32 }
          cleanup
  %1028 = extractvalue { ptr, i32 } %1027, 0
  store ptr %1028, ptr %7, align 8
  %1029 = extractvalue { ptr, i32 } %1027, 1
  store i32 %1029, ptr %8, align 4
  br label %1076

1030:                                             ; preds = %991
  %1031 = landingpad { ptr, i32 }
          cleanup
  %1032 = extractvalue { ptr, i32 } %1031, 0
  store ptr %1032, ptr %7, align 8
  %1033 = extractvalue { ptr, i32 } %1031, 1
  store i32 %1033, ptr %8, align 4
  br label %1065

1034:                                             ; preds = %992
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %7, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %8, align 4
  br label %1064

1038:                                             ; preds = %993
  %1039 = landingpad { ptr, i32 }
          cleanup
  %1040 = extractvalue { ptr, i32 } %1039, 0
  store ptr %1040, ptr %7, align 8
  %1041 = extractvalue { ptr, i32 } %1039, 1
  store i32 %1041, ptr %8, align 4
  br label %1063

1042:                                             ; preds = %994
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %7, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %8, align 4
  br label %1055

1046:                                             ; preds = %1001
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %7, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %8, align 4
  br label %1054

1050:                                             ; preds = %1002
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %7, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %65) #0
  br label %1054

1054:                                             ; preds = %1050, %1046
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #0
  br label %1055

1055:                                             ; preds = %1054, %1042
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #0
  %1056 = getelementptr inbounds [1 x %"class.AST::PathNode"], ptr %69, i32 0, i32 0
  %1057 = getelementptr inbounds %"class.AST::PathNode", ptr %1056, i64 1
  br label %1058

1058:                                             ; preds = %1058, %1055
  %1059 = phi ptr [ %1057, %1055 ], [ %1060, %1058 ]
  %1060 = getelementptr inbounds %"class.AST::PathNode", ptr %1059, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %1060) #0
  %1061 = icmp eq ptr %1060, %1056
  br i1 %1061, label %1062, label %1058

1062:                                             ; preds = %1058
  br label %1063

1063:                                             ; preds = %1062, %1038
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %72) #0
  br label %1064

1064:                                             ; preds = %1063, %1034
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #0
  br label %1065

1065:                                             ; preds = %1064, %1030
  %1066 = load i1, ptr %73, align 1
  br i1 %1066, label %1067, label %1075

1067:                                             ; preds = %1065
  %1068 = load ptr, ptr %70, align 8
  %1069 = icmp eq ptr %69, %1068
  br i1 %1069, label %1074, label %1070

1070:                                             ; preds = %1070, %1067
  %1071 = phi ptr [ %1068, %1067 ], [ %1072, %1070 ]
  %1072 = getelementptr inbounds %"class.AST::PathNode", ptr %1071, i64 -1
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %1072) #0
  %1073 = icmp eq ptr %1072, %69
  br i1 %1073, label %1074, label %1070

1074:                                             ; preds = %1070, %1067
  br label %1075

1075:                                             ; preds = %1074, %1065
  call void @llvm.lifetime.end.p0(i64 40, ptr %69) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  br label %1076

1076:                                             ; preds = %1075, %1026
  call void @llvm.lifetime.end.p0(i64 240, ptr %65) #0
  br label %1095

1077:                                             ; preds = %1016
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %7, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %8, align 4
  br label %1090

1081:                                             ; preds = %1018
  %1082 = landingpad { ptr, i32 }
          cleanup
  %1083 = extractvalue { ptr, i32 } %1082, 0
  store ptr %1083, ptr %7, align 8
  %1084 = extractvalue { ptr, i32 } %1082, 1
  store i32 %1084, ptr %8, align 4
  br label %1089

1085:                                             ; preds = %1019
  %1086 = landingpad { ptr, i32 }
          cleanup
  %1087 = extractvalue { ptr, i32 } %1086, 0
  store ptr %1087, ptr %7, align 8
  %1088 = extractvalue { ptr, i32 } %1086, 1
  store i32 %1088, ptr %8, align 4
  call void @_ZN3AST12PathParamEntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %75) #0
  br label %1089

1089:                                             ; preds = %1085, %1081
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %76) #0
  br label %1090

1090:                                             ; preds = %1089, %1077
  call void @llvm.lifetime.end.p0(i64 256, ptr %75) #0
  br label %1095

1091:                                             ; preds = %1023
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %7, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1022, i64 noundef 304) #13
  br label %1095

1095:                                             ; preds = %1091, %1090, %1076, %987, %968, %924, %873, %854, %816, %782, %763, %718, %696, %695
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #0
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %44) #0
  br label %1096

1096:                                             ; preds = %1095, %683
  call void @llvm.lifetime.end.p0(i64 120, ptr %44) #0
  br label %1832

1097:                                             ; preds = %591
  br label %1098

1098:                                             ; preds = %1097
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  store ptr @__func__._Z19Parse_ExprVal_InnerR11TokenStream, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #0
  %1099 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind writable sret(%struct.Span) align 8 %78, ptr noundef nonnull align 8 dereferenceable(176) %1099)
          to label %1100 unwind label %1106

1100:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #0
  %1101 = getelementptr inbounds %class.anon.194, ptr %80, i32 0, i32 0
  store ptr %77, ptr %1101, align 8, !tbaa !5
  %1102 = getelementptr inbounds %class.anon.194, ptr %80, i32 0, i32 1
  store ptr %6, ptr %1102, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ19Parse_ExprVal_InnerR11TokenStreamE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(16) %80) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef %79)
          to label %1103 unwind label %1110

1103:                                             ; preds = %1100
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  %1104 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1104, ptr noundef @.str.11)
          to label %1105 unwind label %1115

1105:                                             ; preds = %1103
  invoke void @__cxa_throw(ptr %1104, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #14
          to label %1840 unwind label %1119

1106:                                             ; preds = %1098
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %7, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %8, align 4
  br label %1114

1110:                                             ; preds = %1100
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %7, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %8, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #0
  br label %1114

1114:                                             ; preds = %1110, %1106
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  br label %1123

1115:                                             ; preds = %1103
  %1116 = landingpad { ptr, i32 }
          cleanup
  %1117 = extractvalue { ptr, i32 } %1116, 0
  store ptr %1117, ptr %7, align 8
  %1118 = extractvalue { ptr, i32 } %1116, 1
  store i32 %1118, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1104) #0
  br label %1123

1119:                                             ; preds = %1105
  %1120 = landingpad { ptr, i32 }
          cleanup
  %1121 = extractvalue { ptr, i32 } %1120, 0
  store ptr %1121, ptr %7, align 8
  %1122 = extractvalue { ptr, i32 } %1120, 1
  store i32 %1122, ptr %8, align 4
  br label %1123

1123:                                             ; preds = %1119, %1115, %1114
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  br label %1832

1124:                                             ; No predecessors!
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125
  br label %1127

1127:                                             ; preds = %1126, %527, %522
  br label %1128

1128:                                             ; preds = %1127, %415
  %1129 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %81, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1130 unwind label %167

1130:                                             ; preds = %1128
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1129, ptr noundef %81)
          to label %1131 unwind label %1138

1131:                                             ; preds = %1130
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %81) #0
  %1132 = load ptr, ptr %4, align 8, !tbaa !5
  %1133 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 280) #12
          to label %1134 unwind label %167

1134:                                             ; preds = %1131
  store i1 true, ptr %83, align 1
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %82, ptr noundef nonnull align 8 dereferenceable(240) %9)
          to label %1135 unwind label %1142

1135:                                             ; preds = %1134
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %1133, ptr noundef %82)
          to label %1136 unwind label %1146

1136:                                             ; preds = %1135
  store i1 false, ptr %83, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1132, ptr noundef %1133)
          to label %1137 unwind label %1146

1137:                                             ; preds = %1136
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %82) #0
  store i32 1, ptr %12, align 4
  br label %1831

1138:                                             ; preds = %1130
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %7, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %81) #0
  br label %1832

1142:                                             ; preds = %1134
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %7, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %8, align 4
  br label %1150

1146:                                             ; preds = %1136, %1135
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %7, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %8, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %82) #0
  br label %1150

1150:                                             ; preds = %1146, %1142
  %1151 = load i1, ptr %83, align 1
  br i1 %1151, label %1152, label %1153

1152:                                             ; preds = %1150
  call void @_ZdlPvm(ptr noundef %1133, i64 noundef 280) #13
  br label %1153

1153:                                             ; preds = %1152, %1150
  br label %1832

1154:                                             ; preds = %143, %143, %143, %143
  %1155 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %84, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1156 unwind label %167

1156:                                             ; preds = %1154
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1155, ptr noundef %84)
          to label %1157 unwind label %1160

1157:                                             ; preds = %1156
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %84) #0
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z21Parse_ExprVal_ClosureR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1158)
          to label %1159 unwind label %167

1159:                                             ; preds = %1157
  store i32 1, ptr %12, align 4
  br label %1831

1160:                                             ; preds = %1156
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %7, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %84) #0
  br label %1832

1164:                                             ; preds = %143
  %1165 = load ptr, ptr %4, align 8, !tbaa !5
  %1166 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
          to label %1167 unwind label %167

1167:                                             ; preds = %1164
  call void @llvm.memset.p0.i64(ptr align 16 %1166, i8 0, i64 40, i1 false)
  invoke void @_ZN3AST24ExprNode_WildcardPatternC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %1166)
          to label %1168 unwind label %1170

1168:                                             ; preds = %1167
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1165, ptr noundef %1166)
          to label %1169 unwind label %167

1169:                                             ; preds = %1168
  store i32 1, ptr %12, align 4
  br label %1831

1170:                                             ; preds = %1167
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %7, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1166, i64 noundef 40) #13
  br label %1832

1174:                                             ; preds = %143
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #12
          to label %1177 unwind label %167

1177:                                             ; preds = %1174
  %1178 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1179 unwind label %1192

1179:                                             ; preds = %1177
  %1180 = getelementptr inbounds { i64, i64 }, ptr %85, i32 0, i32 0
  %1181 = extractvalue { i64, i64 } %1178, 0
  store i64 %1181, ptr %1180, align 8
  %1182 = getelementptr inbounds { i64, i64 }, ptr %85, i32 0, i32 1
  %1183 = extractvalue { i64, i64 } %1178, 1
  store i64 %1183, ptr %1182, align 8
  %1184 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1185 unwind label %1192

1185:                                             ; preds = %1179
  %1186 = getelementptr inbounds { i64, i64 }, ptr %85, i32 0, i32 0
  %1187 = load i64, ptr %1186, align 8
  %1188 = getelementptr inbounds { i64, i64 }, ptr %85, i32 0, i32 1
  %1189 = load i64, ptr %1188, align 8
  invoke void @_ZN3AST16ExprNode_IntegerC2E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(64) %1176, i64 %1187, i64 %1189, i32 noundef %1184)
          to label %1190 unwind label %1192

1190:                                             ; preds = %1185
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1175, ptr noundef %1176)
          to label %1191 unwind label %167

1191:                                             ; preds = %1190
  store i32 1, ptr %12, align 4
  br label %1831

1192:                                             ; preds = %1185, %1179, %1177
  %1193 = landingpad { ptr, i32 }
          cleanup
  %1194 = extractvalue { ptr, i32 } %1193, 0
  store ptr %1194, ptr %7, align 8
  %1195 = extractvalue { ptr, i32 } %1193, 1
  store i32 %1195, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1176, i64 noundef 64) #13
  br label %1832

1196:                                             ; preds = %143
  %1197 = load ptr, ptr %4, align 8, !tbaa !5
  %1198 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #12
          to label %1199 unwind label %167

1199:                                             ; preds = %1196
  %1200 = invoke noundef double @_ZNK5Token8floatvalEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1201 unwind label %1206

1201:                                             ; preds = %1199
  %1202 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1203 unwind label %1206

1203:                                             ; preds = %1201
  invoke void @_ZN3AST14ExprNode_FloatC2Ed9eCoreType(ptr noundef nonnull align 8 dereferenceable(56) %1198, double noundef %1200, i32 noundef %1202)
          to label %1204 unwind label %1206

1204:                                             ; preds = %1203
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1197, ptr noundef %1198)
          to label %1205 unwind label %167

1205:                                             ; preds = %1204
  store i32 1, ptr %12, align 4
  br label %1831

1206:                                             ; preds = %1203, %1201, %1199
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %7, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1198, i64 noundef 56) #13
  br label %1832

1210:                                             ; preds = %143
  %1211 = load ptr, ptr %4, align 8, !tbaa !5
  %1212 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #12
          to label %1213 unwind label %167

1213:                                             ; preds = %1210
  store i1 true, ptr %88, align 1
  %1214 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1215 unwind label %1222

1215:                                             ; preds = %1213
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %1214)
          to label %1216 unwind label %1222

1216:                                             ; preds = %1215
  %1217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Token11str_hygieneEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1218 unwind label %1226

1218:                                             ; preds = %1216
  invoke void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %1217)
          to label %1219 unwind label %1226

1219:                                             ; preds = %1218
  invoke void @_ZN3AST15ExprNode_StringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(80) %1212, ptr noundef %86, ptr noundef %87)
          to label %1220 unwind label %1230

1220:                                             ; preds = %1219
  store i1 false, ptr %88, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1211, ptr noundef %1212)
          to label %1221 unwind label %1230

1221:                                             ; preds = %1220
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #0
  store i32 1, ptr %12, align 4
  br label %1831

1222:                                             ; preds = %1215, %1213
  %1223 = landingpad { ptr, i32 }
          cleanup
  %1224 = extractvalue { ptr, i32 } %1223, 0
  store ptr %1224, ptr %7, align 8
  %1225 = extractvalue { ptr, i32 } %1223, 1
  store i32 %1225, ptr %8, align 4
  br label %1235

1226:                                             ; preds = %1218, %1216
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %7, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %8, align 4
  br label %1234

1230:                                             ; preds = %1220, %1219
  %1231 = landingpad { ptr, i32 }
          cleanup
  %1232 = extractvalue { ptr, i32 } %1231, 0
  store ptr %1232, ptr %7, align 8
  %1233 = extractvalue { ptr, i32 } %1231, 1
  store i32 %1233, ptr %8, align 4
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  br label %1234

1234:                                             ; preds = %1230, %1226
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #0
  br label %1235

1235:                                             ; preds = %1234, %1222
  %1236 = load i1, ptr %88, align 1
  br i1 %1236, label %1237, label %1238

1237:                                             ; preds = %1235
  call void @_ZdlPvm(ptr noundef %1212, i64 noundef 80) #13
  br label %1238

1238:                                             ; preds = %1237, %1235
  br label %1832

1239:                                             ; preds = %143
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #12
          to label %1242 unwind label %167

1242:                                             ; preds = %1239
  store i1 true, ptr %90, align 1
  %1243 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1244 unwind label %1248

1244:                                             ; preds = %1242
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(32) %1243)
          to label %1245 unwind label %1248

1245:                                             ; preds = %1244
  invoke void @_ZN3AST19ExprNode_ByteStringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %1241, ptr noundef %89)
          to label %1246 unwind label %1252

1246:                                             ; preds = %1245
  store i1 false, ptr %90, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1240, ptr noundef %1241)
          to label %1247 unwind label %1252

1247:                                             ; preds = %1246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #0
  store i32 1, ptr %12, align 4
  br label %1831

1248:                                             ; preds = %1244, %1242
  %1249 = landingpad { ptr, i32 }
          cleanup
  %1250 = extractvalue { ptr, i32 } %1249, 0
  store ptr %1250, ptr %7, align 8
  %1251 = extractvalue { ptr, i32 } %1249, 1
  store i32 %1251, ptr %8, align 4
  br label %1256

1252:                                             ; preds = %1246, %1245
  %1253 = landingpad { ptr, i32 }
          cleanup
  %1254 = extractvalue { ptr, i32 } %1253, 0
  store ptr %1254, ptr %7, align 8
  %1255 = extractvalue { ptr, i32 } %1253, 1
  store i32 %1255, ptr %8, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #0
  br label %1256

1256:                                             ; preds = %1252, %1248
  %1257 = load i1, ptr %90, align 1
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1256
  call void @_ZdlPvm(ptr noundef %1241, i64 noundef 72) #13
  br label %1259

1259:                                             ; preds = %1258, %1256
  br label %1832

1260:                                             ; preds = %143
  %1261 = load ptr, ptr %4, align 8, !tbaa !5
  %1262 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #12
          to label %1263 unwind label %167

1263:                                             ; preds = %1260
  invoke void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41) %1262, i1 noundef zeroext true)
          to label %1264 unwind label %1266

1264:                                             ; preds = %1263
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1261, ptr noundef %1262)
          to label %1265 unwind label %167

1265:                                             ; preds = %1264
  store i32 1, ptr %12, align 4
  br label %1831

1266:                                             ; preds = %1263
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %7, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1262, i64 noundef 48) #13
  br label %1832

1270:                                             ; preds = %143
  %1271 = load ptr, ptr %4, align 8, !tbaa !5
  %1272 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #12
          to label %1273 unwind label %167

1273:                                             ; preds = %1270
  invoke void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41) %1272, i1 noundef zeroext false)
          to label %1274 unwind label %1276

1274:                                             ; preds = %1273
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1271, ptr noundef %1272)
          to label %1275 unwind label %167

1275:                                             ; preds = %1274
  store i32 1, ptr %12, align 4
  br label %1831

1276:                                             ; preds = %1273
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %7, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %8, align 4
  call void @_ZdlPvm(ptr noundef %1272, i64 noundef 48) #13
  br label %1832

1280:                                             ; preds = %143
  call void @llvm.lifetime.start.p0(i64 88, ptr %91) #0
  %1281 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %91, ptr noundef nonnull align 8 dereferenceable(176) %1281)
          to label %1282 unwind label %1302

1282:                                             ; preds = %1280
  %1283 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %91)
          to label %1284 unwind label %1306

1284:                                             ; preds = %1282
  %1285 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1283)
          to label %1286 unwind label %1306

1286:                                             ; preds = %1284
  %1287 = icmp eq i32 %1285, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %91) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %91) #0
  br i1 %1287, label %1288, label %1326

1288:                                             ; preds = %1286
  br label %1289

1289:                                             ; preds = %1288
  %1290 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1291 unwind label %167

1291:                                             ; preds = %1289
  br i1 %1290, label %1292, label %1311

1292:                                             ; preds = %1291
  %1293 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1293, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %1295 unwind label %167

1295:                                             ; preds = %1292
  %1296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1294, ptr noundef @.str.24)
          to label %1297 unwind label %167

1297:                                             ; preds = %1295
  %1298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1296, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1299 unwind label %167

1299:                                             ; preds = %1297
  %1300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1298, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1301 unwind label %167

1301:                                             ; preds = %1299
  br label %1311

1302:                                             ; preds = %1280
  %1303 = landingpad { ptr, i32 }
          cleanup
  %1304 = extractvalue { ptr, i32 } %1303, 0
  store ptr %1304, ptr %7, align 8
  %1305 = extractvalue { ptr, i32 } %1303, 1
  store i32 %1305, ptr %8, align 4
  br label %1310

1306:                                             ; preds = %1284, %1282
  %1307 = landingpad { ptr, i32 }
          cleanup
  %1308 = extractvalue { ptr, i32 } %1307, 0
  store ptr %1308, ptr %7, align 8
  %1309 = extractvalue { ptr, i32 } %1307, 1
  store i32 %1309, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %91) #0
  br label %1310

1310:                                             ; preds = %1306, %1302
  call void @llvm.lifetime.end.p0(i64 88, ptr %91) #0
  br label %1832

1311:                                             ; preds = %1301, %1291
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  %1314 = load ptr, ptr %4, align 8, !tbaa !5
  %1315 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #12
          to label %1316 unwind label %167

1316:                                             ; preds = %1313
  store i1 true, ptr %93, align 1
  call void @llvm.memset.p0.i64(ptr align 8 %92, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #0
  invoke void @_ZN3AST14ExprNode_TupleC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(64) %1315, ptr noundef %92)
          to label %1317 unwind label %1319

1317:                                             ; preds = %1316
  store i1 false, ptr %93, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1314, ptr noundef %1315)
          to label %1318 unwind label %1319

1318:                                             ; preds = %1317
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #0
  store i32 1, ptr %12, align 4
  br label %1831

1319:                                             ; preds = %1317, %1316
  %1320 = landingpad { ptr, i32 }
          cleanup
  %1321 = extractvalue { ptr, i32 } %1320, 0
  store ptr %1321, ptr %7, align 8
  %1322 = extractvalue { ptr, i32 } %1320, 1
  store i32 %1322, ptr %8, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #0
  %1323 = load i1, ptr %93, align 1
  br i1 %1323, label %1324, label %1325

1324:                                             ; preds = %1319
  call void @_ZdlPvm(ptr noundef %1315, i64 noundef 64) #13
  br label %1325

1325:                                             ; preds = %1324, %1319
  br label %1832

1326:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 40, ptr %94) #0
  %1327 = load ptr, ptr %4, align 8, !tbaa !5
  %1328 = load ptr, ptr %4, align 8, !tbaa !5
  %1329 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1328)
          to label %1330 unwind label %1363

1330:                                             ; preds = %1326
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %1329, i64 32, i1 false), !tbaa.struct !23
  invoke void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %94, ptr noundef nonnull align 8 dereferenceable(176) %1327, ptr noundef byval(%struct.ParseState) align 8 %95)
          to label %1331 unwind label %1363

1331:                                             ; preds = %1330
  %1332 = load ptr, ptr %4, align 8, !tbaa !5
  %1333 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1332)
          to label %1334 unwind label %1367

1334:                                             ; preds = %1331
  %1335 = getelementptr inbounds %struct.ParseState, ptr %1333, i32 0, i32 0
  store i8 0, ptr %1335, align 8, !tbaa !12
  %1336 = load ptr, ptr %4, align 8, !tbaa !5
  %1337 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1336)
          to label %1338 unwind label %1367

1338:                                             ; preds = %1334
  %1339 = getelementptr inbounds %struct.ParseState, ptr %1337, i32 0, i32 1
  store i8 0, ptr %1339, align 1, !tbaa !25
  %1340 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %96, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1341 unwind label %1367

1341:                                             ; preds = %1338
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1340, ptr noundef %96)
          to label %1342 unwind label %1371

1342:                                             ; preds = %1341
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #0
  store i1 false, ptr %97, align 1
  %1343 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1343)
          to label %1344 unwind label %1367

1344:                                             ; preds = %1342
  call void @llvm.lifetime.start.p0(i64 88, ptr %98) #0
  %1345 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %98, ptr noundef nonnull align 8 dereferenceable(176) %1345)
          to label %1346 unwind label %1375

1346:                                             ; preds = %1344
  %1347 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %98)
          to label %1348 unwind label %1379

1348:                                             ; preds = %1346
  %1349 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1347)
          to label %1350 unwind label %1379

1350:                                             ; preds = %1348
  %1351 = icmp eq i32 %1349, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %98) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %98) #0
  br i1 %1351, label %1352, label %1460

1352:                                             ; preds = %1350
  call void @llvm.lifetime.start.p0(i64 24, ptr %99) #0
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #0
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %1353 unwind label %1384

1353:                                             ; preds = %1352
  br label %1354

1354:                                             ; preds = %1410, %1353
  call void @llvm.lifetime.start.p0(i64 88, ptr %100) #0
  %1355 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %100, ptr noundef nonnull align 8 dereferenceable(176) %1355)
          to label %1356 unwind label %1388

1356:                                             ; preds = %1354
  %1357 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %100)
          to label %1358 unwind label %1392

1358:                                             ; preds = %1356
  %1359 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1357)
          to label %1360 unwind label %1392

1360:                                             ; preds = %1358
  %1361 = icmp eq i32 %1359, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %100) #0
  br i1 %1361, label %1362, label %1397

1362:                                             ; preds = %1360
  br label %1412

1363:                                             ; preds = %1330, %1326
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %7, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %8, align 4
  br label %1516

1367:                                             ; preds = %1342, %1338, %1334, %1331
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %7, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %8, align 4
  br label %1515

1371:                                             ; preds = %1341
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %7, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #0
  br label %1515

1375:                                             ; preds = %1344
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %7, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %8, align 4
  br label %1383

1379:                                             ; preds = %1348, %1346
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %7, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %98) #0
  br label %1383

1383:                                             ; preds = %1379, %1375
  call void @llvm.lifetime.end.p0(i64 88, ptr %98) #0
  br label %1514

1384:                                             ; preds = %1397, %1352
  %1385 = landingpad { ptr, i32 }
          cleanup
  %1386 = extractvalue { ptr, i32 } %1385, 0
  store ptr %1386, ptr %7, align 8
  %1387 = extractvalue { ptr, i32 } %1385, 1
  store i32 %1387, ptr %8, align 4
  br label %1459

1388:                                             ; preds = %1354
  %1389 = landingpad { ptr, i32 }
          cleanup
  %1390 = extractvalue { ptr, i32 } %1389, 0
  store ptr %1390, ptr %7, align 8
  %1391 = extractvalue { ptr, i32 } %1389, 1
  store i32 %1391, ptr %8, align 4
  br label %1396

1392:                                             ; preds = %1358, %1356
  %1393 = landingpad { ptr, i32 }
          cleanup
  %1394 = extractvalue { ptr, i32 } %1393, 0
  store ptr %1394, ptr %7, align 8
  %1395 = extractvalue { ptr, i32 } %1393, 1
  store i32 %1395, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %100) #0
  br label %1396

1396:                                             ; preds = %1392, %1388
  call void @llvm.lifetime.end.p0(i64 88, ptr %100) #0
  br label %1459

1397:                                             ; preds = %1360
  %1398 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %101, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1399 unwind label %1384

1399:                                             ; preds = %1397
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1398, ptr noundef %101)
          to label %1400 unwind label %1420

1400:                                             ; preds = %1399
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %101) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #0
  %1401 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %102, ptr noundef nonnull align 8 dereferenceable(176) %1401)
          to label %1402 unwind label %1424

1402:                                             ; preds = %1400
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1403 unwind label %1428

1403:                                             ; preds = %1402
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1404

1404:                                             ; preds = %1403
  call void @llvm.lifetime.start.p0(i64 88, ptr %103) #0
  %1405 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %103, ptr noundef nonnull align 8 dereferenceable(176) %1405)
          to label %1406 unwind label %1433

1406:                                             ; preds = %1404
  %1407 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %103)
          to label %1408 unwind label %1437

1408:                                             ; preds = %1406
  %1409 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1407)
          to label %1410 unwind label %1437

1410:                                             ; preds = %1408
  %1411 = icmp eq i32 %1409, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %103) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %103) #0
  br i1 %1411, label %1354, label %1412, !llvm.loop !26

1412:                                             ; preds = %1410, %1362
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  %1413 = load ptr, ptr %4, align 8, !tbaa !5
  %1414 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #12
          to label %1415 unwind label %1442

1415:                                             ; preds = %1412
  store i1 true, ptr %106, align 1
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %105, ptr noundef nonnull align 8 dereferenceable(24) %99) #0
  invoke void @_ZN3AST14ExprNode_TupleC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(64) %1414, ptr noundef %105)
          to label %1416 unwind label %1446

1416:                                             ; preds = %1415
  store i1 false, ptr %106, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %104, ptr noundef nonnull align 8 dereferenceable(176) %1413, ptr noundef %1414)
          to label %1417 unwind label %1446

1417:                                             ; preds = %1416
  %1418 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1419 unwind label %1450

1419:                                             ; preds = %1417
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %105) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %99) #0
  br label %1460

1420:                                             ; preds = %1399
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %7, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %101) #0
  br label %1459

1424:                                             ; preds = %1400
  %1425 = landingpad { ptr, i32 }
          cleanup
  %1426 = extractvalue { ptr, i32 } %1425, 0
  store ptr %1426, ptr %7, align 8
  %1427 = extractvalue { ptr, i32 } %1425, 1
  store i32 %1427, ptr %8, align 4
  br label %1432

1428:                                             ; preds = %1402
  %1429 = landingpad { ptr, i32 }
          cleanup
  %1430 = extractvalue { ptr, i32 } %1429, 0
  store ptr %1430, ptr %7, align 8
  %1431 = extractvalue { ptr, i32 } %1429, 1
  store i32 %1431, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  br label %1432

1432:                                             ; preds = %1428, %1424
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1459

1433:                                             ; preds = %1404
  %1434 = landingpad { ptr, i32 }
          cleanup
  %1435 = extractvalue { ptr, i32 } %1434, 0
  store ptr %1435, ptr %7, align 8
  %1436 = extractvalue { ptr, i32 } %1434, 1
  store i32 %1436, ptr %8, align 4
  br label %1441

1437:                                             ; preds = %1408, %1406
  %1438 = landingpad { ptr, i32 }
          cleanup
  %1439 = extractvalue { ptr, i32 } %1438, 0
  store ptr %1439, ptr %7, align 8
  %1440 = extractvalue { ptr, i32 } %1438, 1
  store i32 %1440, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %103) #0
  br label %1441

1441:                                             ; preds = %1437, %1433
  call void @llvm.lifetime.end.p0(i64 88, ptr %103) #0
  br label %1459

1442:                                             ; preds = %1412
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %7, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %8, align 4
  br label %1458

1446:                                             ; preds = %1416, %1415
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %7, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %8, align 4
  br label %1454

1450:                                             ; preds = %1417
  %1451 = landingpad { ptr, i32 }
          cleanup
  %1452 = extractvalue { ptr, i32 } %1451, 0
  store ptr %1452, ptr %7, align 8
  %1453 = extractvalue { ptr, i32 } %1451, 1
  store i32 %1453, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  br label %1454

1454:                                             ; preds = %1450, %1446
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %105) #0
  %1455 = load i1, ptr %106, align 1
  br i1 %1455, label %1456, label %1457

1456:                                             ; preds = %1454
  call void @_ZdlPvm(ptr noundef %1414, i64 noundef 64) #13
  br label %1457

1457:                                             ; preds = %1456, %1454
  br label %1458

1458:                                             ; preds = %1457, %1442
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  br label %1459

1459:                                             ; preds = %1458, %1441, %1432, %1420, %1396, %1384
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %99) #0
  br label %1514

1460:                                             ; preds = %1419, %1350
  br label %1461

1461:                                             ; preds = %1460
  %1462 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1463 unwind label %1485

1463:                                             ; preds = %1461
  %1464 = icmp ne i32 %1462, 24
  br i1 %1464, label %1465, label %1508

1465:                                             ; preds = %1463
  br label %1466

1466:                                             ; preds = %1465
  %1467 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1468 unwind label %1485

1468:                                             ; preds = %1466
  br i1 %1467, label %1469, label %1489

1469:                                             ; preds = %1468
  %1470 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1470, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %1472 unwind label %1485

1472:                                             ; preds = %1469
  %1473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1471, ptr noundef @.str.10)
          to label %1474 unwind label %1485

1474:                                             ; preds = %1472
  %1475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1473, ptr noundef @.str.1)
          to label %1476 unwind label %1485

1476:                                             ; preds = %1474
  %1477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1475, ptr noundef @.str.2)
          to label %1478 unwind label %1485

1478:                                             ; preds = %1476
  %1479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1477, i32 noundef 1519)
          to label %1480 unwind label %1485

1480:                                             ; preds = %1478
  %1481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1479, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1482 unwind label %1485

1482:                                             ; preds = %1480
  %1483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1481, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1484 unwind label %1485

1484:                                             ; preds = %1482
  br label %1489

1485:                                             ; preds = %1482, %1480, %1478, %1476, %1474, %1472, %1469, %1466, %1461
  %1486 = landingpad { ptr, i32 }
          cleanup
  %1487 = extractvalue { ptr, i32 } %1486, 0
  store ptr %1487, ptr %7, align 8
  %1488 = extractvalue { ptr, i32 } %1486, 1
  store i32 %1488, ptr %8, align 4
  br label %1514

1489:                                             ; preds = %1484, %1468
  br label %1490

1490:                                             ; preds = %1489
  br label %1491

1491:                                             ; preds = %1490
  store i1 true, ptr %108, align 1
  %1492 = call ptr @__cxa_allocate_exception(i64 96) #0
  %1493 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %107, i32 noundef 24)
          to label %1494 unwind label %1496

1494:                                             ; preds = %1491
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %1492, ptr noundef nonnull align 8 dereferenceable(176) %1493, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %107)
          to label %1495 unwind label %1500

1495:                                             ; preds = %1494
  store i1 false, ptr %108, align 1
  invoke void @__cxa_throw(ptr %1492, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %1500

1496:                                             ; preds = %1491
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %7, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %8, align 4
  br label %1504

1500:                                             ; preds = %1495, %1494
  %1501 = landingpad { ptr, i32 }
          cleanup
  %1502 = extractvalue { ptr, i32 } %1501, 0
  store ptr %1502, ptr %7, align 8
  %1503 = extractvalue { ptr, i32 } %1501, 1
  store i32 %1503, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %107) #0
  br label %1504

1504:                                             ; preds = %1500, %1496
  %1505 = load i1, ptr %108, align 1
  br i1 %1505, label %1506, label %1507

1506:                                             ; preds = %1504
  call void @__cxa_free_exception(ptr %1492) #0
  br label %1507

1507:                                             ; preds = %1506, %1504
  br label %1514

1508:                                             ; preds = %1463
  br label %1509

1509:                                             ; preds = %1508
  br label %1510

1510:                                             ; preds = %1509
  store i1 true, ptr %97, align 1
  store i32 1, ptr %12, align 4
  %1511 = load i1, ptr %97, align 1
  br i1 %1511, label %1513, label %1512

1512:                                             ; preds = %1510
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #0
  br label %1513

1513:                                             ; preds = %1512, %1510
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %94) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %94) #0
  br label %1831

1514:                                             ; preds = %1507, %1485, %1459, %1383
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #0
  br label %1515

1515:                                             ; preds = %1514, %1371, %1367
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %94) #0
  br label %1516

1516:                                             ; preds = %1515, %1363
  call void @llvm.lifetime.end.p0(i64 40, ptr %94) #0
  br label %1832

1517:                                             ; preds = %143
  call void @llvm.lifetime.start.p0(i64 88, ptr %109) #0
  %1518 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %109, ptr noundef nonnull align 8 dereferenceable(176) %1518)
          to label %1519 unwind label %1531

1519:                                             ; preds = %1517
  %1520 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %109)
          to label %1521 unwind label %1535

1521:                                             ; preds = %1519
  %1522 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1520)
          to label %1523 unwind label %1535

1523:                                             ; preds = %1521
  %1524 = icmp eq i32 %1522, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %109) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %109) #0
  br i1 %1524, label %1525, label %1547

1525:                                             ; preds = %1523
  %1526 = load ptr, ptr %4, align 8, !tbaa !5
  %1527 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #12
          to label %1528 unwind label %167

1528:                                             ; preds = %1525
  store i1 true, ptr %111, align 1
  call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #0
  invoke void @_ZN3AST14ExprNode_ArrayC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %1527, ptr noundef %110)
          to label %1529 unwind label %1540

1529:                                             ; preds = %1528
  store i1 false, ptr %111, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1526, ptr noundef %1527)
          to label %1530 unwind label %1540

1530:                                             ; preds = %1529
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #0
  store i32 1, ptr %12, align 4
  br label %1831

1531:                                             ; preds = %1517
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %7, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %8, align 4
  br label %1539

1535:                                             ; preds = %1521, %1519
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %7, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %109) #0
  br label %1539

1539:                                             ; preds = %1535, %1531
  call void @llvm.lifetime.end.p0(i64 88, ptr %109) #0
  br label %1832

1540:                                             ; preds = %1529, %1528
  %1541 = landingpad { ptr, i32 }
          cleanup
  %1542 = extractvalue { ptr, i32 } %1541, 0
  store ptr %1542, ptr %7, align 8
  %1543 = extractvalue { ptr, i32 } %1541, 1
  store i32 %1543, ptr %8, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #0
  %1544 = load i1, ptr %111, align 1
  br i1 %1544, label %1545, label %1546

1545:                                             ; preds = %1540
  call void @_ZdlPvm(ptr noundef %1527, i64 noundef 72) #13
  br label %1546

1546:                                             ; preds = %1545, %1540
  br label %1832

1547:                                             ; preds = %1523
  call void @llvm.lifetime.start.p0(i64 40, ptr %112) #0
  %1548 = load ptr, ptr %4, align 8, !tbaa !5
  %1549 = load ptr, ptr %4, align 8, !tbaa !5
  %1550 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1549)
          to label %1551 unwind label %1604

1551:                                             ; preds = %1547
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %113, ptr align 8 %1550, i64 32, i1 false), !tbaa.struct !23
  invoke void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %112, ptr noundef nonnull align 8 dereferenceable(176) %1548, ptr noundef byval(%struct.ParseState) align 8 %113)
          to label %1552 unwind label %1604

1552:                                             ; preds = %1551
  %1553 = load ptr, ptr %4, align 8, !tbaa !5
  %1554 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1553)
          to label %1555 unwind label %1608

1555:                                             ; preds = %1552
  %1556 = getelementptr inbounds %struct.ParseState, ptr %1554, i32 0, i32 0
  store i8 0, ptr %1556, align 8, !tbaa !12
  %1557 = load ptr, ptr %4, align 8, !tbaa !5
  %1558 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1557)
          to label %1559 unwind label %1608

1559:                                             ; preds = %1555
  %1560 = getelementptr inbounds %struct.ParseState, ptr %1558, i32 0, i32 1
  store i8 0, ptr %1560, align 1, !tbaa !25
  %1561 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %114, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1562 unwind label %1608

1562:                                             ; preds = %1559
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1561, ptr noundef %114)
          to label %1563 unwind label %1612

1563:                                             ; preds = %1562
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %114) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #0
  %1564 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %115, ptr noundef nonnull align 8 dereferenceable(176) %1564)
          to label %1565 unwind label %1616

1565:                                             ; preds = %1563
  call void @llvm.lifetime.start.p0(i64 88, ptr %116) #0
  %1566 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %116, ptr noundef nonnull align 8 dereferenceable(176) %1566)
          to label %1567 unwind label %1620

1567:                                             ; preds = %1565
  %1568 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %116)
          to label %1569 unwind label %1624

1569:                                             ; preds = %1567
  %1570 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1568)
          to label %1571 unwind label %1624

1571:                                             ; preds = %1569
  %1572 = icmp eq i32 %1570, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %116) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %116) #0
  br i1 %1572, label %1573, label %1694

1573:                                             ; preds = %1571
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  %1574 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %117, ptr noundef nonnull align 8 dereferenceable(176) %1574)
          to label %1575 unwind label %1629

1575:                                             ; preds = %1573
  br label %1576

1576:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 88, ptr %118) #0
  %1577 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %118, ptr noundef nonnull align 8 dereferenceable(176) %1577)
          to label %1578 unwind label %1633

1578:                                             ; preds = %1576
  %1579 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %118)
          to label %1580 unwind label %1637

1580:                                             ; preds = %1578
  %1581 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1579)
          to label %1582 unwind label %1637

1582:                                             ; preds = %1580
  %1583 = icmp ne i32 %1581, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %118) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %118) #0
  br i1 %1583, label %1584, label %1665

1584:                                             ; preds = %1582
  br label %1585

1585:                                             ; preds = %1584
  %1586 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1587 unwind label %1642

1587:                                             ; preds = %1585
  br i1 %1586, label %1588, label %1646

1588:                                             ; preds = %1587
  %1589 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1589, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %1591 unwind label %1642

1591:                                             ; preds = %1588
  %1592 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1590, ptr noundef @.str)
          to label %1593 unwind label %1642

1593:                                             ; preds = %1591
  %1594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1592, ptr noundef @.str.1)
          to label %1595 unwind label %1642

1595:                                             ; preds = %1593
  %1596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1594, ptr noundef @.str.2)
          to label %1597 unwind label %1642

1597:                                             ; preds = %1595
  %1598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1596, i32 noundef 1537)
          to label %1599 unwind label %1642

1599:                                             ; preds = %1597
  %1600 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1598, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1601 unwind label %1642

1601:                                             ; preds = %1599
  %1602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1600, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1603 unwind label %1642

1603:                                             ; preds = %1601
  br label %1646

1604:                                             ; preds = %1551, %1547
  %1605 = landingpad { ptr, i32 }
          cleanup
  %1606 = extractvalue { ptr, i32 } %1605, 0
  store ptr %1606, ptr %7, align 8
  %1607 = extractvalue { ptr, i32 } %1605, 1
  store i32 %1607, ptr %8, align 4
  br label %1822

1608:                                             ; preds = %1559, %1555, %1552
  %1609 = landingpad { ptr, i32 }
          cleanup
  %1610 = extractvalue { ptr, i32 } %1609, 0
  store ptr %1610, ptr %7, align 8
  %1611 = extractvalue { ptr, i32 } %1609, 1
  store i32 %1611, ptr %8, align 4
  br label %1821

1612:                                             ; preds = %1562
  %1613 = landingpad { ptr, i32 }
          cleanup
  %1614 = extractvalue { ptr, i32 } %1613, 0
  store ptr %1614, ptr %7, align 8
  %1615 = extractvalue { ptr, i32 } %1613, 1
  store i32 %1615, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %114) #0
  br label %1821

1616:                                             ; preds = %1563
  %1617 = landingpad { ptr, i32 }
          cleanup
  %1618 = extractvalue { ptr, i32 } %1617, 0
  store ptr %1618, ptr %7, align 8
  %1619 = extractvalue { ptr, i32 } %1617, 1
  store i32 %1619, ptr %8, align 4
  br label %1820

1620:                                             ; preds = %1565
  %1621 = landingpad { ptr, i32 }
          cleanup
  %1622 = extractvalue { ptr, i32 } %1621, 0
  store ptr %1622, ptr %7, align 8
  %1623 = extractvalue { ptr, i32 } %1621, 1
  store i32 %1623, ptr %8, align 4
  br label %1628

1624:                                             ; preds = %1569, %1567
  %1625 = landingpad { ptr, i32 }
          cleanup
  %1626 = extractvalue { ptr, i32 } %1625, 0
  store ptr %1626, ptr %7, align 8
  %1627 = extractvalue { ptr, i32 } %1625, 1
  store i32 %1627, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %116) #0
  br label %1628

1628:                                             ; preds = %1624, %1620
  call void @llvm.lifetime.end.p0(i64 88, ptr %116) #0
  br label %1819

1629:                                             ; preds = %1573
  %1630 = landingpad { ptr, i32 }
          cleanup
  %1631 = extractvalue { ptr, i32 } %1630, 0
  store ptr %1631, ptr %7, align 8
  %1632 = extractvalue { ptr, i32 } %1630, 1
  store i32 %1632, ptr %8, align 4
  br label %1693

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

1637:                                             ; preds = %1580, %1578
  %1638 = landingpad { ptr, i32 }
          cleanup
  %1639 = extractvalue { ptr, i32 } %1638, 0
  store ptr %1639, ptr %7, align 8
  %1640 = extractvalue { ptr, i32 } %1638, 1
  store i32 %1640, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %118) #0
  br label %1641

1641:                                             ; preds = %1637, %1633
  call void @llvm.lifetime.end.p0(i64 88, ptr %118) #0
  br label %1692

1642:                                             ; preds = %1667, %1601, %1599, %1597, %1595, %1593, %1591, %1588, %1585
  %1643 = landingpad { ptr, i32 }
          cleanup
  %1644 = extractvalue { ptr, i32 } %1643, 0
  store ptr %1644, ptr %7, align 8
  %1645 = extractvalue { ptr, i32 } %1643, 1
  store i32 %1645, ptr %8, align 4
  br label %1692

1646:                                             ; preds = %1603, %1587
  br label %1647

1647:                                             ; preds = %1646
  br label %1648

1648:                                             ; preds = %1647
  store i1 true, ptr %120, align 1
  %1649 = call ptr @__cxa_allocate_exception(i64 96) #0
  %1650 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %119, i32 noundef 30)
          to label %1651 unwind label %1653

1651:                                             ; preds = %1648
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %1649, ptr noundef nonnull align 8 dereferenceable(176) %1650, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %119)
          to label %1652 unwind label %1657

1652:                                             ; preds = %1651
  store i1 false, ptr %120, align 1
  invoke void @__cxa_throw(ptr %1649, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %1657

1653:                                             ; preds = %1648
  %1654 = landingpad { ptr, i32 }
          cleanup
  %1655 = extractvalue { ptr, i32 } %1654, 0
  store ptr %1655, ptr %7, align 8
  %1656 = extractvalue { ptr, i32 } %1654, 1
  store i32 %1656, ptr %8, align 4
  br label %1661

1657:                                             ; preds = %1652, %1651
  %1658 = landingpad { ptr, i32 }
          cleanup
  %1659 = extractvalue { ptr, i32 } %1658, 0
  store ptr %1659, ptr %7, align 8
  %1660 = extractvalue { ptr, i32 } %1658, 1
  store i32 %1660, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %119) #0
  br label %1661

1661:                                             ; preds = %1657, %1653
  %1662 = load i1, ptr %120, align 1
  br i1 %1662, label %1663, label %1664

1663:                                             ; preds = %1661
  call void @__cxa_free_exception(ptr %1649) #0
  br label %1664

1664:                                             ; preds = %1663, %1661
  br label %1692

1665:                                             ; preds = %1582
  br label %1666

1666:                                             ; preds = %1665
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load ptr, ptr %4, align 8, !tbaa !5
  %1669 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #12
          to label %1670 unwind label %1642

1670:                                             ; preds = %1667
  store i1 true, ptr %123, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %1671 unwind label %1675

1671:                                             ; preds = %1670
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1672 unwind label %1679

1672:                                             ; preds = %1671
  invoke void @_ZN3AST14ExprNode_ArrayC2ENS_9ExprNodePES1_(ptr noundef nonnull align 8 dereferenceable(72) %1669, ptr noundef %121, ptr noundef %122)
          to label %1673 unwind label %1683

1673:                                             ; preds = %1672
  store i1 false, ptr %123, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1668, ptr noundef %1669)
          to label %1674 unwind label %1683

1674:                                             ; preds = %1673
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #0
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  store i32 1, ptr %12, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1818

1675:                                             ; preds = %1670
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %7, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %8, align 4
  br label %1688

1679:                                             ; preds = %1671
  %1680 = landingpad { ptr, i32 }
          cleanup
  %1681 = extractvalue { ptr, i32 } %1680, 0
  store ptr %1681, ptr %7, align 8
  %1682 = extractvalue { ptr, i32 } %1680, 1
  store i32 %1682, ptr %8, align 4
  br label %1687

1683:                                             ; preds = %1673, %1672
  %1684 = landingpad { ptr, i32 }
          cleanup
  %1685 = extractvalue { ptr, i32 } %1684, 0
  store ptr %1685, ptr %7, align 8
  %1686 = extractvalue { ptr, i32 } %1684, 1
  store i32 %1686, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #0
  br label %1687

1687:                                             ; preds = %1683, %1679
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  br label %1688

1688:                                             ; preds = %1687, %1675
  %1689 = load i1, ptr %123, align 1
  br i1 %1689, label %1690, label %1691

1690:                                             ; preds = %1688
  call void @_ZdlPvm(ptr noundef %1669, i64 noundef 72) #13
  br label %1691

1691:                                             ; preds = %1690, %1688
  br label %1692

1692:                                             ; preds = %1691, %1664, %1642, %1641
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  br label %1693

1693:                                             ; preds = %1692, %1629
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1819

1694:                                             ; preds = %1571
  call void @llvm.lifetime.start.p0(i64 24, ptr %124) #0
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %1695 unwind label %1709

1695:                                             ; preds = %1694
  br label %1696

1696:                                             ; preds = %1739, %1695
  %1697 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1698 unwind label %1709

1698:                                             ; preds = %1696
  %1699 = icmp eq i32 %1697, 31
  br i1 %1699, label %1700, label %1758

1700:                                             ; preds = %1698
  call void @llvm.lifetime.start.p0(i64 88, ptr %125) #0
  %1701 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %125, ptr noundef nonnull align 8 dereferenceable(176) %1701)
          to label %1702 unwind label %1713

1702:                                             ; preds = %1700
  %1703 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %125)
          to label %1704 unwind label %1717

1704:                                             ; preds = %1702
  %1705 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1703)
          to label %1706 unwind label %1717

1706:                                             ; preds = %1704
  %1707 = icmp eq i32 %1705, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %125) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %125) #0
  br i1 %1707, label %1708, label %1722

1708:                                             ; preds = %1706
  br label %1758

1709:                                             ; preds = %1804, %1780, %1778, %1776, %1774, %1772, %1770, %1767, %1764, %1759, %1722, %1696, %1694
  %1710 = landingpad { ptr, i32 }
          cleanup
  %1711 = extractvalue { ptr, i32 } %1710, 0
  store ptr %1711, ptr %7, align 8
  %1712 = extractvalue { ptr, i32 } %1710, 1
  store i32 %1712, ptr %8, align 4
  br label %1817

1713:                                             ; preds = %1700
  %1714 = landingpad { ptr, i32 }
          cleanup
  %1715 = extractvalue { ptr, i32 } %1714, 0
  store ptr %1715, ptr %7, align 8
  %1716 = extractvalue { ptr, i32 } %1714, 1
  store i32 %1716, ptr %8, align 4
  br label %1721

1717:                                             ; preds = %1704, %1702
  %1718 = landingpad { ptr, i32 }
          cleanup
  %1719 = extractvalue { ptr, i32 } %1718, 0
  store ptr %1719, ptr %7, align 8
  %1720 = extractvalue { ptr, i32 } %1718, 1
  store i32 %1720, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %125) #0
  br label %1721

1721:                                             ; preds = %1717, %1713
  call void @llvm.lifetime.end.p0(i64 88, ptr %125) #0
  br label %1817

1722:                                             ; preds = %1706
  %1723 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %126, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1724 unwind label %1709

1724:                                             ; preds = %1722
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1723, ptr noundef %126)
          to label %1725 unwind label %1726

1725:                                             ; preds = %1724
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %126) #0
  br label %1730

1726:                                             ; preds = %1724
  %1727 = landingpad { ptr, i32 }
          cleanup
  %1728 = extractvalue { ptr, i32 } %1727, 0
  store ptr %1728, ptr %7, align 8
  %1729 = extractvalue { ptr, i32 } %1727, 1
  store i32 %1729, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %126) #0
  br label %1817

1730:                                             ; preds = %1725
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #0
  %1731 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %127, ptr noundef nonnull align 8 dereferenceable(176) %1731)
          to label %1732 unwind label %1740

1732:                                             ; preds = %1730
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %1733 unwind label %1744

1733:                                             ; preds = %1732
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  call void @llvm.lifetime.start.p0(i64 88, ptr %128) #0
  %1734 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %128, ptr noundef nonnull align 8 dereferenceable(176) %1734)
          to label %1735 unwind label %1749

1735:                                             ; preds = %1733
  %1736 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %128)
          to label %1737 unwind label %1753

1737:                                             ; preds = %1735
  %1738 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1736)
          to label %1739 unwind label %1753

1739:                                             ; preds = %1737
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %128) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %128) #0
  br label %1696, !llvm.loop !27

1740:                                             ; preds = %1730
  %1741 = landingpad { ptr, i32 }
          cleanup
  %1742 = extractvalue { ptr, i32 } %1741, 0
  store ptr %1742, ptr %7, align 8
  %1743 = extractvalue { ptr, i32 } %1741, 1
  store i32 %1743, ptr %8, align 4
  br label %1748

1744:                                             ; preds = %1732
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %7, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  br label %1748

1748:                                             ; preds = %1744, %1740
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  br label %1817

1749:                                             ; preds = %1733
  %1750 = landingpad { ptr, i32 }
          cleanup
  %1751 = extractvalue { ptr, i32 } %1750, 0
  store ptr %1751, ptr %7, align 8
  %1752 = extractvalue { ptr, i32 } %1750, 1
  store i32 %1752, ptr %8, align 4
  br label %1757

1753:                                             ; preds = %1737, %1735
  %1754 = landingpad { ptr, i32 }
          cleanup
  %1755 = extractvalue { ptr, i32 } %1754, 0
  store ptr %1755, ptr %7, align 8
  %1756 = extractvalue { ptr, i32 } %1754, 1
  store i32 %1756, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %128) #0
  br label %1757

1757:                                             ; preds = %1753, %1749
  call void @llvm.lifetime.end.p0(i64 88, ptr %128) #0
  br label %1817

1758:                                             ; preds = %1708, %1698
  br label %1759

1759:                                             ; preds = %1758
  %1760 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1761 unwind label %1709

1761:                                             ; preds = %1759
  %1762 = icmp ne i32 %1760, 30
  br i1 %1762, label %1763, label %1802

1763:                                             ; preds = %1761
  br label %1764

1764:                                             ; preds = %1763
  %1765 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1766 unwind label %1709

1766:                                             ; preds = %1764
  br i1 %1765, label %1767, label %1783

1767:                                             ; preds = %1766
  %1768 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1769 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1768, ptr noundef @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %1770 unwind label %1709

1770:                                             ; preds = %1767
  %1771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1769, ptr noundef @.str.10)
          to label %1772 unwind label %1709

1772:                                             ; preds = %1770
  %1773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1771, ptr noundef @.str.1)
          to label %1774 unwind label %1709

1774:                                             ; preds = %1772
  %1775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1773, ptr noundef @.str.2)
          to label %1776 unwind label %1709

1776:                                             ; preds = %1774
  %1777 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1775, i32 noundef 1553)
          to label %1778 unwind label %1709

1778:                                             ; preds = %1776
  %1779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1777, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1780 unwind label %1709

1780:                                             ; preds = %1778
  %1781 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1779, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1782 unwind label %1709

1782:                                             ; preds = %1780
  br label %1783

1783:                                             ; preds = %1782, %1766
  br label %1784

1784:                                             ; preds = %1783
  br label %1785

1785:                                             ; preds = %1784
  store i1 true, ptr %130, align 1
  %1786 = call ptr @__cxa_allocate_exception(i64 96) #0
  %1787 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %129, i32 noundef 30)
          to label %1788 unwind label %1790

1788:                                             ; preds = %1785
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %1786, ptr noundef nonnull align 8 dereferenceable(176) %1787, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %129)
          to label %1789 unwind label %1794

1789:                                             ; preds = %1788
  store i1 false, ptr %130, align 1
  invoke void @__cxa_throw(ptr %1786, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %1794

1790:                                             ; preds = %1785
  %1791 = landingpad { ptr, i32 }
          cleanup
  %1792 = extractvalue { ptr, i32 } %1791, 0
  store ptr %1792, ptr %7, align 8
  %1793 = extractvalue { ptr, i32 } %1791, 1
  store i32 %1793, ptr %8, align 4
  br label %1798

1794:                                             ; preds = %1789, %1788
  %1795 = landingpad { ptr, i32 }
          cleanup
  %1796 = extractvalue { ptr, i32 } %1795, 0
  store ptr %1796, ptr %7, align 8
  %1797 = extractvalue { ptr, i32 } %1795, 1
  store i32 %1797, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %129) #0
  br label %1798

1798:                                             ; preds = %1794, %1790
  %1799 = load i1, ptr %130, align 1
  br i1 %1799, label %1800, label %1801

1800:                                             ; preds = %1798
  call void @__cxa_free_exception(ptr %1786) #0
  br label %1801

1801:                                             ; preds = %1800, %1798
  br label %1817

1802:                                             ; preds = %1761
  br label %1803

1803:                                             ; preds = %1802
  br label %1804

1804:                                             ; preds = %1803
  %1805 = load ptr, ptr %4, align 8, !tbaa !5
  %1806 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #12
          to label %1807 unwind label %1709

1807:                                             ; preds = %1804
  store i1 true, ptr %132, align 1
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  invoke void @_ZN3AST14ExprNode_ArrayC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %1806, ptr noundef %131)
          to label %1808 unwind label %1810

1808:                                             ; preds = %1807
  store i1 false, ptr %132, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1805, ptr noundef %1806)
          to label %1809 unwind label %1810

1809:                                             ; preds = %1808
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #0
  store i32 1, ptr %12, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #0
  br label %1818

1810:                                             ; preds = %1808, %1807
  %1811 = landingpad { ptr, i32 }
          cleanup
  %1812 = extractvalue { ptr, i32 } %1811, 0
  store ptr %1812, ptr %7, align 8
  %1813 = extractvalue { ptr, i32 } %1811, 1
  store i32 %1813, ptr %8, align 4
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #0
  %1814 = load i1, ptr %132, align 1
  br i1 %1814, label %1815, label %1816

1815:                                             ; preds = %1810
  call void @_ZdlPvm(ptr noundef %1806, i64 noundef 72) #13
  br label %1816

1816:                                             ; preds = %1815, %1810
  br label %1817

1817:                                             ; preds = %1816, %1801, %1757, %1748, %1726, %1721, %1709
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #0
  br label %1819

1818:                                             ; preds = %1809, %1674
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %112) #0
  br label %1831

1819:                                             ; preds = %1817, %1693, %1628
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #0
  br label %1820

1820:                                             ; preds = %1819, %1616
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  br label %1821

1821:                                             ; preds = %1820, %1612, %1608
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #0
  br label %1822

1822:                                             ; preds = %1821, %1604
  call void @llvm.lifetime.end.p0(i64 40, ptr %112) #0
  br label %1832

1823:                                             ; preds = %143
  %1824 = call ptr @__cxa_allocate_exception(i64 96) #0
  %1825 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %1824, ptr noundef nonnull align 8 dereferenceable(176) %1825, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %1826 unwind label %1827

1826:                                             ; preds = %1823
  invoke void @__cxa_throw(ptr %1824, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1840 unwind label %167

1827:                                             ; preds = %1823
  %1828 = landingpad { ptr, i32 }
          cleanup
  %1829 = extractvalue { ptr, i32 } %1828, 0
  store ptr %1829, ptr %7, align 8
  %1830 = extractvalue { ptr, i32 } %1828, 1
  store i32 %1830, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1824) #0
  br label %1832

1831:                                             ; preds = %1818, %1530, %1513, %1318, %1275, %1265, %1247, %1221, %1205, %1191, %1169, %1159, %1137, %1025, %503, %472, %443, %428, %339, %313, %305, %301, %298, %287, %265, %246, %239, %231, %210, %197, %187, %177, %166
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %9) #0
  call void @llvm.lifetime.end.p0(i64 240, ptr %9) #0
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #0
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #0
  ret void

1832:                                             ; preds = %1827, %1822, %1546, %1539, %1516, %1325, %1310, %1276, %1266, %1259, %1238, %1206, %1192, %1170, %1160, %1153, %1138, %1123, %1096, %648, %629, %584, %565, %519, %504, %473, %459, %444, %429, %424, %406, %394, %360, %340, %314, %306, %292, %274, %240, %232, %227, %198, %188, %178, %171, %167, %160
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %9) #0
  br label %1833

1833:                                             ; preds = %1832, %148
  call void @llvm.lifetime.end.p0(i64 240, ptr %9) #0
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #0
  br label %1834

1834:                                             ; preds = %1833, %144
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #0
  br label %1835

1835:                                             ; preds = %1834
  %1836 = load ptr, ptr %7, align 8
  %1837 = load i32, ptr %8, align 4
  %1838 = insertvalue { ptr, i32 } poison, ptr %1836, 0
  %1839 = insertvalue { ptr, i32 } %1838, i32 %1837, 1
  resume { ptr, i32 } %1839

1840:                                             ; preds = %1826, %1789, %1652, %1495, %1105, %975, %861, %770, %706, %636, %572, %291
  unreachable
}

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

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

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

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

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

declare noundef ptr @_ZN5Token7typestrE10eTokenType(i32 noundef) #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST14ExprNode_FloatC2Ed9eCoreType(ptr noundef nonnull align 8 dereferenceable(56), double noundef, i32 noundef) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41), i1 noundef zeroext) unnamed_addr #1 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"_ZTS10ParseState", !14, i64 0, !14, i64 1, !14, i64 2, !6, i64 8, !6, i64 16, !6, i64 24}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !6, i64 0}
!20 = !{!"_ZTSSt16initializer_listIN3AST8PathNodeEE", !6, i64 0, !21, i64 8}
!21 = !{!"long", !7, i64 0}
!22 = !{!20, !21, i64 8}
!23 = !{i64 0, i64 1, !24, i64 1, i64 1, !24, i64 2, i64 1, !24, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !5}
!24 = !{!14, !14, i64 0}
!25 = !{!13, !14, i64 1}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}


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

%class.RcString = type { ptr }
%"class.AST::ExprNodeP" = type { ptr }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = 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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::unique_ptr.18" = type { %"struct.std::__uniq_ptr_data.19" }
%"struct.std::__uniq_ptr_data.19" = type { %"class.std::__uniq_ptr_impl.20" }
%"class.std::__uniq_ptr_impl.20" = type { %"class.std::tuple.21" }
%"class.std::tuple.21" = type { %"struct.std::_Tuple_impl.22" }
%"struct.std::_Tuple_impl.22" = type { %"struct.std::_Head_base.25" }
%"struct.std::_Head_base.25" = type { ptr }
%"class.AST::Path" = type { ptr, %"class.AST::Path::Class", %"struct.AST::Path::Bindings" }
%"class.AST::Path::Class" = type { i32, %"union.AST::Path::Class::DataUnion" }
%"union.AST::Path::Class::DataUnion" = type { %"struct.AST::Path::Class::Data_UFCS" }
%"struct.AST::Path::Class::Data_UFCS" = type { %"class.std::unique_ptr.92", %"class.std::unique_ptr.100", %"class.std::vector.87" }
%"class.std::unique_ptr.92" = type { %"struct.std::__uniq_ptr_data.93" }
%"struct.std::__uniq_ptr_data.93" = type { %"class.std::__uniq_ptr_impl.94" }
%"class.std::__uniq_ptr_impl.94" = type { %"class.std::tuple.95" }
%"class.std::tuple.95" = type { %"struct.std::_Tuple_impl.96" }
%"struct.std::_Tuple_impl.96" = type { %"struct.std::_Head_base.99" }
%"struct.std::_Head_base.99" = type { ptr }
%"class.std::unique_ptr.100" = type { %"struct.std::__uniq_ptr_data.101" }
%"struct.std::__uniq_ptr_data.101" = type { %"class.std::__uniq_ptr_impl.102" }
%"class.std::__uniq_ptr_impl.102" = type { %"class.std::tuple.103" }
%"class.std::tuple.103" = type { %"struct.std::_Tuple_impl.104" }
%"struct.std::_Tuple_impl.104" = type { %"struct.std::_Head_base.107" }
%"struct.std::_Head_base.107" = type { ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathNode, std::allocator<AST::PathNode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.AST::Path::Bindings" = type { %"struct.AST::PathBinding", %"struct.AST::PathBinding.108", %"struct.AST::PathBinding.109" }
%"struct.AST::PathBinding" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Value" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector.26" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl" = type { %"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RcString, std::allocator<RcString>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathBinding_Value" = type { i32, %"union.AST::PathBinding_Value::DataUnion" }
%"union.AST::PathBinding_Value::DataUnion" = type { %"struct.AST::PathBinding_Value::Data_EnumVar" }
%"struct.AST::PathBinding_Value::Data_EnumVar" = type { ptr, i32, ptr }
%"struct.AST::PathBinding.108" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Type" }
%"class.AST::PathBinding_Type" = type { i32, %"union.AST::PathBinding_Type::DataUnion" }
%"union.AST::PathBinding_Type::DataUnion" = type { %"struct.AST::PathBinding_Type::Data_Module" }
%"struct.AST::PathBinding_Type::Data_Module" = type { ptr, %"struct.AST::PathBinding_Type::(anonymous struct)::Hir" }
%"struct.AST::PathBinding_Type::(anonymous struct)::Hir" = type { ptr, ptr }
%"struct.AST::PathBinding.109" = type { %"struct.AST::AbsolutePath", %"class.AST::PathBinding_Macro" }
%"class.AST::PathBinding_Macro" = type { i32, %"union.AST::PathBinding_Macro::DataUnion" }
%"union.AST::PathBinding_Macro::DataUnion" = type { %"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" }
%"struct.AST::PathBinding_Macro::Data_ProcMacroDerive" = type { ptr, %class.RcString }
%class.TypeRef = type { %struct.Span, %class.TypeData }
%class.TypeData = type { i32, %"union.TypeData::DataUnion" }
%"union.TypeData::DataUnion" = type { %"struct.TypeData::Data_ErasedType", [32 x i8] }
%"struct.TypeData::Data_ErasedType" = type { %"class.std::vector.146", %"class.std::vector.146", %"class.std::vector.151" }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Type_TraitPath, std::allocator<Type_TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.151" = type { %"struct.std::_Vector_base.152" }
%"struct.std::_Vector_base.152" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeRef, std::allocator<AST::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"class.std::allocator" = type { i8 }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.156", i8, [7 x i8] }>
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.89" = type { i8 }
%"class.AST::PathParamEnt" = type { i32, %"union.AST::PathParamEnt::DataUnion" }
%"union.AST::PathParamEnt::DataUnion" = type { %"struct.std::pair.192" }
%"struct.std::pair.192" = type { %class.RcString, %"class.AST::Path" }
%class.anon.194 = type { ptr, ptr }
%class.SavedParseState = type { ptr, %struct.ParseState }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZTIN10ParseError10UnexpectedE = external constant ptr
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@__func__._Z19Parse_ExprVal_InnerR11TokenStream = external hidden unnamed_addr constant [20 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self = external hidden global %class.RcString, align 8
@_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self = external hidden global i64, align 8
@.str.17 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #5

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

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

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

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

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

declare noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #5

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

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

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

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

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

declare void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.18") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5

declare void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #5

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8, ptr noundef nonnull align 8 dereferenceable(176), ptr noundef) local_unnamed_addr #7

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

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

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

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

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

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

declare void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind writable sret(%"class.AST::Path") align 8, ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z19Parse_ExprVal_InnerR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.TraceLog, align 8
  %4 = alloca %class.Token, align 8
  %5 = alloca %"class.AST::Path", align 8
  %6 = alloca %class.Token, align 8
  %7 = alloca %class.Token, align 8
  %8 = alloca %"class.std::unique_ptr.18", align 8
  %9 = alloca %class.Token, align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca %struct.Ident, align 8
  %12 = alloca %"class.AST::ExprNodeP", align 8
  %13 = alloca %struct.Ident, align 8
  %14 = alloca %struct.Ident, align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca %struct.Ident, align 8
  %17 = alloca %struct.Ident, align 8
  %18 = alloca %"class.AST::Path", align 8
  %19 = alloca %class.RcString, align 8
  %20 = alloca %class.Token, align 8
  %21 = alloca %"class.AST::Path", align 8
  %22 = alloca %class.Token, align 8
  %23 = alloca %"class.AST::Path", align 8
  %24 = alloca %class.Token, align 8
  %25 = alloca %"class.std::vector.5", align 8
  %26 = alloca %"class.AST::Path", align 8
  %27 = alloca %class.Token, align 8
  %28 = alloca %"class.AST::Path", align 8
  %29 = alloca %class.Token, align 8
  %30 = alloca %class.Token, align 8
  %31 = alloca %class.Token, align 8
  %32 = alloca %class.Token, align 8
  %33 = alloca %class.TypeRef, align 8
  %34 = alloca %"class.std::vector.5", align 8
  %35 = alloca %class.Token, align 8
  %36 = alloca %class.Token, align 8
  %37 = alloca %class.Token, align 8
  %38 = alloca %class.Token, align 8
  %39 = alloca %"class.AST::ExprNodeP", align 8
  %40 = alloca %class.Token, align 8
  %41 = alloca %class.Token, align 8
  %42 = alloca %"class.AST::ExprNodeP", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.Ident::Hygiene", align 8
  %46 = alloca %class.Token, align 8
  %47 = alloca %class.Token, align 8
  %48 = alloca %"class.AST::Path", align 8
  %49 = alloca %class.RcString, align 8
  %50 = alloca %"class.std::vector.87", align 8
  %51 = alloca [1 x %"class.AST::PathNode"], align 8
  %52 = alloca %class.RcString, align 8
  %53 = alloca %"struct.AST::PathParams", align 8
  %54 = alloca %"class.std::allocator.89", align 1
  %55 = alloca %"class.AST::PathParamEnt", align 8
  %56 = alloca %class.TypeRef, align 8
  %57 = alloca ptr, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.194, align 8
  %61 = alloca %class.Token, align 8
  %62 = alloca %"class.AST::Path", align 8
  %63 = alloca %class.Token, align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.Ident::Hygiene", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %class.Token, align 8
  %68 = alloca %"class.std::vector.5", align 8
  %69 = alloca %class.SavedParseState, align 8
  %70 = alloca %class.Token, align 8
  %71 = alloca %class.Token, align 8
  %72 = alloca %"class.std::vector.5", align 8
  %73 = alloca %class.Token, align 8
  %74 = alloca %class.Token, align 8
  %75 = alloca %"class.AST::ExprNodeP", align 8
  %76 = alloca %class.Token, align 8
  %77 = alloca %"class.AST::ExprNodeP", align 8
  %78 = alloca %"class.std::vector.5", align 8
  %79 = alloca %class.Token, align 8
  %80 = alloca %class.Token, align 8
  %81 = alloca %"class.std::vector.5", align 8
  %82 = alloca %class.SavedParseState, align 8
  %83 = alloca %class.Token, align 8
  %84 = alloca %"class.AST::ExprNodeP", align 8
  %85 = alloca %class.Token, align 8
  %86 = alloca %"class.AST::ExprNodeP", align 8
  %87 = alloca %class.Token, align 8
  %88 = alloca %class.Token, align 8
  %89 = alloca %"class.AST::ExprNodeP", align 8
  %90 = alloca %"class.AST::ExprNodeP", align 8
  %91 = alloca %"class.std::vector.5", align 8
  %92 = alloca %class.Token, align 8
  %93 = alloca %class.Token, align 8
  %94 = alloca %"class.AST::ExprNodeP", align 8
  %95 = alloca %class.Token, align 8
  %96 = alloca %class.Token, align 8
  %97 = alloca %"class.std::vector.5", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #11
  %98 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %99 = select i1 %98, ptr @__func__._Z19Parse_ExprVal_InnerR11TokenStream, ptr null
  call void @_ZN8TraceLogC1EPKc(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef %99)
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %4) #11
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %100 unwind label %106

100:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %5) #11
  invoke void @_ZN3AST4PathC2Ev(ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %101 unwind label %108

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %6) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %6, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %102 unwind label %110

102:                                              ; preds = %101
  %103 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %104 unwind label %112

104:                                              ; preds = %102
  %105 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %103)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %6) #11
  switch i32 %105, label %1074 [
    i32 25, label %115
    i32 8, label %122
    i32 10, label %122
    i32 105, label %127
    i32 106, label %127
    i32 103, label %127
    i32 104, label %127
    i32 15, label %132
    i32 98, label %137
    i32 99, label %149
    i32 100, label %154
    i32 125, label %.invoke511
    i32 102, label %159
    i32 95, label %191
    i32 96, label %192
    i32 81, label %193
    i32 79, label %198
    i32 111, label %203
    i32 64, label %226
    i32 27, label %226
    i32 83, label %226
    i32 112, label %226
    i32 34, label %226
    i32 14, label %226
    i32 5, label %226
    i32 80, label %697
    i32 113, label %697
    i32 37, label %697
    i32 63, label %697
    i32 22, label %702
    i32 16, label %707
    i32 18, label %718
    i32 19, label %726
    i32 20, label %741
    i32 110, label %754
    i32 109, label %759
    i32 23, label %765
    i32 29, label %900
  ]

106:                                              ; preds = %2
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %1082

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

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

112:                                              ; preds = %102
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #11
  br label %114

114:                                              ; preds = %112, %110
  %.pn = phi { ptr, i32 } [ %113, %112 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %6) #11
  br label %1080

115:                                              ; preds = %104
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %116 unwind label %118

116:                                              ; preds = %115
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %7)
          to label %117 unwind label %120

117:                                              ; preds = %116
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #11
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

118:                                              ; preds = %.invoke511, %.invoke510, %.invoke, %906, %788, %781, %779, %777, %774, %771, %759, %754, %741, %726, %718, %707, %702, %699, %697, %684, %682, %397, %395, %393, %391, %389, %387, %384, %381, %373, %371, %355, %353, %351, %349, %347, %345, %342, %339, %331, %329, %326, %313, %311, %309, %307, %305, %302, %299, %294, %277, %275, %270, %251, %249, %247, %245, %243, %241, %239, %237, %234, %231, %226, %214, %203, %198, %193, %192, %191, %186, %182, %180, %168, %166, %154, %149, %137, %134, %132, %129, %127, %122, %117, %115
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %1080

120:                                              ; preds = %116
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #11
  br label %1080

122:                                              ; preds = %104, %104
  invoke void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.18") align 8 %8, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %123 unwind label %118

123:                                              ; preds = %122
  invoke void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %8)
          to label %124 unwind label %125

124:                                              ; preds = %123
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  br label %1079

125:                                              ; preds = %123
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  br label %1080

127:                                              ; preds = %104, %104, %104, %104
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %9, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %128 unwind label %118

128:                                              ; preds = %127
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %9)
          to label %129 unwind label %130

129:                                              ; preds = %128
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #11
  invoke void @_Z10Parse_StmtR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

130:                                              ; preds = %128
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #11
  br label %1080

132:                                              ; preds = %104
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %133 unwind label %118

133:                                              ; preds = %132
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %10)
          to label %134 unwind label %135

134:                                              ; preds = %133
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #11
  invoke void @_Z19Parse_ExprBlockLineR11TokenStreamPb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef null)
          to label %1079 unwind label %118

135:                                              ; preds = %133
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #11
  br label %1080

137:                                              ; preds = %104
  %138 = invoke noalias noundef nonnull dereferenceable(624) ptr @_Znwm(i64 noundef 624) #12
          to label %139 unwind label %118

139:                                              ; preds = %137
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull @.str.9)
          to label %140 unwind label %.thread

140:                                              ; preds = %139
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %12, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %141 unwind label %.thread372

141:                                              ; preds = %140
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %138, ptr noundef nonnull %11, ptr noundef nonnull %12)
          to label %142 unwind label %146

142:                                              ; preds = %141
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %138)
          to label %143 unwind label %146

143:                                              ; preds = %142
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #11
  br label %1079

.thread:                                          ; preds = %139
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %148

.thread372:                                       ; preds = %140
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #11
  br label %148

146:                                              ; preds = %141, %142
  %.0219 = phi i1 [ false, %142 ], [ true, %141 ]
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #11
  br i1 %.0219, label %148, label %1080

148:                                              ; preds = %.thread372, %.thread, %146
  %.pn362.pn371 = phi { ptr, i32 } [ %144, %.thread ], [ %147, %146 ], [ %145, %.thread372 ]
  call void @_ZdlPvm(ptr noundef nonnull %138, i64 noundef 624) #13
  br label %1080

149:                                              ; preds = %104
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull @.str.9)
          to label %150 unwind label %118

150:                                              ; preds = %149
  invoke void @_Z15Parse_WhileStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %13)
          to label %151 unwind label %152

151:                                              ; preds = %150
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #11
  br label %1079

152:                                              ; preds = %150
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #11
  br label %1080

154:                                              ; preds = %104
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull @.str.9)
          to label %155 unwind label %118

155:                                              ; preds = %154
  invoke void @_Z13Parse_ForStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %14)
          to label %156 unwind label %157

156:                                              ; preds = %155
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #11
  br label %1079

157:                                              ; preds = %155
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #11
  br label %1080

159:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %15) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %160 unwind label %172

160:                                              ; preds = %159
  %161 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %15)
          to label %162 unwind label %174

162:                                              ; preds = %160
  %163 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %161)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %15) #11
  %164 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %165 = icmp eq i32 %164, 14
  br i1 %165, label %166, label %177

166:                                              ; preds = %162
  %167 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %168 unwind label %118

168:                                              ; preds = %166
  %169 = getelementptr inbounds i8, ptr %167, i64 8
  %170 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull @.str.15)
          to label %171 unwind label %118

171:                                              ; preds = %168
  br i1 %170, label %.invoke511, label %177

.invoke511:                                       ; preds = %171, %104
  invoke void @_Z14Parse_Expr_TryR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

172:                                              ; preds = %159
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %160
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #11
  br label %176

176:                                              ; preds = %174, %172
  %.pn360 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %15) #11
  br label %1080

177:                                              ; preds = %171, %162
  %178 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %179 = icmp eq i32 %178, 14
  br i1 %179, label %180, label %187

180:                                              ; preds = %177
  %181 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %182 unwind label %118

182:                                              ; preds = %180
  %183 = getelementptr inbounds i8, ptr %181, i64 8
  %184 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull @.str.16)
          to label %185 unwind label %118

185:                                              ; preds = %182
  br i1 %184, label %186, label %187

186:                                              ; preds = %185
  invoke void @_Z17Parse_FlowControlR11TokenStreamN3AST13ExprNode_Flow4TypeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 4)
          to label %1079 unwind label %118

187:                                              ; preds = %185, %177
  %188 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %188, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %.invoke unwind label %189

189:                                              ; preds = %187
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %188) #11
  br label %1080

191:                                              ; preds = %104
  invoke void @_Z16Parse_Expr_MatchR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

192:                                              ; preds = %104
  invoke void @_Z12Parse_IfStmtR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

193:                                              ; preds = %104
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull @.str.9)
          to label %194 unwind label %118

194:                                              ; preds = %193
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1, ptr noundef nonnull %16)
          to label %195 unwind label %196

195:                                              ; preds = %194
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #11
  br label %1079

196:                                              ; preds = %194
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #11
  br label %1080

198:                                              ; preds = %104
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull @.str.9)
          to label %199 unwind label %118

199:                                              ; preds = %198
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 2, ptr noundef nonnull %17)
          to label %200 unwind label %201

200:                                              ; preds = %199
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #11
  br label %1079

201:                                              ; preds = %199
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #11
  br label %1080

203:                                              ; preds = %104
  %204 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %205 unwind label %118

205:                                              ; preds = %203
  %.not293 = icmp eq i32 %204, 34
  br i1 %.not293, label %226, label %206

206:                                              ; preds = %205
  %207 = load atomic i8, ptr @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self acquire, align 8
  %208 = icmp eq i8 %207, 0
  br i1 %208, label %209, label %214, !prof !5

209:                                              ; preds = %206
  %210 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #11
  %.not357 = icmp eq i32 %210, 0
  br i1 %.not357, label %214, label %211

211:                                              ; preds = %209
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self, ptr noundef nonnull @.str.17)
          to label %212 unwind label %220

212:                                              ; preds = %211
  %213 = call i32 @__cxa_atexit(ptr nonnull @_ZN8RcStringD1Ev, ptr nonnull @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self, ptr nonnull @__dso_handle) #11
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #11
  br label %214

214:                                              ; preds = %212, %209, %206
  %215 = invoke noalias noundef nonnull dereferenceable(280) ptr @_Znwm(i64 noundef 280) #12
          to label %216 unwind label %118

216:                                              ; preds = %214
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self)
  invoke void @_ZN3AST4PathC2E8RcString(ptr noundef nonnull align 8 dereferenceable(240) %18, ptr noundef nonnull %19)
          to label %217 unwind label %.thread375

217:                                              ; preds = %216
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %215, ptr noundef nonnull %18)
          to label %218 unwind label %223

218:                                              ; preds = %217
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %215)
          to label %219 unwind label %223

219:                                              ; preds = %218
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %18) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br label %1079

220:                                              ; preds = %211
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZ19Parse_ExprVal_InnerR11TokenStreamE13rcstring_self) #11
  br label %1080

.thread375:                                       ; preds = %216
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br label %225

223:                                              ; preds = %217, %218
  %.0222 = phi i1 [ false, %218 ], [ true, %217 ]
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %18) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br i1 %.0222, label %225, label %1080

225:                                              ; preds = %.thread375, %223
  %.pn358378 = phi { ptr, i32 } [ %222, %.thread375 ], [ %224, %223 ]
  call void @_ZdlPvm(ptr noundef nonnull %215, i64 noundef 280) #13
  br label %1080

226:                                              ; preds = %205, %104, %104, %104, %104, %104, %104, %104
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %20, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %227 unwind label %118

227:                                              ; preds = %226
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %20)
          to label %228 unwind label %253

228:                                              ; preds = %227
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %20) #11
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %21) #11
  invoke void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind nonnull writable sret(%"class.AST::Path") align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1)
          to label %229 unwind label %255

229:                                              ; preds = %228
  %230 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %5, ptr noundef nonnull align 8 dereferenceable(240) %21)
          to label %231 unwind label %257

231:                                              ; preds = %229
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %21) #11
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %21) #11
  %232 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %233 unwind label %118

233:                                              ; preds = %231
  br i1 %232, label %234, label %260

234:                                              ; preds = %233
  %235 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %235, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %237 unwind label %118

237:                                              ; preds = %234
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef nonnull @.str.18)
          to label %239 unwind label %118

239:                                              ; preds = %237
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %241 unwind label %118

241:                                              ; preds = %239
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull @.str.19)
          to label %243 unwind label %118

243:                                              ; preds = %241
  %244 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %245 unwind label %118

245:                                              ; preds = %243
  %246 = invoke noundef ptr @_ZN5Token7typestrE10eTokenType(i32 noundef %244)
          to label %247 unwind label %118

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef %246)
          to label %249 unwind label %118

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %251 unwind label %118

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %260 unwind label %118

253:                                              ; preds = %227
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %20) #11
  br label %1080

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

257:                                              ; preds = %229
  %258 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %21) #11
  br label %259

259:                                              ; preds = %257, %255
  %.pn294 = phi { ptr, i32 } [ %258, %257 ], [ %256, %255 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %21) #11
  br label %1080

260:                                              ; preds = %251, %233
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %22) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %22, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %261 unwind label %265

261:                                              ; preds = %260
  %262 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %22)
          to label %263 unwind label %267

263:                                              ; preds = %261
  %264 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %262)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %22) #11
  switch i32 %264, label %682 [
    i32 43, label %270
    i32 23, label %275
    i32 25, label %290
    i32 21, label %326
  ]

265:                                              ; preds = %260
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %269

267:                                              ; preds = %261
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #11
  br label %269

269:                                              ; preds = %267, %265
  %.pn296 = phi { ptr, i32 } [ %268, %267 ], [ %266, %265 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %22) #11
  br label %1080

270:                                              ; preds = %263
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %23, ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %271 unwind label %118

271:                                              ; preds = %270
  invoke void @_Z15Parse_ExprMacroR11TokenStreamN3AST4PathE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %23)
          to label %272 unwind label %273

272:                                              ; preds = %271
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %23) #11
  br label %1079

273:                                              ; preds = %271
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %23) #11
  br label %1080

275:                                              ; preds = %263
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %24, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %276 unwind label %118

276:                                              ; preds = %275
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %24)
          to label %277 unwind label %284

277:                                              ; preds = %276
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #11
  %278 = invoke noalias noundef nonnull dereferenceable(304) ptr @_Znwm(i64 noundef 304) #12
          to label %279 unwind label %118

279:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #11
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.5") align 8 %25, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %280 unwind label %.thread379

280:                                              ; preds = %279
  invoke void @_ZN3AST17ExprNode_CallPathC2EONS_4PathEOSt6vectorINS_9ExprNodePESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(304) %278, ptr noundef nonnull align 8 dereferenceable(240) %5, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %282 unwind label %.thread383

.thread383:                                       ; preds = %280
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  br label %289

282:                                              ; preds = %280
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %278)
          to label %283 unwind label %287

283:                                              ; preds = %282
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  br label %1079

284:                                              ; preds = %276
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #11
  br label %1080

.thread379:                                       ; preds = %279
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  br label %289

287:                                              ; preds = %282
  %288 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  br label %1080

289:                                              ; preds = %.thread383, %.thread379
  %.pn353382 = phi { ptr, i32 } [ %286, %.thread379 ], [ %281, %.thread383 ]
  call void @_ZdlPvm(ptr noundef nonnull %278, i64 noundef 304) #13
  br label %1080

290:                                              ; preds = %263
  %291 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %292 = load i8, ptr %291, align 8, !tbaa !10, !range !14, !noundef !15
  %293 = trunc nuw i8 %292 to i1
  br i1 %293, label %299, label %294

294:                                              ; preds = %290
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %26, ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %295 unwind label %118

295:                                              ; preds = %294
  invoke void @_Z27Parse_ExprVal_StructLiteralR11TokenStreamN3AST4PathE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %26)
          to label %296 unwind label %297

296:                                              ; preds = %295
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %26) #11
  br label %1079

297:                                              ; preds = %295
  %298 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %26) #11
  br label %1080

299:                                              ; preds = %290
  %300 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %301 unwind label %118

301:                                              ; preds = %299
  br i1 %300, label %302, label %311

302:                                              ; preds = %301
  %303 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %303, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %305 unwind label %118

305:                                              ; preds = %302
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull @.str.20)
          to label %307 unwind label %118

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

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

311:                                              ; preds = %301, %309
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %27, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %312 unwind label %118

312:                                              ; preds = %311
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %27)
          to label %313 unwind label %320

313:                                              ; preds = %312
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #11
  %314 = invoke noalias noundef nonnull dereferenceable(280) ptr @_Znwm(i64 noundef 280) #12
          to label %315 unwind label %118

315:                                              ; preds = %313
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %28, ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %316 unwind label %.thread385

316:                                              ; preds = %315
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %314, ptr noundef nonnull %28)
          to label %318 unwind label %.thread389

.thread389:                                       ; preds = %316
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #11
  br label %325

318:                                              ; preds = %316
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %314)
          to label %319 unwind label %323

319:                                              ; preds = %318
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #11
  br label %1079

320:                                              ; preds = %312
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %27) #11
  br label %1080

.thread385:                                       ; preds = %315
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %325

323:                                              ; preds = %318
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #11
  br label %1080

325:                                              ; preds = %.thread389, %.thread385
  %.pn351388 = phi { ptr, i32 } [ %322, %.thread385 ], [ %317, %.thread389 ]
  call void @_ZdlPvm(ptr noundef nonnull %314, i64 noundef 280) #13
  br label %1080

326:                                              ; preds = %263
  %327 = invoke noundef zeroext i1 @_ZNK3AST4Path10is_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %328 unwind label %118

328:                                              ; preds = %326
  br i1 %327, label %329, label %682

329:                                              ; preds = %328
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST4Path10as_trivialEv(ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %331 unwind label %118

331:                                              ; preds = %329
  %332 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @.str.21)
          to label %333 unwind label %118

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

334:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %29) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %29, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %335 unwind label %357

335:                                              ; preds = %334
  %336 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %29)
          to label %337 unwind label %359

337:                                              ; preds = %335
  %338 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %336)
  %.not300 = icmp eq i32 %338, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %29) #11
  br i1 %.not300, label %371, label %339

339:                                              ; preds = %337
  %340 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %341 unwind label %118

341:                                              ; preds = %339
  br i1 %340, label %342, label %362

342:                                              ; preds = %341
  %343 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %343, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %345 unwind label %118

345:                                              ; preds = %342
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull @.str)
          to label %347 unwind label %118

347:                                              ; preds = %345
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull @.str.1)
          to label %349 unwind label %118

349:                                              ; preds = %347
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull @.str.2)
          to label %351 unwind label %118

351:                                              ; preds = %349
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %350, i32 noundef 1440)
          to label %353 unwind label %118

353:                                              ; preds = %351
  %354 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %355 unwind label %118

355:                                              ; preds = %353
  %356 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %354, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %362 unwind label %118

357:                                              ; preds = %334
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %361

359:                                              ; preds = %335
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #11
  br label %361

361:                                              ; preds = %359, %357
  %.pn298 = phi { ptr, i32 } [ %360, %359 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %29) #11
  br label %1080

362:                                              ; preds = %355, %341
  %363 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %30, i32 noundef 14)
          to label %364 unwind label %.thread391

364:                                              ; preds = %362
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %363, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %30)
          to label %366 unwind label %.thread395

.thread395:                                       ; preds = %364
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #11
  br label %370

366:                                              ; preds = %364
  invoke void @__cxa_throw(ptr nonnull %363, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %368

.thread391:                                       ; preds = %362
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %370

368:                                              ; preds = %366
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #11
  br label %1080

370:                                              ; preds = %.thread395, %.thread391
  %.pn349394 = phi { ptr, i32 } [ %367, %.thread391 ], [ %365, %.thread395 ]
  call void @__cxa_free_exception(ptr %363) #11
  br label %1080

371:                                              ; preds = %337
  %372 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %373 unwind label %118

373:                                              ; preds = %371
  %374 = invoke noundef zeroext i1 @_ZNK5IdenteqEPKc(ptr noundef nonnull align 8 dereferenceable(16) %372, ptr noundef nonnull @.str.22)
          to label %375 unwind label %118

375:                                              ; preds = %373
  br i1 %374, label %376, label %666

376:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %31) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %31, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %377 unwind label %399

377:                                              ; preds = %376
  %378 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %31)
          to label %379 unwind label %401

379:                                              ; preds = %377
  %380 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %378)
  %.not307 = icmp eq i32 %380, 23
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %31) #11
  br i1 %.not307, label %413, label %381

381:                                              ; preds = %379
  %382 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %383 unwind label %118

383:                                              ; preds = %381
  br i1 %382, label %384, label %404

384:                                              ; preds = %383
  %385 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %385, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %387 unwind label %118

387:                                              ; preds = %384
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull @.str)
          to label %389 unwind label %118

389:                                              ; preds = %387
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull @.str.1)
          to label %391 unwind label %118

391:                                              ; preds = %389
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %390, ptr noundef nonnull @.str.2)
          to label %393 unwind label %118

393:                                              ; preds = %391
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %392, i32 noundef 1442)
          to label %395 unwind label %118

395:                                              ; preds = %393
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %397 unwind label %118

397:                                              ; preds = %395
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %404 unwind label %118

399:                                              ; preds = %376
  %400 = landingpad { ptr, i32 }
          cleanup
  br label %403

401:                                              ; preds = %377
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #11
  br label %403

403:                                              ; preds = %401, %399
  %.pn305 = phi { ptr, i32 } [ %402, %401 ], [ %400, %399 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %31) #11
  br label %1080

404:                                              ; preds = %397, %383
  %405 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %32, i32 noundef 23)
          to label %406 unwind label %.thread397

406:                                              ; preds = %404
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %405, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %32)
          to label %408 unwind label %.thread401

.thread401:                                       ; preds = %406
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #11
  br label %412

408:                                              ; preds = %406
  invoke void @__cxa_throw(ptr nonnull %405, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %410

.thread397:                                       ; preds = %404
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %412

410:                                              ; preds = %408
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #11
  br label %1080

412:                                              ; preds = %.thread401, %.thread397
  %.pn347400 = phi { ptr, i32 } [ %409, %.thread397 ], [ %407, %.thread401 ]
  call void @__cxa_free_exception(ptr %405) #11
  br label %1080

413:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %33) #11
  invoke void @_Z10Parse_TypeR11TokenStreamb(ptr dead_on_unwind nonnull writable sret(%class.TypeRef) align 8 %33, ptr noundef nonnull align 8 dereferenceable(176) %1, i1 noundef zeroext true)
          to label %414 unwind label %438

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  br label %415

415:                                              ; preds = %581, %414
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %35) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %35, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %416 unwind label %440

416:                                              ; preds = %415
  %417 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %418 unwind label %442

418:                                              ; preds = %416
  %419 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %417)
  %.not310 = icmp eq i32 %419, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #11
  br i1 %.not310, label %454, label %420

420:                                              ; preds = %418
  %421 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %422 unwind label %.loopexit.split-lp

422:                                              ; preds = %420
  br i1 %421, label %423, label %445

423:                                              ; preds = %422
  %424 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %424, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %426 unwind label %.loopexit.split-lp

426:                                              ; preds = %423
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull @.str)
          to label %428 unwind label %.loopexit.split-lp

428:                                              ; preds = %426
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %427, ptr noundef nonnull @.str.1)
          to label %430 unwind label %.loopexit.split-lp

430:                                              ; preds = %428
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull @.str.2)
          to label %432 unwind label %.loopexit.split-lp

432:                                              ; preds = %430
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %431, i32 noundef 1446)
          to label %434 unwind label %.loopexit.split-lp

434:                                              ; preds = %432
  %435 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %436 unwind label %.loopexit.split-lp

436:                                              ; preds = %434
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %445 unwind label %.loopexit.split-lp

438:                                              ; preds = %413
  %439 = landingpad { ptr, i32 }
          cleanup
  br label %665

440:                                              ; preds = %415
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %444

442:                                              ; preds = %416
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #11
  br label %444

444:                                              ; preds = %442, %440
  %.pn308 = phi { ptr, i32 } [ %443, %442 ], [ %441, %440 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #11
  br label %664

.loopexit479:                                     ; preds = %454, %579
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %664

.loopexit.split-lp:                               ; preds = %420, %423, %426, %428, %430, %432, %434, %436, %463, %466, %469, %471, %473, %475, %477, %479, %519, %522, %525, %527, %529, %531, %533, %535, %588, %591, %594, %596, %598, %600, %602, %604, %627, %634, %637
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %664

445:                                              ; preds = %436, %422
  %446 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %36, i32 noundef 31)
          to label %447 unwind label %.thread403

447:                                              ; preds = %445
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %446, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %36)
          to label %449 unwind label %.thread407

.thread407:                                       ; preds = %447
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #11
  br label %453

449:                                              ; preds = %447
  invoke void @__cxa_throw(ptr nonnull %446, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %451

.thread403:                                       ; preds = %445
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %453

451:                                              ; preds = %449
  %452 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #11
  br label %664

453:                                              ; preds = %.thread407, %.thread403
  %.pn343406 = phi { ptr, i32 } [ %450, %.thread403 ], [ %448, %.thread407 ]
  call void @__cxa_free_exception(ptr %446) #11
  br label %664

454:                                              ; preds = %418
  %455 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %456 unwind label %.loopexit479

456:                                              ; preds = %454
  %457 = icmp eq i32 %455, 16
  br i1 %457, label %458, label %514

458:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %37) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %37, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %459 unwind label %481

459:                                              ; preds = %458
  %460 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %37)
          to label %461 unwind label %483

461:                                              ; preds = %459
  %462 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %460)
  %.not324 = icmp eq i32 %462, 16
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %37) #11
  br i1 %.not324, label %495, label %463

463:                                              ; preds = %461
  %464 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %465 unwind label %.loopexit.split-lp

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

466:                                              ; preds = %465
  %467 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %467, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %469 unwind label %.loopexit.split-lp

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

471:                                              ; preds = %469
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull @.str.1)
          to label %473 unwind label %.loopexit.split-lp

473:                                              ; preds = %471
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull @.str.2)
          to label %475 unwind label %.loopexit.split-lp

475:                                              ; preds = %473
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %474, i32 noundef 1448)
          to label %477 unwind label %.loopexit.split-lp

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

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %486 unwind label %.loopexit.split-lp

481:                                              ; preds = %458
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %485

483:                                              ; preds = %459
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #11
  br label %485

485:                                              ; preds = %483, %481
  %.pn322 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %37) #11
  br label %664

486:                                              ; preds = %479, %465
  %487 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %38, i32 noundef 16)
          to label %488 unwind label %.thread409

488:                                              ; preds = %486
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %487, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %38)
          to label %490 unwind label %.thread413

.thread413:                                       ; preds = %488
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #11
  br label %494

490:                                              ; preds = %488
  invoke void @__cxa_throw(ptr nonnull %487, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %492

.thread409:                                       ; preds = %486
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %494

492:                                              ; preds = %490
  %493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #11
  br label %664

494:                                              ; preds = %.thread413, %.thread409
  %.pn341412 = phi { ptr, i32 } [ %491, %.thread409 ], [ %489, %.thread413 ]
  call void @__cxa_free_exception(ptr %487) #11
  br label %664

495:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  %496 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #12
          to label %497 unwind label %507

497:                                              ; preds = %495
  %498 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %499 unwind label %509

499:                                              ; preds = %497
  %500 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %501 unwind label %509

501:                                              ; preds = %499
  %502 = extractvalue { i64, i64 } %498, 1
  %503 = extractvalue { i64, i64 } %498, 0
  invoke void @_ZN3AST16ExprNode_IntegerC2E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(64) %496, i64 %503, i64 %502, i32 noundef %500)
          to label %504 unwind label %509

504:                                              ; preds = %501
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %39, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %496)
          to label %505 unwind label %507

505:                                              ; preds = %504
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %506 unwind label %511

506:                                              ; preds = %505
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  br label %579

507:                                              ; preds = %504, %495
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %513

509:                                              ; preds = %501, %499, %497
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %496, i64 noundef 64) #13
  br label %513

511:                                              ; preds = %505
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #11
  br label %513

513:                                              ; preds = %511, %509, %507
  %.pn325 = phi { ptr, i32 } [ %512, %511 ], [ %508, %507 ], [ %510, %509 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  br label %664

514:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %40) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %40, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %515 unwind label %537

515:                                              ; preds = %514
  %516 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %40)
          to label %517 unwind label %539

517:                                              ; preds = %515
  %518 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %516)
  %.not313 = icmp eq i32 %518, 14
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %40) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %40) #11
  br i1 %.not313, label %551, label %519

519:                                              ; preds = %517
  %520 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %521 unwind label %.loopexit.split-lp

521:                                              ; preds = %519
  br i1 %520, label %522, label %542

522:                                              ; preds = %521
  %523 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %523, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %525 unwind label %.loopexit.split-lp

525:                                              ; preds = %522
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull @.str)
          to label %527 unwind label %.loopexit.split-lp

527:                                              ; preds = %525
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef nonnull @.str.1)
          to label %529 unwind label %.loopexit.split-lp

529:                                              ; preds = %527
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef nonnull @.str.2)
          to label %531 unwind label %.loopexit.split-lp

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %530, i32 noundef 1452)
          to label %533 unwind label %.loopexit.split-lp

533:                                              ; preds = %531
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %535 unwind label %.loopexit.split-lp

535:                                              ; preds = %533
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %542 unwind label %.loopexit.split-lp

537:                                              ; preds = %514
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %541

539:                                              ; preds = %515
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %40) #11
  br label %541

541:                                              ; preds = %539, %537
  %.pn311 = phi { ptr, i32 } [ %540, %539 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %40) #11
  br label %664

542:                                              ; preds = %535, %521
  %543 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %41, i32 noundef 14)
          to label %544 unwind label %.thread415

544:                                              ; preds = %542
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %543, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %41)
          to label %546 unwind label %.thread419

.thread419:                                       ; preds = %544
  %545 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #11
  br label %550

546:                                              ; preds = %544
  invoke void @__cxa_throw(ptr nonnull %543, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %548

.thread415:                                       ; preds = %542
  %547 = landingpad { ptr, i32 }
          cleanup
  br label %550

548:                                              ; preds = %546
  %549 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #11
  br label %664

550:                                              ; preds = %.thread419, %.thread415
  %.pn320418 = phi { ptr, i32 } [ %547, %.thread415 ], [ %545, %.thread419 ]
  call void @__cxa_free_exception(ptr %543) #11
  br label %664

551:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #11
  %552 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #12
          to label %553 unwind label %565

553:                                              ; preds = %551
  %554 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %555 unwind label %.thread421

555:                                              ; preds = %553
  %556 = getelementptr inbounds i8, ptr %554, i64 8
  %557 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %556)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef %557, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %558 unwind label %.thread425

558:                                              ; preds = %555
  %559 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %560 unwind label %569

560:                                              ; preds = %558
  invoke void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %559)
          to label %561 unwind label %569

561:                                              ; preds = %560
  invoke void @_ZN3AST15ExprNode_StringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(80) %552, ptr noundef nonnull %43, ptr noundef nonnull %45)
          to label %562 unwind label %571

562:                                              ; preds = %561
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %42, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %552)
          to label %563 unwind label %571

563:                                              ; preds = %562
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %564 unwind label %573

564:                                              ; preds = %563
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #11
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  br label %579

565:                                              ; preds = %551
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %578

.thread421:                                       ; preds = %553
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %577

.thread425:                                       ; preds = %555
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #11
  br label %577

569:                                              ; preds = %560, %558
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %576

571:                                              ; preds = %562, %561
  %.0226 = phi i1 [ false, %562 ], [ true, %561 ]
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %575

573:                                              ; preds = %563
  %574 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #11
  br label %575

575:                                              ; preds = %573, %571
  %.1227 = phi i1 [ false, %573 ], [ %.0226, %571 ]
  %.pn314 = phi { ptr, i32 } [ %574, %573 ], [ %572, %571 ]
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  br label %576

576:                                              ; preds = %569, %575
  %.2228 = phi i1 [ %.1227, %575 ], [ true, %569 ]
  %.pn314.pn = phi { ptr, i32 } [ %.pn314, %575 ], [ %570, %569 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #11
  br i1 %.2228, label %577, label %578

577:                                              ; preds = %.thread425, %.thread421, %576
  %.pn314.pn.pn.pn424 = phi { ptr, i32 } [ %567, %.thread421 ], [ %.pn314.pn, %576 ], [ %568, %.thread425 ]
  call void @_ZdlPvm(ptr noundef nonnull %552, i64 noundef 80) #13
  br label %578

578:                                              ; preds = %576, %577, %565
  %.pn314.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn314.pn.pn.pn424, %577 ], [ %.pn314.pn, %576 ], [ %566, %565 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  br label %664

579:                                              ; preds = %506, %564
  %580 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %581 unwind label %.loopexit479

581:                                              ; preds = %579
  %582 = icmp eq i32 %580, 31
  br i1 %582, label %415, label %583, !llvm.loop !16

583:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %46) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %46, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %584 unwind label %606

584:                                              ; preds = %583
  %585 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %46)
          to label %586 unwind label %608

586:                                              ; preds = %584
  %587 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %585)
  %.not329 = icmp eq i32 %587, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %46) #11
  br i1 %.not329, label %620, label %588

588:                                              ; preds = %586
  %589 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %590 unwind label %.loopexit.split-lp

590:                                              ; preds = %588
  br i1 %589, label %591, label %611

591:                                              ; preds = %590
  %592 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %592, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %594 unwind label %.loopexit.split-lp

594:                                              ; preds = %591
  %595 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %593, ptr noundef nonnull @.str)
          to label %596 unwind label %.loopexit.split-lp

596:                                              ; preds = %594
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef nonnull @.str.1)
          to label %598 unwind label %.loopexit.split-lp

598:                                              ; preds = %596
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %597, ptr noundef nonnull @.str.2)
          to label %600 unwind label %.loopexit.split-lp

600:                                              ; preds = %598
  %601 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %599, i32 noundef 1456)
          to label %602 unwind label %.loopexit.split-lp

602:                                              ; preds = %600
  %603 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %601, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %604 unwind label %.loopexit.split-lp

604:                                              ; preds = %602
  %605 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %603, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %611 unwind label %.loopexit.split-lp

606:                                              ; preds = %583
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %610

608:                                              ; preds = %584
  %609 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #11
  br label %610

610:                                              ; preds = %608, %606
  %.pn327 = phi { ptr, i32 } [ %609, %608 ], [ %607, %606 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %46) #11
  br label %664

611:                                              ; preds = %604, %590
  %612 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %47, i32 noundef 24)
          to label %613 unwind label %.thread428

613:                                              ; preds = %611
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %612, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %47)
          to label %615 unwind label %.thread432

.thread432:                                       ; preds = %613
  %614 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #11
  br label %619

615:                                              ; preds = %613
  invoke void @__cxa_throw(ptr nonnull %612, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %617

.thread428:                                       ; preds = %611
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %619

617:                                              ; preds = %615
  %618 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #11
  br label %664

619:                                              ; preds = %.thread432, %.thread428
  %.pn339431 = phi { ptr, i32 } [ %616, %.thread428 ], [ %614, %.thread432 ]
  call void @__cxa_free_exception(ptr %612) #11
  br label %664

620:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %48) #11
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %49, ptr noundef nonnull @.str.23)
          to label %621 unwind label %639

621:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %51) #11
  invoke void @_ZN8RcStringC2EPKc(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull @.str.22)
          to label %622 unwind label %641

622:                                              ; preds = %621
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %53)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %51, ptr noundef nonnull %52, ptr noundef nonnull %53)
          to label %623 unwind label %643

623:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #11
  call void @_ZNSaIN3AST8PathNodeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #11
  invoke void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr nonnull %51, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %624 unwind label %645

624:                                              ; preds = %623
  invoke void @_ZN3AST4PathC2E8RcStringSt6vectorINS_8PathNodeESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(240) %48, ptr noundef nonnull %49, ptr noundef nonnull %50)
          to label %625 unwind label %647

625:                                              ; preds = %624
  %626 = invoke noundef nonnull align 8 dereferenceable(240) ptr @_ZN3AST4PathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(240) %5, ptr noundef nonnull align 8 dereferenceable(240) %48)
          to label %627 unwind label %649

627:                                              ; preds = %625
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %48) #11
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #11
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #11
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #11
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %53) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %51) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %48) #11
  %628 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3AST4Path5nodesEv(ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %629 unwind label %.loopexit.split-lp

629:                                              ; preds = %627
  %630 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN3AST8PathNodeESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %628) #11
  %631 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST8PathNode4argsEv(ptr noundef nonnull align 8 dereferenceable(40) %630)
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %55) #11
  invoke void @_ZN7TypeRefC2EOS_(ptr noundef nonnull align 8 dereferenceable(120) %56, ptr noundef nonnull align 8 dereferenceable(120) %33)
          to label %632 unwind label %654

632:                                              ; preds = %629
  invoke void @_ZN3AST12PathParamEntC2E7TypeRef(ptr noundef nonnull align 8 dereferenceable(256) %55, ptr noundef nonnull %56)
          to label %633 unwind label %656

633:                                              ; preds = %632
  invoke void @_ZNSt6vectorIN3AST12PathParamEntESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %631, ptr noundef nonnull align 8 dereferenceable(256) %55)
          to label %634 unwind label %658

634:                                              ; preds = %633
  call void @_ZN3AST12PathParamEntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %55) #11
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %55) #11
  %635 = invoke noalias noundef nonnull dereferenceable(304) ptr @_Znwm(i64 noundef 304) #12
          to label %636 unwind label %.loopexit.split-lp

636:                                              ; preds = %634
  invoke void @_ZN3AST17ExprNode_CallPathC2EONS_4PathEOSt6vectorINS_9ExprNodePESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(304) %635, ptr noundef nonnull align 8 dereferenceable(240) %5, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %637 unwind label %662

637:                                              ; preds = %636
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %635)
          to label %638 unwind label %.loopexit.split-lp

638:                                              ; preds = %637
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #11
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %33) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %33) #11
  br label %1079

639:                                              ; preds = %620
  %640 = landingpad { ptr, i32 }
          cleanup
  br label %653

641:                                              ; preds = %621
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %652

643:                                              ; preds = %622
  %644 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

645:                                              ; preds = %623
  %646 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.loopexit

647:                                              ; preds = %624
  %648 = landingpad { ptr, i32 }
          cleanup
  br label %651

649:                                              ; preds = %625
  %650 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %48) #11
  br label %651

651:                                              ; preds = %649, %647
  %.pn330 = phi { ptr, i32 } [ %650, %649 ], [ %648, %647 ]
  call void @_ZNSt6vectorIN3AST8PathNodeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #11
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %651, %645
  %.pn330.pn = phi { ptr, i32 } [ %.pn330, %651 ], [ %646, %645 ]
  call void @_ZNSt15__new_allocatorIN3AST8PathNodeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #11
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #11
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %643
  %.pn330.pn.pn = phi { ptr, i32 } [ %644, %643 ], [ %.pn330.pn, %.loopexit.loopexit ]
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %53) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br label %652

652:                                              ; preds = %641, %.loopexit
  %.pn330.pn.pn.pn = phi { ptr, i32 } [ %.pn330.pn.pn, %.loopexit ], [ %642, %641 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %51) #11
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  br label %653

653:                                              ; preds = %652, %639
  %.pn330.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn330.pn.pn.pn, %652 ], [ %640, %639 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %48) #11
  br label %664

654:                                              ; preds = %629
  %655 = landingpad { ptr, i32 }
          cleanup
  br label %661

656:                                              ; preds = %632
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %660

658:                                              ; preds = %633
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST12PathParamEntD2Ev(ptr noundef nonnull align 8 dereferenceable(256) %55) #11
  br label %660

660:                                              ; preds = %658, %656
  %.pn336 = phi { ptr, i32 } [ %659, %658 ], [ %657, %656 ]
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #11
  br label %661

661:                                              ; preds = %660, %654
  %.pn336.pn = phi { ptr, i32 } [ %.pn336, %660 ], [ %655, %654 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %55) #11
  br label %664

662:                                              ; preds = %636
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %635, i64 noundef 304) #13
  br label %664

664:                                              ; preds = %.loopexit479, %.loopexit.split-lp, %617, %548, %492, %451, %619, %550, %494, %453, %662, %661, %653, %610, %578, %541, %513, %485, %444
  %.pn343.pn = phi { ptr, i32 } [ %.pn343406, %453 ], [ %452, %451 ], [ %.pn341412, %494 ], [ %493, %492 ], [ %.pn339431, %619 ], [ %618, %617 ], [ %663, %662 ], [ %.pn336.pn, %661 ], [ %.pn330.pn.pn.pn.pn, %653 ], [ %.pn327, %610 ], [ %.pn325, %513 ], [ %.pn322, %485 ], [ %.pn320418, %550 ], [ %549, %548 ], [ %.pn314.pn.pn.pn.pn, %578 ], [ %.pn311, %541 ], [ %.pn308, %444 ], [ %lpad.loopexit, %.loopexit479 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #11
  call void @_ZN7TypeRefD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %33) #11
  br label %665

665:                                              ; preds = %664, %438
  %.pn343.pn.pn = phi { ptr, i32 } [ %.pn343.pn, %664 ], [ %439, %438 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %33) #11
  br label %1080

666:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #11
  store ptr @__func__._Z19Parse_ExprVal_InnerR11TokenStream, ptr %57, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #11
  invoke void @_ZNK11TokenStream10point_spanEv(ptr dead_on_unwind nonnull writable sret(%struct.Span) align 8 %58, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %667 unwind label %672

667:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #11
  store ptr %57, ptr %60, align 8, !tbaa !18
  %668 = getelementptr inbounds i8, ptr %60, i64 8
  store ptr %4, ptr %668, align 8, !tbaa !18
  call void @"_ZNSt8functionIFvRSoEEC2IZ19Parse_ExprVal_InnerR11TokenStreamE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(16) %60) #11
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull %59)
          to label %669 unwind label %674

669:                                              ; preds = %667
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #11
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #11
  %670 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %670, ptr noundef nonnull @.str.11)
          to label %671 unwind label %677

671:                                              ; preds = %669
  invoke void @__cxa_throw(ptr nonnull %670, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #14
          to label %1083 unwind label %679

672:                                              ; preds = %666
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %676

674:                                              ; preds = %667
  %675 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #11
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #11
  br label %676

676:                                              ; preds = %674, %672
  %.pn301 = phi { ptr, i32 } [ %675, %674 ], [ %673, %672 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #11
  br label %681

677:                                              ; preds = %669
  %678 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %670) #11
  br label %681

679:                                              ; preds = %671
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %681

681:                                              ; preds = %679, %677, %676
  %.pn303 = phi { ptr, i32 } [ %680, %679 ], [ %678, %677 ], [ %.pn301, %676 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #11
  br label %1080

682:                                              ; preds = %328, %333, %263
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %61, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %683 unwind label %118

683:                                              ; preds = %682
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %61)
          to label %684 unwind label %691

684:                                              ; preds = %683
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %61) #11
  %685 = invoke noalias noundef nonnull dereferenceable(280) ptr @_Znwm(i64 noundef 280) #12
          to label %686 unwind label %118

686:                                              ; preds = %684
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %62, ptr noundef nonnull align 8 dereferenceable(240) %5)
          to label %687 unwind label %.thread434

687:                                              ; preds = %686
  invoke void @_ZN3AST19ExprNode_NamedValueC2ENS_4PathE(ptr noundef nonnull align 8 dereferenceable(280) %685, ptr noundef nonnull %62)
          to label %689 unwind label %.thread438

.thread438:                                       ; preds = %687
  %688 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %62) #11
  br label %696

689:                                              ; preds = %687
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %685)
          to label %690 unwind label %694

690:                                              ; preds = %689
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %62) #11
  br label %1079

691:                                              ; preds = %683
  %692 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %61) #11
  br label %1080

.thread434:                                       ; preds = %686
  %693 = landingpad { ptr, i32 }
          cleanup
  br label %696

694:                                              ; preds = %689
  %695 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %62) #11
  br label %1080

696:                                              ; preds = %.thread438, %.thread434
  %.pn355437 = phi { ptr, i32 } [ %693, %.thread434 ], [ %688, %.thread438 ]
  call void @_ZdlPvm(ptr noundef nonnull %685, i64 noundef 280) #13
  br label %1080

697:                                              ; preds = %104, %104, %104, %104
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %63, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %698 unwind label %118

698:                                              ; preds = %697
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %63)
          to label %699 unwind label %700

699:                                              ; preds = %698
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %63) #11
  invoke void @_Z21Parse_ExprVal_ClosureR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1079 unwind label %118

700:                                              ; preds = %698
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %63) #11
  br label %1080

702:                                              ; preds = %104
  %703 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
          to label %704 unwind label %118

704:                                              ; preds = %702
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %703, i8 0, i64 40, i1 false)
  invoke void @_ZN3AST24ExprNode_WildcardPatternC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %703)
          to label %.invoke510 unwind label %705

705:                                              ; preds = %704
  %706 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %703, i64 noundef 40) #13
  br label %1080

707:                                              ; preds = %104
  %708 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #12
          to label %709 unwind label %118

709:                                              ; preds = %707
  %710 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %711 unwind label %716

711:                                              ; preds = %709
  %712 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %713 unwind label %716

713:                                              ; preds = %711
  %714 = extractvalue { i64, i64 } %710, 1
  %715 = extractvalue { i64, i64 } %710, 0
  invoke void @_ZN3AST16ExprNode_IntegerC2E4U1289eCoreType(ptr noundef nonnull align 8 dereferenceable(64) %708, i64 %715, i64 %714, i32 noundef %712)
          to label %.invoke510 unwind label %716

716:                                              ; preds = %713, %711, %709
  %717 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %708, i64 noundef 64) #13
  br label %1080

718:                                              ; preds = %104
  %719 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #12
          to label %720 unwind label %118

720:                                              ; preds = %718
  %721 = call noundef double @_ZNK5Token8floatvalEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %722 = invoke noundef i32 @_ZNK5Token8datatypeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %723 unwind label %724

723:                                              ; preds = %720
  invoke void @_ZN3AST14ExprNode_FloatC2Ed9eCoreType(ptr noundef nonnull align 8 dereferenceable(56) %719, double noundef %721, i32 noundef %722)
          to label %.invoke510 unwind label %724

724:                                              ; preds = %723, %720
  %725 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %719, i64 noundef 56) #13
  br label %1080

726:                                              ; preds = %104
  %727 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #12
          to label %728 unwind label %118

728:                                              ; preds = %726
  %729 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %730 unwind label %.thread440

730:                                              ; preds = %728
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(32) %729)
          to label %731 unwind label %.thread440

731:                                              ; preds = %730
  %732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Token11str_hygieneEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  invoke void @_ZN5Ident7HygieneC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %732)
          to label %733 unwind label %.thread444

733:                                              ; preds = %731
  invoke void @_ZN3AST15ExprNode_StringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Ident7HygieneE(ptr noundef nonnull align 8 dereferenceable(80) %727, ptr noundef nonnull %64, ptr noundef nonnull %65)
          to label %734 unwind label %738

734:                                              ; preds = %733
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %727)
          to label %735 unwind label %738

735:                                              ; preds = %734
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #11
  br label %1079

.thread440:                                       ; preds = %728, %730
  %736 = landingpad { ptr, i32 }
          cleanup
  br label %740

.thread444:                                       ; preds = %731
  %737 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #11
  br label %740

738:                                              ; preds = %733, %734
  %.0141 = phi i1 [ false, %734 ], [ true, %733 ]
  %739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Ident7HygieneD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #11
  br i1 %.0141, label %740, label %1080

740:                                              ; preds = %.thread444, %.thread440, %738
  %.pn290.pn443 = phi { ptr, i32 } [ %736, %.thread440 ], [ %739, %738 ], [ %737, %.thread444 ]
  call void @_ZdlPvm(ptr noundef nonnull %727, i64 noundef 80) #13
  br label %1080

741:                                              ; preds = %104
  %742 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #12
          to label %743 unwind label %118

743:                                              ; preds = %741
  %744 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Token3strB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %745 unwind label %.thread447

745:                                              ; preds = %743
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %744)
          to label %746 unwind label %.thread447

746:                                              ; preds = %745
  invoke void @_ZN3AST19ExprNode_ByteStringC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %742, ptr noundef nonnull %66)
          to label %748 unwind label %.thread451

.thread451:                                       ; preds = %746
  %747 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  br label %753

748:                                              ; preds = %746
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %742)
          to label %749 unwind label %751

749:                                              ; preds = %748
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  br label %1079

.thread447:                                       ; preds = %743, %745
  %750 = landingpad { ptr, i32 }
          cleanup
  br label %753

751:                                              ; preds = %748
  %752 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  br label %1080

753:                                              ; preds = %.thread451, %.thread447
  %.pn288450 = phi { ptr, i32 } [ %750, %.thread447 ], [ %747, %.thread451 ]
  call void @_ZdlPvm(ptr noundef nonnull %742, i64 noundef 72) #13
  br label %1080

754:                                              ; preds = %104
  %755 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #12
          to label %756 unwind label %118

756:                                              ; preds = %754
  invoke void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41) %755, i1 noundef zeroext true)
          to label %.invoke510 unwind label %757

757:                                              ; preds = %756
  %758 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %755, i64 noundef 48) #13
  br label %1080

759:                                              ; preds = %104
  %760 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #12
          to label %761 unwind label %118

761:                                              ; preds = %759
  invoke void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41) %760, i1 noundef zeroext false)
          to label %.invoke510 unwind label %763

.invoke510:                                       ; preds = %761, %756, %723, %713, %704
  %762 = phi ptr [ %703, %704 ], [ %708, %713 ], [ %719, %723 ], [ %755, %756 ], [ %760, %761 ]
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %762)
          to label %1079 unwind label %118

763:                                              ; preds = %761
  %764 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %760, i64 noundef 48) #13
  br label %1080

765:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %67) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %67, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %766 unwind label %783

766:                                              ; preds = %765
  %767 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %67)
          to label %768 unwind label %785

768:                                              ; preds = %766
  %769 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %767)
  %770 = icmp eq i32 %769, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %67) #11
  br i1 %770, label %771, label %797

771:                                              ; preds = %768
  %772 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %773 unwind label %118

773:                                              ; preds = %771
  br i1 %772, label %774, label %788

774:                                              ; preds = %773
  %775 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %775, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %777 unwind label %118

777:                                              ; preds = %774
  %778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %776, ptr noundef nonnull @.str.24)
          to label %779 unwind label %118

779:                                              ; preds = %777
  %780 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %778, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %781 unwind label %118

781:                                              ; preds = %779
  %782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %780, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %788 unwind label %118

783:                                              ; preds = %765
  %784 = landingpad { ptr, i32 }
          cleanup
  br label %787

785:                                              ; preds = %766
  %786 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %67) #11
  br label %787

787:                                              ; preds = %785, %783
  %.pn270 = phi { ptr, i32 } [ %786, %785 ], [ %784, %783 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %67) #11
  br label %1080

788:                                              ; preds = %781, %773
  %789 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #12
          to label %790 unwind label %118

790:                                              ; preds = %788
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %68, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #11
  invoke void @_ZN3AST14ExprNode_TupleC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(64) %789, ptr noundef nonnull %68)
          to label %791 unwind label %795

791:                                              ; preds = %790
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %789)
          to label %792 unwind label %793

792:                                              ; preds = %791
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #11
  br label %1079

793:                                              ; preds = %791
  %794 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #11
  br label %1080

795:                                              ; preds = %790
  %796 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #11
  call void @_ZdlPvm(ptr noundef nonnull %789, i64 noundef 64) #13
  br label %1080

797:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %69) #11
  %798 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %69, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull byval(%struct.ParseState) align 8 %798)
  %799 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  store i8 0, ptr %799, align 8, !tbaa !10
  %800 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %801 = getelementptr inbounds i8, ptr %800, i64 1
  store i8 0, ptr %801, align 1, !tbaa !19
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %70, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %802 unwind label %816

802:                                              ; preds = %797
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %70)
          to label %803 unwind label %818

803:                                              ; preds = %802
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #11
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %804 unwind label %816

804:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %71) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %71, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %805 unwind label %820

805:                                              ; preds = %804
  %806 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %71)
          to label %807 unwind label %822

807:                                              ; preds = %805
  %808 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %806)
  %809 = icmp eq i32 %808, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %71) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %71) #11
  br i1 %809, label %810, label %866

810:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %72) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #11
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %.preheader unwind label %.loopexit.split-lp481

.preheader:                                       ; preds = %810, %837
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %73) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %73, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %811 unwind label %825

811:                                              ; preds = %.preheader
  %812 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %73)
          to label %813 unwind label %827

813:                                              ; preds = %811
  %814 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %812)
  %815 = icmp eq i32 %814, 24
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %73) #11
  br i1 %815, label %840, label %830

816:                                              ; preds = %803, %797
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %899

818:                                              ; preds = %802
  %819 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #11
  br label %899

820:                                              ; preds = %804
  %821 = landingpad { ptr, i32 }
          cleanup
  br label %824

822:                                              ; preds = %805
  %823 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %71) #11
  br label %824

824:                                              ; preds = %822, %820
  %.pn272 = phi { ptr, i32 } [ %823, %822 ], [ %821, %820 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %71) #11
  br label %898

.loopexit480:                                     ; preds = %830
  %lpad.loopexit482 = landingpad { ptr, i32 }
          cleanup
  br label %865

.loopexit.split-lp481:                            ; preds = %810
  %lpad.loopexit.split-lp483 = landingpad { ptr, i32 }
          cleanup
  br label %865

825:                                              ; preds = %.preheader
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %829

827:                                              ; preds = %811
  %828 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #11
  br label %829

829:                                              ; preds = %827, %825
  %.pn274 = phi { ptr, i32 } [ %828, %827 ], [ %826, %825 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %73) #11
  br label %865

830:                                              ; preds = %813
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %74, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %831 unwind label %.loopexit480

831:                                              ; preds = %830
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %74)
          to label %832 unwind label %846

832:                                              ; preds = %831
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %74) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #11
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %75, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %833 unwind label %848

833:                                              ; preds = %832
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %834 unwind label %850

834:                                              ; preds = %833
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %76) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %76, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %835 unwind label %853

835:                                              ; preds = %834
  %836 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %76)
          to label %837 unwind label %855

837:                                              ; preds = %835
  %838 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %836)
  %839 = icmp eq i32 %838, 31
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %76) #11
  br i1 %839, label %.preheader, label %840, !llvm.loop !20

840:                                              ; preds = %813, %837
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #11
  %841 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #12
          to label %842 unwind label %858

842:                                              ; preds = %840
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 8 dereferenceable(24) %72) #11
  invoke void @_ZN3AST14ExprNode_TupleC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(64) %841, ptr noundef nonnull %78)
          to label %843 unwind label %862

843:                                              ; preds = %842
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %77, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %841)
          to label %844 unwind label %860

844:                                              ; preds = %843
  %845 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %77)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #11
  br label %866

846:                                              ; preds = %831
  %847 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %74) #11
  br label %865

848:                                              ; preds = %832
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %852

850:                                              ; preds = %833
  %851 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #11
  br label %852

852:                                              ; preds = %850, %848
  %.pn276 = phi { ptr, i32 } [ %851, %850 ], [ %849, %848 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #11
  br label %865

853:                                              ; preds = %834
  %854 = landingpad { ptr, i32 }
          cleanup
  br label %857

855:                                              ; preds = %835
  %856 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #11
  br label %857

857:                                              ; preds = %855, %853
  %.pn278 = phi { ptr, i32 } [ %856, %855 ], [ %854, %853 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %76) #11
  br label %865

858:                                              ; preds = %840
  %859 = landingpad { ptr, i32 }
          cleanup
  br label %864

860:                                              ; preds = %843
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #11
  br label %864

862:                                              ; preds = %842
  %863 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #11
  call void @_ZdlPvm(ptr noundef nonnull %841, i64 noundef 64) #13
  br label %864

864:                                              ; preds = %860, %862, %858
  %.pn280 = phi { ptr, i32 } [ %863, %862 ], [ %861, %860 ], [ %859, %858 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #11
  br label %865

865:                                              ; preds = %.loopexit480, %.loopexit.split-lp481, %864, %857, %852, %846, %829
  %.pn280.pn = phi { ptr, i32 } [ %.pn280, %864 ], [ %.pn278, %857 ], [ %.pn276, %852 ], [ %847, %846 ], [ %.pn274, %829 ], [ %lpad.loopexit482, %.loopexit480 ], [ %lpad.loopexit.split-lp483, %.loopexit.split-lp481 ]
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %72) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #11
  br label %898

866:                                              ; preds = %807, %844
  %867 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %.not283 = icmp eq i32 %867, 24
  br i1 %.not283, label %897, label %868

868:                                              ; preds = %866
  %869 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %870 unwind label %886

870:                                              ; preds = %868
  br i1 %869, label %871, label %888

871:                                              ; preds = %870
  %872 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %873 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %872, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %874 unwind label %886

874:                                              ; preds = %871
  %875 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %873, ptr noundef nonnull @.str.10)
          to label %876 unwind label %886

876:                                              ; preds = %874
  %877 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %875, ptr noundef nonnull @.str.1)
          to label %878 unwind label %886

878:                                              ; preds = %876
  %879 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %877, ptr noundef nonnull @.str.2)
          to label %880 unwind label %886

880:                                              ; preds = %878
  %881 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %879, i32 noundef 1519)
          to label %882 unwind label %886

882:                                              ; preds = %880
  %883 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %881, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %884 unwind label %886

884:                                              ; preds = %882
  %885 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %883, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %888 unwind label %886

886:                                              ; preds = %884, %882, %880, %878, %876, %874, %871, %868
  %887 = landingpad { ptr, i32 }
          cleanup
  br label %898

888:                                              ; preds = %884, %870
  %889 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %79, i32 noundef 24)
          to label %890 unwind label %.thread457

890:                                              ; preds = %888
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %889, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %79)
          to label %892 unwind label %.thread461

.thread461:                                       ; preds = %890
  %891 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #11
  br label %896

892:                                              ; preds = %890
  invoke void @__cxa_throw(ptr nonnull %889, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %894

.thread457:                                       ; preds = %888
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %896

894:                                              ; preds = %892
  %895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %79) #11
  br label %898

896:                                              ; preds = %.thread461, %.thread457
  %.pn284460 = phi { ptr, i32 } [ %893, %.thread457 ], [ %891, %.thread461 ]
  call void @__cxa_free_exception(ptr %889) #11
  br label %898

897:                                              ; preds = %866
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %69) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %69) #11
  br label %1079

898:                                              ; preds = %894, %896, %886, %865, %824
  %.pn284.pn = phi { ptr, i32 } [ %.pn284460, %896 ], [ %895, %894 ], [ %887, %886 ], [ %.pn280.pn, %865 ], [ %.pn272, %824 ]
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11
  br label %899

899:                                              ; preds = %898, %818, %816
  %.pn284.pn.pn = phi { ptr, i32 } [ %.pn284.pn, %898 ], [ %817, %816 ], [ %819, %818 ]
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %69) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %69) #11
  br label %1080

900:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %80) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %80, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %901 unwind label %911

901:                                              ; preds = %900
  %902 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %80)
          to label %903 unwind label %913

903:                                              ; preds = %901
  %904 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %902)
  %905 = icmp eq i32 %904, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %80) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %80) #11
  br i1 %905, label %906, label %920

906:                                              ; preds = %903
  %907 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #12
          to label %908 unwind label %118

908:                                              ; preds = %906
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %81, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  invoke void @_ZN3AST14ExprNode_ArrayC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %907, ptr noundef nonnull %81)
          to label %909 unwind label %918

909:                                              ; preds = %908
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %907)
          to label %910 unwind label %916

910:                                              ; preds = %909
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  br label %1079

911:                                              ; preds = %900
  %912 = landingpad { ptr, i32 }
          cleanup
  br label %915

913:                                              ; preds = %901
  %914 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %80) #11
  br label %915

915:                                              ; preds = %913, %911
  %.pn247 = phi { ptr, i32 } [ %914, %913 ], [ %912, %911 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %80) #11
  br label %1080

916:                                              ; preds = %909
  %917 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  br label %1080

918:                                              ; preds = %908
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  call void @_ZdlPvm(ptr noundef nonnull %907, i64 noundef 72) #13
  br label %1080

920:                                              ; preds = %903
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %82) #11
  %921 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  call void @_ZN15SavedParseStateC2ER11TokenStream10ParseState(ptr noundef nonnull align 8 dereferenceable(40) %82, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull byval(%struct.ParseState) align 8 %921)
  %922 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  store i8 0, ptr %922, align 8, !tbaa !10
  %923 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %924 = getelementptr inbounds i8, ptr %923, i64 1
  store i8 0, ptr %924, align 1, !tbaa !19
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %83, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %925 unwind label %957

925:                                              ; preds = %920
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %83)
          to label %926 unwind label %959

926:                                              ; preds = %925
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %83) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #11
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %84, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %927 unwind label %961

927:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %85) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %85, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %928 unwind label %963

928:                                              ; preds = %927
  %929 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %85)
          to label %930 unwind label %965

930:                                              ; preds = %928
  %931 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %929)
  %932 = icmp eq i32 %931, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %85) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %85) #11
  br i1 %932, label %933, label %996

933:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #11
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %86, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %934 unwind label %968

934:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %87) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %87, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %935 unwind label %970

935:                                              ; preds = %934
  %936 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %87)
          to label %937 unwind label %972

937:                                              ; preds = %935
  %938 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %936)
  %.not262 = icmp eq i32 %938, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %87) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %87) #11
  br i1 %.not262, label %986, label %939

939:                                              ; preds = %937
  %940 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %941 unwind label %975

941:                                              ; preds = %939
  br i1 %940, label %942, label %977

942:                                              ; preds = %941
  %943 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %944 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %943, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %945 unwind label %975

945:                                              ; preds = %942
  %946 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %944, ptr noundef nonnull @.str)
          to label %947 unwind label %975

947:                                              ; preds = %945
  %948 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %946, ptr noundef nonnull @.str.1)
          to label %949 unwind label %975

949:                                              ; preds = %947
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %948, ptr noundef nonnull @.str.2)
          to label %951 unwind label %975

951:                                              ; preds = %949
  %952 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %950, i32 noundef 1537)
          to label %953 unwind label %975

953:                                              ; preds = %951
  %954 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %952, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %955 unwind label %975

955:                                              ; preds = %953
  %956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %954, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %977 unwind label %975

957:                                              ; preds = %920
  %958 = landingpad { ptr, i32 }
          cleanup
  br label %1073

959:                                              ; preds = %925
  %960 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %83) #11
  br label %1073

961:                                              ; preds = %926
  %962 = landingpad { ptr, i32 }
          cleanup
  br label %1072

963:                                              ; preds = %927
  %964 = landingpad { ptr, i32 }
          cleanup
  br label %967

965:                                              ; preds = %928
  %966 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %85) #11
  br label %967

967:                                              ; preds = %965, %963
  %.pn249 = phi { ptr, i32 } [ %966, %965 ], [ %964, %963 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %85) #11
  br label %1071

968:                                              ; preds = %933
  %969 = landingpad { ptr, i32 }
          cleanup
  br label %995

970:                                              ; preds = %934
  %971 = landingpad { ptr, i32 }
          cleanup
  br label %974

972:                                              ; preds = %935
  %973 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %87) #11
  br label %974

974:                                              ; preds = %972, %970
  %.pn260 = phi { ptr, i32 } [ %973, %972 ], [ %971, %970 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %87) #11
  br label %994

975:                                              ; preds = %986, %955, %953, %951, %949, %947, %945, %942, %939
  %976 = landingpad { ptr, i32 }
          cleanup
  br label %994

977:                                              ; preds = %955, %941
  %978 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %88, i32 noundef 30)
          to label %979 unwind label %.thread465

979:                                              ; preds = %977
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %978, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %88)
          to label %981 unwind label %.thread469

.thread469:                                       ; preds = %979
  %980 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %88) #11
  br label %985

981:                                              ; preds = %979
  invoke void @__cxa_throw(ptr nonnull %978, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %983

.thread465:                                       ; preds = %977
  %982 = landingpad { ptr, i32 }
          cleanup
  br label %985

983:                                              ; preds = %981
  %984 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %88) #11
  br label %994

985:                                              ; preds = %.thread469, %.thread465
  %.pn263468 = phi { ptr, i32 } [ %982, %.thread465 ], [ %980, %.thread469 ]
  call void @__cxa_free_exception(ptr %978) #11
  br label %994

986:                                              ; preds = %937
  %987 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #12
          to label %988 unwind label %975

988:                                              ; preds = %986
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %84)
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %86)
  invoke void @_ZN3AST14ExprNode_ArrayC2ENS_9ExprNodePES1_(ptr noundef nonnull align 8 dereferenceable(72) %987, ptr noundef nonnull %89, ptr noundef nonnull %90)
          to label %989 unwind label %991

989:                                              ; preds = %988
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %987)
          to label %990 unwind label %991

990:                                              ; preds = %989
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #11
  br label %1070

991:                                              ; preds = %989, %988
  %.0131 = phi i1 [ false, %989 ], [ true, %988 ]
  %992 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  br i1 %.0131, label %993, label %994

993:                                              ; preds = %991
  call void @_ZdlPvm(ptr noundef nonnull %987, i64 noundef 72) #13
  br label %994

994:                                              ; preds = %983, %991, %993, %985, %975, %974
  %.pn263.pn = phi { ptr, i32 } [ %.pn263468, %985 ], [ %984, %983 ], [ %976, %975 ], [ %992, %993 ], [ %992, %991 ], [ %.pn260, %974 ]
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #11
  br label %995

995:                                              ; preds = %994, %968
  %.pn263.pn.pn = phi { ptr, i32 } [ %.pn263.pn, %994 ], [ %969, %968 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #11
  br label %1071

996:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %91) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #11
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %.preheader485 unwind label %.loopexit.split-lp487

.preheader485:                                    ; preds = %996
  %997 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %998 = icmp eq i32 %997, 31
  br i1 %998, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader485, %1018
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %92) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %92, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %999 unwind label %1004

999:                                              ; preds = %.lr.ph
  %1000 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %92)
          to label %1001 unwind label %1006

1001:                                             ; preds = %999
  %1002 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1000)
  %1003 = icmp eq i32 %1002, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %92) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %92) #11
  br i1 %1003, label %._crit_edge, label %1009

.loopexit486:                                     ; preds = %1009
  %lpad.loopexit488 = landingpad { ptr, i32 }
          cleanup
  br label %1069

.loopexit.split-lp487:                            ; preds = %996, %1033, %1036, %1039, %1041, %1043, %1045, %1047, %1049, %1060
  %lpad.loopexit.split-lp489 = landingpad { ptr, i32 }
          cleanup
  br label %1069

1004:                                             ; preds = %.lr.ph
  %1005 = landingpad { ptr, i32 }
          cleanup
  br label %1008

1006:                                             ; preds = %999
  %1007 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %92) #11
  br label %1008

1008:                                             ; preds = %1006, %1004
  %.pn251 = phi { ptr, i32 } [ %1007, %1006 ], [ %1005, %1004 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %92) #11
  br label %1069

1009:                                             ; preds = %1001
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %93, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %1010 unwind label %.loopexit486

1010:                                             ; preds = %1009
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %93)
          to label %1011 unwind label %1012

1011:                                             ; preds = %1010
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %93) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #11
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %94, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1014 unwind label %1022

1012:                                             ; preds = %1010
  %1013 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %93) #11
  br label %1069

1014:                                             ; preds = %1011
  invoke void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %1015 unwind label %1024

1015:                                             ; preds = %1014
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %95) #11
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %95, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %1016 unwind label %1027

1016:                                             ; preds = %1015
  %1017 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %95)
          to label %1018 unwind label %1029

1018:                                             ; preds = %1016
  %1019 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %1017)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %95) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %95) #11
  %1020 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %1021 = icmp eq i32 %1020, 31
  br i1 %1021, label %.lr.ph, label %._crit_edge, !llvm.loop !21

1022:                                             ; preds = %1011
  %1023 = landingpad { ptr, i32 }
          cleanup
  br label %1026

1024:                                             ; preds = %1014
  %1025 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #11
  br label %1026

1026:                                             ; preds = %1024, %1022
  %.pn253 = phi { ptr, i32 } [ %1025, %1024 ], [ %1023, %1022 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #11
  br label %1069

1027:                                             ; preds = %1015
  %1028 = landingpad { ptr, i32 }
          cleanup
  br label %1031

1029:                                             ; preds = %1016
  %1030 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %95) #11
  br label %1031

1031:                                             ; preds = %1029, %1027
  %.pn255 = phi { ptr, i32 } [ %1030, %1029 ], [ %1028, %1027 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %95) #11
  br label %1069

._crit_edge:                                      ; preds = %1001, %1018, %.preheader485
  %1032 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %.not = icmp eq i32 %1032, 30
  br i1 %.not, label %1060, label %1033

1033:                                             ; preds = %._crit_edge
  %1034 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1035 unwind label %.loopexit.split-lp487

1035:                                             ; preds = %1033
  br i1 %1034, label %1036, label %1051

1036:                                             ; preds = %1035
  %1037 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !6
  %1038 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1037, ptr noundef nonnull @__func__._Z19Parse_ExprVal_InnerR11TokenStream)
          to label %1039 unwind label %.loopexit.split-lp487

1039:                                             ; preds = %1036
  %1040 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1038, ptr noundef nonnull @.str.10)
          to label %1041 unwind label %.loopexit.split-lp487

1041:                                             ; preds = %1039
  %1042 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1040, ptr noundef nonnull @.str.1)
          to label %1043 unwind label %.loopexit.split-lp487

1043:                                             ; preds = %1041
  %1044 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1042, ptr noundef nonnull @.str.2)
          to label %1045 unwind label %.loopexit.split-lp487

1045:                                             ; preds = %1043
  %1046 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1044, i32 noundef 1553)
          to label %1047 unwind label %.loopexit.split-lp487

1047:                                             ; preds = %1045
  %1048 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1046, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1049 unwind label %.loopexit.split-lp487

1049:                                             ; preds = %1047
  %1050 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1048, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1051 unwind label %.loopexit.split-lp487

1051:                                             ; preds = %1049, %1035
  %1052 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %96, i32 noundef 30)
          to label %1053 unwind label %.thread471

1053:                                             ; preds = %1051
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %1052, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %96)
          to label %1055 unwind label %.thread475

.thread475:                                       ; preds = %1053
  %1054 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #11
  br label %1059

1055:                                             ; preds = %1053
  invoke void @__cxa_throw(ptr nonnull %1052, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %1083 unwind label %1057

.thread471:                                       ; preds = %1051
  %1056 = landingpad { ptr, i32 }
          cleanup
  br label %1059

1057:                                             ; preds = %1055
  %1058 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %96) #11
  br label %1069

1059:                                             ; preds = %.thread475, %.thread471
  %.pn257474 = phi { ptr, i32 } [ %1056, %.thread471 ], [ %1054, %.thread475 ]
  call void @__cxa_free_exception(ptr %1052) #11
  br label %1069

1060:                                             ; preds = %._crit_edge
  %1061 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #12
          to label %1062 unwind label %.loopexit.split-lp487

1062:                                             ; preds = %1060
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 8 dereferenceable(24) %91) #11
  invoke void @_ZN3AST14ExprNode_ArrayC2ESt6vectorINS_9ExprNodePESaIS2_EE(ptr noundef nonnull align 8 dereferenceable(72) %1061, ptr noundef nonnull %97)
          to label %1063 unwind label %1067

1063:                                             ; preds = %1062
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %1061)
          to label %1064 unwind label %1065

1064:                                             ; preds = %1063
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #11
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #11
  br label %1070

1065:                                             ; preds = %1063
  %1066 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #11
  br label %1069

1067:                                             ; preds = %1062
  %1068 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #11
  call void @_ZdlPvm(ptr noundef nonnull %1061, i64 noundef 72) #13
  br label %1069

1069:                                             ; preds = %.loopexit486, %.loopexit.split-lp487, %1065, %1057, %1067, %1059, %1031, %1026, %1012, %1008
  %.pn257.pn = phi { ptr, i32 } [ %.pn257474, %1059 ], [ %1058, %1057 ], [ %1068, %1067 ], [ %1066, %1065 ], [ %.pn255, %1031 ], [ %.pn253, %1026 ], [ %1013, %1012 ], [ %.pn251, %1008 ], [ %lpad.loopexit488, %.loopexit486 ], [ %lpad.loopexit.split-lp489, %.loopexit.split-lp487 ]
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %91) #11
  br label %1071

1070:                                             ; preds = %1064, %990
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #11
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %82) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %82) #11
  br label %1079

1071:                                             ; preds = %1069, %995, %967
  %.pn263.pn.pn.pn = phi { ptr, i32 } [ %.pn263.pn.pn, %995 ], [ %.pn257.pn, %1069 ], [ %.pn249, %967 ]
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #11
  br label %1072

1072:                                             ; preds = %1071, %961
  %.pn263.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn263.pn.pn.pn, %1071 ], [ %962, %961 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #11
  br label %1073

1073:                                             ; preds = %1072, %959, %957
  %.pn263.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn263.pn.pn.pn.pn, %1072 ], [ %960, %959 ], [ %958, %957 ]
  call void @_ZN15SavedParseStateD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %82) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %82) #11
  br label %1080

1074:                                             ; preds = %104
  %1075 = call ptr @__cxa_allocate_exception(i64 96) #11
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %1075, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %.invoke unwind label %1077

.invoke:                                          ; preds = %1074, %187
  %1076 = phi ptr [ %188, %187 ], [ %1075, %1074 ]
  invoke void @__cxa_throw(ptr nonnull %1076, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #14
          to label %.cont unwind label %118

.cont:                                            ; preds = %.invoke
  unreachable

1077:                                             ; preds = %1074
  %1078 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1075) #11
  br label %1080

1079:                                             ; preds = %.invoke511, %.invoke510, %699, %192, %191, %186, %134, %129, %117, %1070, %910, %897, %792, %749, %735, %690, %638, %319, %296, %283, %272, %219, %200, %195, %156, %151, %143, %124
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %5) #11
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %5) #11
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #11
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #11
  ret void

1080:                                             ; preds = %916, %793, %751, %694, %410, %368, %323, %287, %918, %795, %753, %738, %740, %696, %412, %370, %325, %289, %223, %225, %146, %148, %1077, %1073, %915, %899, %787, %763, %757, %724, %716, %705, %700, %691, %681, %665, %403, %361, %320, %297, %284, %273, %269, %259, %253, %220, %201, %196, %189, %176, %157, %152, %135, %130, %125, %120, %118, %114
  %.pn365 = phi { ptr, i32 } [ %119, %118 ], [ %1078, %1077 ], [ %919, %918 ], [ %917, %916 ], [ %.pn263.pn.pn.pn.pn.pn, %1073 ], [ %.pn247, %915 ], [ %796, %795 ], [ %794, %793 ], [ %.pn284.pn.pn, %899 ], [ %.pn270, %787 ], [ %764, %763 ], [ %758, %757 ], [ %.pn288450, %753 ], [ %752, %751 ], [ %.pn290.pn443, %740 ], [ %739, %738 ], [ %725, %724 ], [ %717, %716 ], [ %706, %705 ], [ %701, %700 ], [ %.pn355437, %696 ], [ %695, %694 ], [ %692, %691 ], [ %.pn349394, %370 ], [ %369, %368 ], [ %.pn347400, %412 ], [ %411, %410 ], [ %.pn343.pn.pn, %665 ], [ %.pn305, %403 ], [ %.pn303, %681 ], [ %.pn298, %361 ], [ %.pn351388, %325 ], [ %324, %323 ], [ %321, %320 ], [ %298, %297 ], [ %.pn353382, %289 ], [ %288, %287 ], [ %285, %284 ], [ %274, %273 ], [ %.pn296, %269 ], [ %.pn294, %259 ], [ %254, %253 ], [ %.pn358378, %225 ], [ %224, %223 ], [ %221, %220 ], [ %202, %201 ], [ %197, %196 ], [ %190, %189 ], [ %.pn360, %176 ], [ %158, %157 ], [ %153, %152 ], [ %.pn362.pn371, %148 ], [ %147, %146 ], [ %136, %135 ], [ %131, %130 ], [ %126, %125 ], [ %121, %120 ], [ %.pn, %114 ]
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %5) #11
  br label %1081

1081:                                             ; preds = %1080, %108
  %.pn365.pn = phi { ptr, i32 } [ %.pn365, %1080 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %5) #11
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #11
  br label %1082

1082:                                             ; preds = %1081, %106
  %.pn365.pn.pn = phi { ptr, i32 } [ %.pn365.pn, %1081 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #11
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #11
  resume { ptr, i32 } %.pn365.pn.pn

1083:                                             ; preds = %1055, %981, %892, %671, %615, %546, %490, %449, %408, %366
  unreachable
}

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

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(ptr) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

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

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

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

declare noundef ptr @_ZN5Token7typestrE10eTokenType(i32 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST14ExprNode_FloatC2Ed9eCoreType(ptr noundef nonnull align 8 dereferenceable(56), double noundef, i32 noundef) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3AST13ExprNode_BoolC2Eb(ptr noundef nonnull align 8 dereferenceable(41), i1 noundef zeroext) unnamed_addr #1 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !12, i64 0}
!11 = !{!"_ZTS10ParseState", !12, i64 0, !12, i64 1, !12, i64 2, !13, i64 8, !13, i64 16, !13, i64 24}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!13, !13, i64 0}
!19 = !{!11, !12, i64 1}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass