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

; 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.AST::ExprNodeP" = type { ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.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 }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"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 }
%"struct.Token::TagTakeIP" = type { i8 }
%class.InterpolatedFragment = type { i32, ptr }

@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
@__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb = external hidden unnamed_addr constant [20 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #4

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

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

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

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

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

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

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)) #4

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

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

; 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 nounwind uwtable
declare dso_local void @_ZN3AST9ExprNodePC2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z19Parse_ExprBlockLineR11TokenStreamPb(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef %2) #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %class.Token, align 8
  %8 = alloca %"class.AST::ExprNodeP", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %12 = alloca %class.Token, align 8
  %13 = alloca %struct.Ident, align 8
  %14 = alloca %class.Token, align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca i1, align 1
  %17 = alloca %class.Token, align 8
  %18 = alloca %struct.Ident, align 8
  %19 = alloca %"class.AST::ExprNodeP", align 8
  %20 = alloca i1, align 1
  %21 = alloca i32, align 4
  %22 = alloca %struct.Ident, align 8
  %23 = alloca %struct.Ident, align 8
  %24 = alloca %class.Token, align 8
  %25 = alloca %"class.AST::ExprNodeP", align 8
  %26 = alloca %struct.Ident, align 8
  %27 = alloca %"class.AST::ExprNodeP", align 8
  %28 = alloca %struct.Ident, align 8
  %29 = alloca %"class.AST::ExprNodeP", align 8
  %30 = alloca %struct.Ident, align 8
  %31 = alloca %class.Token, align 8
  %32 = alloca %"class.AST::Path", align 8
  %33 = alloca %class.Token, align 8
  %34 = alloca %class.Token, align 8
  %35 = alloca i1, align 1
  %36 = alloca %"class.AST::ExprNodeP", align 8
  %37 = alloca %"class.AST::Path", align 8
  %38 = alloca %class.Token, align 8
  %39 = alloca %"struct.Token::TagTakeIP", align 1
  %40 = alloca %class.InterpolatedFragment, align 8
  %41 = alloca %class.Token, align 8
  %42 = alloca %"struct.Token::TagTakeIP", align 1
  %43 = alloca %class.InterpolatedFragment, align 8
  %44 = alloca %"class.AST::Path", align 8
  %45 = alloca %"class.std::unique_ptr.18", align 8
  %46 = alloca %"class.AST::ExprNodeP", align 8
  %47 = alloca %class.Token, align 8
  %48 = alloca %class.Token, align 8
  %49 = alloca i1, align 1
  %50 = alloca %"class.AST::ExprNodeP", align 8
  %51 = alloca %struct.Ident, align 8
  %52 = alloca %"class.AST::ExprNodeP", align 8
  %53 = alloca i1, align 1
  %54 = alloca %"class.AST::ExprNodeP", align 8
  %55 = alloca %struct.Ident, align 8
  %56 = alloca %"class.AST::ExprNodeP", align 8
  %57 = alloca %struct.Ident, align 8
  %58 = alloca %"class.AST::ExprNodeP", align 8
  %59 = alloca %"class.AST::ExprNodeP", align 8
  %60 = alloca %"class.AST::ExprNodeP", align 8
  %61 = alloca %struct.Ident, align 8
  %62 = alloca %"class.AST::ExprNodeP", align 8
  %63 = alloca %struct.Ident, align 8
  %64 = alloca %class.Token, align 8
  %65 = alloca %"class.AST::ExprNodeP", align 8
  %66 = alloca %class.Token, align 8
  %67 = alloca %"struct.Token::TagTakeIP", align 1
  %68 = alloca %class.InterpolatedFragment, align 8
  %69 = alloca %class.Token, align 8
  %70 = alloca %class.Token, align 8
  %71 = alloca i1, align 1
  %72 = alloca %class.Token, align 8
  %73 = alloca %class.Token, align 8
  %74 = alloca i1, align 1
  %75 = alloca %class.Token, align 8
  %76 = alloca %class.Token, align 8
  %77 = alloca %class.Token, align 8
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %7) #9
  call void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  invoke void @_ZN3AST9ExprNodePC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %78 unwind label %82

78:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #9
  store i8 0, ptr %11, align 1, !tbaa !9
  %79 = load ptr, ptr %6, align 8, !tbaa !5
  %80 = icmp ne ptr %79, null
  br i1 %80, label %86, label %81

81:                                               ; preds = %78
  store ptr %11, ptr %6, align 8, !tbaa !5
  br label %86

82:                                               ; preds = %3
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %9, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %10, align 4
  br label %934

86:                                               ; preds = %81, %78
  call void @llvm.lifetime.start.p0(i64 88, ptr %12) #9
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %12, ptr noundef nonnull align 8 dereferenceable(176) %87)
          to label %88 unwind label %126

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %90 unwind label %130

90:                                               ; preds = %88
  %91 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %89)
          to label %92 unwind label %130

92:                                               ; preds = %90
  %93 = icmp eq i32 %91, 15
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %12) #9
  br i1 %93, label %94, label %312

94:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #9
  %95 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %96 unwind label %135

96:                                               ; preds = %94
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %97 unwind label %135

97:                                               ; preds = %96
  br label %98

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 88, ptr %14) #9
  %99 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %14, ptr noundef nonnull align 8 dereferenceable(176) %99)
          to label %100 unwind label %139

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %14)
          to label %102 unwind label %143

102:                                              ; preds = %100
  %103 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %101)
          to label %104 unwind label %143

104:                                              ; preds = %102
  %105 = icmp ne i32 %103, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %14) #9
  br i1 %105, label %106, label %171

106:                                              ; preds = %104
  br label %107

107:                                              ; preds = %106
  %108 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %109 unwind label %148

109:                                              ; preds = %107
  br i1 %108, label %110, label %152

110:                                              ; preds = %109
  %111 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %111, ptr noundef @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %113 unwind label %148

113:                                              ; preds = %110
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @.str)
          to label %115 unwind label %148

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef @.str.1)
          to label %117 unwind label %148

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef @.str.2)
          to label %119 unwind label %148

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %118, i32 noundef 240)
          to label %121 unwind label %148

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef @_ZSt3decRSt8ios_base)
          to label %123 unwind label %148

123:                                              ; preds = %121
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %125 unwind label %148

125:                                              ; preds = %123
  br label %152

126:                                              ; preds = %86
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %9, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %10, align 4
  br label %134

130:                                              ; preds = %90, %88
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %9, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  br label %134

134:                                              ; preds = %130, %126
  call void @llvm.lifetime.end.p0(i64 88, ptr %12) #9
  br label %933

135:                                              ; preds = %96, %94
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %9, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %10, align 4
  br label %311

139:                                              ; preds = %98
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %9, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %10, align 4
  br label %147

143:                                              ; preds = %102, %100
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %9, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #9
  br label %147

147:                                              ; preds = %143, %139
  call void @llvm.lifetime.end.p0(i64 88, ptr %14) #9
  br label %310

148:                                              ; preds = %304, %285, %264, %239, %231, %223, %215, %189, %123, %121, %119, %117, %115, %113, %110, %107
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %9, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %10, align 4
  br label %310

152:                                              ; preds = %125, %109
  br label %153

153:                                              ; preds = %152
  br label %154

154:                                              ; preds = %153
  store i1 true, ptr %16, align 1
  %155 = call ptr @__cxa_allocate_exception(i64 96) #9
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %15, i32 noundef 33)
          to label %157 unwind label %159

157:                                              ; preds = %154
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %155, ptr noundef nonnull align 8 dereferenceable(176) %156, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef %15)
          to label %158 unwind label %163

158:                                              ; preds = %157
  store i1 false, ptr %16, align 1
  invoke void @__cxa_throw(ptr %155, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %940 unwind label %163

159:                                              ; preds = %154
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %9, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %10, align 4
  br label %167

163:                                              ; preds = %158, %157
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %9, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #9
  br label %167

167:                                              ; preds = %163, %159
  %168 = load i1, ptr %16, align 1
  br i1 %168, label %169, label %170

169:                                              ; preds = %167
  call void @__cxa_free_exception(ptr %155) #9
  br label %170

170:                                              ; preds = %169, %167
  br label %310

171:                                              ; preds = %104
  br label %172

172:                                              ; preds = %171
  br label %173

173:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 88, ptr %17) #9
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %174)
          to label %175 unwind label %180

175:                                              ; preds = %173
  %176 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %17)
          to label %177 unwind label %184

177:                                              ; preds = %175
  %178 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %176)
          to label %179 unwind label %184

179:                                              ; preds = %177
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %17) #9
  switch i32 %178, label %301 [
    i32 98, label %189
    i32 99, label %215
    i32 100, label %223
    i32 25, label %231
    i32 81, label %259
    i32 79, label %280
  ]

180:                                              ; preds = %173
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %9, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %10, align 4
  br label %188

184:                                              ; preds = %177, %175
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %9, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #9
  br label %188

188:                                              ; preds = %184, %180
  call void @llvm.lifetime.end.p0(i64 88, ptr %17) #9
  br label %310

189:                                              ; preds = %179
  %190 = load ptr, ptr %5, align 8, !tbaa !5
  %191 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 624) #11
          to label %192 unwind label %148

192:                                              ; preds = %189
  store i1 true, ptr %20, align 1
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %193 unwind label %198

193:                                              ; preds = %192
  %194 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %19, ptr noundef nonnull align 8 dereferenceable(176) %194)
          to label %195 unwind label %202

195:                                              ; preds = %193
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %191, ptr noundef %18, ptr noundef %19)
          to label %196 unwind label %206

196:                                              ; preds = %195
  store i1 false, ptr %20, 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) %190, ptr noundef %191)
          to label %197 unwind label %206

197:                                              ; preds = %196
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  store i32 1, ptr %21, align 4
  br label %309

198:                                              ; preds = %192
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %9, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %10, align 4
  br label %211

202:                                              ; preds = %193
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  br label %210

206:                                              ; preds = %196, %195
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %9, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br label %210

210:                                              ; preds = %206, %202
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %211

211:                                              ; preds = %210, %198
  %212 = load i1, ptr %20, align 1
  br i1 %212, label %213, label %214

213:                                              ; preds = %211
  call void @_ZdlPvm(ptr noundef %191, i64 noundef 624) #12
  br label %214

214:                                              ; preds = %213, %211
  br label %310

215:                                              ; preds = %179
  %216 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %217 unwind label %148

217:                                              ; preds = %215
  invoke void @_Z15Parse_WhileStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %216, ptr noundef %22)
          to label %218 unwind label %219

218:                                              ; preds = %217
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  store i32 1, ptr %21, align 4
  br label %309

219:                                              ; preds = %217
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %9, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %10, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %310

223:                                              ; preds = %179
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %225 unwind label %148

225:                                              ; preds = %223
  invoke void @_Z13Parse_ForStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %224, ptr noundef %23)
          to label %226 unwind label %227

226:                                              ; preds = %225
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  store i32 1, ptr %21, align 4
  br label %309

227:                                              ; preds = %225
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %9, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %10, align 4
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  br label %310

231:                                              ; preds = %179
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %24, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %233 unwind label %148

233:                                              ; preds = %231
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %232, ptr noundef %24)
          to label %234 unwind label %241

234:                                              ; preds = %233
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %236 unwind label %245

236:                                              ; preds = %234
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %25, ptr noundef nonnull align 8 dereferenceable(176) %235, i32 noundef 0, ptr noundef %26)
          to label %237 unwind label %249

237:                                              ; preds = %236
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %239 unwind label %253

239:                                              ; preds = %237
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %240 unwind label %148

240:                                              ; preds = %239
  store i32 1, ptr %21, align 4
  br label %309

241:                                              ; preds = %233
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %9, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %24) #9
  br label %310

245:                                              ; preds = %234
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %9, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %10, align 4
  br label %258

249:                                              ; preds = %236
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %9, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %10, align 4
  br label %257

253:                                              ; preds = %237
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %9, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %257

257:                                              ; preds = %253, %249
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %258

258:                                              ; preds = %257, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %310

259:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %260 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %261 unwind label %266

261:                                              ; preds = %259
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %27, ptr noundef nonnull align 8 dereferenceable(176) %260, i32 noundef 1, ptr noundef %28)
          to label %262 unwind label %270

262:                                              ; preds = %261
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %264 unwind label %274

264:                                              ; preds = %262
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %265 unwind label %148

265:                                              ; preds = %264
  store i32 1, ptr %21, align 4
  br label %309

266:                                              ; preds = %259
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %9, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %10, align 4
  br label %279

270:                                              ; preds = %261
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %9, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %10, align 4
  br label %278

274:                                              ; preds = %262
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %9, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br label %278

278:                                              ; preds = %274, %270
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  br label %279

279:                                              ; preds = %278, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %310

280:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %281 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %282 unwind label %287

282:                                              ; preds = %280
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %29, ptr noundef nonnull align 8 dereferenceable(176) %281, i32 noundef 2, ptr noundef %30)
          to label %283 unwind label %291

283:                                              ; preds = %282
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %285 unwind label %295

285:                                              ; preds = %283
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %286 unwind label %148

286:                                              ; preds = %285
  store i32 1, ptr %21, align 4
  br label %309

287:                                              ; preds = %280
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %9, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %10, align 4
  br label %300

291:                                              ; preds = %282
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %9, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %10, align 4
  br label %299

295:                                              ; preds = %283
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %9, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %299

299:                                              ; preds = %295, %291
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  br label %300

300:                                              ; preds = %299, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %310

301:                                              ; preds = %179
  %302 = call ptr @__cxa_allocate_exception(i64 96) #9
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %302, ptr noundef nonnull align 8 dereferenceable(176) %303, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %304 unwind label %305

304:                                              ; preds = %301
  invoke void @__cxa_throw(ptr %302, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %940 unwind label %148

305:                                              ; preds = %301
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %9, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %10, align 4
  call void @__cxa_free_exception(ptr %302) #9
  br label %310

309:                                              ; preds = %286, %265, %240, %226, %218, %197
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  br label %932

310:                                              ; preds = %305, %300, %279, %258, %241, %227, %219, %214, %188, %170, %148, %147
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %311

311:                                              ; preds = %310, %135
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  br label %933

312:                                              ; preds = %92
  %313 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %314 unwind label %315

314:                                              ; preds = %312
  switch i32 %313, label %494 [
    i32 14, label %319
    i32 83, label %319
    i32 112, label %319
    i32 34, label %319
    i32 111, label %319
  ]

315:                                              ; preds = %924, %921, %914, %911, %817, %814, %812, %790, %777, %774, %771, %766, %761, %740, %579, %537, %535, %533, %531, %529, %527, %524, %521, %505, %498, %495, %328, %323, %319, %312
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %9, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %10, align 4
  br label %933

319:                                              ; preds = %314, %314, %314, %314, %314
  %320 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %321 unwind label %315

321:                                              ; preds = %319
  %322 = icmp ne i32 %320, 111
  br i1 %322, label %328, label %323

323:                                              ; preds = %321
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %324, i32 noundef 0)
          to label %326 unwind label %315

326:                                              ; preds = %323
  %327 = icmp eq i32 %325, 34
  br i1 %327, label %328, label %493

328:                                              ; preds = %326, %321
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %31, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %330 unwind label %315

330:                                              ; preds = %328
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %329, ptr noundef %31)
          to label %331 unwind label %372

331:                                              ; preds = %330
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #9
  call void @llvm.lifetime.start.p0(i64 240, ptr %32) #9
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind writable sret(%"class.AST::Path") align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %332, i32 noundef 1)
          to label %333 unwind label %376

333:                                              ; preds = %331
  %334 = load ptr, ptr %5, align 8, !tbaa !5
  %335 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %334, i32 noundef 0)
          to label %336 unwind label %380

336:                                              ; preds = %333
  %337 = icmp eq i32 %335, 43
  br i1 %337, label %338, label %463

338:                                              ; preds = %336
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %339, i32 noundef 1)
          to label %341 unwind label %380

341:                                              ; preds = %338
  %342 = icmp eq i32 %340, 25
  br i1 %342, label %343, label %463

343:                                              ; preds = %341
  br label %344

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 88, ptr %33) #9
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %33, ptr noundef nonnull align 8 dereferenceable(176) %345)
          to label %346 unwind label %384

346:                                              ; preds = %344
  %347 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %33)
          to label %348 unwind label %388

348:                                              ; preds = %346
  %349 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %347)
          to label %350 unwind label %388

350:                                              ; preds = %348
  %351 = icmp ne i32 %349, 43
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #9
  br i1 %351, label %352, label %412

352:                                              ; preds = %350
  br label %353

353:                                              ; preds = %352
  %354 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %355 unwind label %380

355:                                              ; preds = %353
  br i1 %354, label %356, label %393

356:                                              ; preds = %355
  %357 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %357, ptr noundef @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %359 unwind label %380

359:                                              ; preds = %356
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef @.str)
          to label %361 unwind label %380

361:                                              ; preds = %359
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %360, ptr noundef @.str.1)
          to label %363 unwind label %380

363:                                              ; preds = %361
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef @.str.2)
          to label %365 unwind label %380

365:                                              ; preds = %363
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %364, i32 noundef 286)
          to label %367 unwind label %380

367:                                              ; preds = %365
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef @_ZSt3decRSt8ios_base)
          to label %369 unwind label %380

369:                                              ; preds = %367
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %371 unwind label %380

371:                                              ; preds = %369
  br label %393

372:                                              ; preds = %330
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %9, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #9
  br label %933

376:                                              ; preds = %331
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %9, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %10, align 4
  br label %492

380:                                              ; preds = %369, %367, %365, %363, %361, %359, %356, %353, %338, %333
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %9, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %10, align 4
  br label %491

384:                                              ; preds = %344
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %9, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %10, align 4
  br label %392

388:                                              ; preds = %348, %346
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %9, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #9
  br label %392

392:                                              ; preds = %388, %384
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #9
  br label %491

393:                                              ; preds = %371, %355
  br label %394

394:                                              ; preds = %393
  br label %395

395:                                              ; preds = %394
  store i1 true, ptr %35, align 1
  %396 = call ptr @__cxa_allocate_exception(i64 96) #9
  %397 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %34, i32 noundef 43)
          to label %398 unwind label %400

398:                                              ; preds = %395
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %396, ptr noundef nonnull align 8 dereferenceable(176) %397, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef %34)
          to label %399 unwind label %404

399:                                              ; preds = %398
  store i1 false, ptr %35, align 1
  invoke void @__cxa_throw(ptr %396, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %940 unwind label %404

400:                                              ; preds = %395
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %9, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %10, align 4
  br label %408

404:                                              ; preds = %399, %398
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %9, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %34) #9
  br label %408

408:                                              ; preds = %404, %400
  %409 = load i1, ptr %35, align 1
  br i1 %409, label %410, label %411

410:                                              ; preds = %408
  call void @__cxa_free_exception(ptr %396) #9
  br label %411

411:                                              ; preds = %410, %408
  br label %491

412:                                              ; preds = %350
  br label %413

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %37, ptr noundef nonnull align 8 dereferenceable(240) %32)
          to label %416 unwind label %437

416:                                              ; preds = %414
  invoke void @_Z15Parse_ExprMacroR11TokenStreamN3AST4PathE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %415, ptr noundef %37)
          to label %417 unwind label %441

417:                                              ; preds = %416
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %37) #9
  %418 = load ptr, ptr %5, align 8, !tbaa !5
  %419 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %418, i32 noundef 0)
          to label %420 unwind label %445

420:                                              ; preds = %417
  %421 = icmp eq i32 %419, 46
  br i1 %421, label %427, label %422

422:                                              ; preds = %420
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %423, i32 noundef 0)
          to label %425 unwind label %445

425:                                              ; preds = %422
  %426 = icmp eq i32 %424, 69
  br i1 %426, label %427, label %458

427:                                              ; preds = %425, %420
  %428 = load ptr, ptr %5, align 8, !tbaa !5
  %429 = invoke noundef ptr @_ZN3AST9ExprNodeP7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %430 unwind label %445

430:                                              ; preds = %427
  invoke void @_ZN20InterpolatedFragmentC1ENS_4TypeEPN3AST8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(16) %40, i32 noundef 4, ptr noundef %429)
          to label %431 unwind label %445

431:                                              ; preds = %430
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %38, ptr noundef %40)
          to label %432 unwind label %449

432:                                              ; preds = %431
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %428, ptr noundef %38)
          to label %433 unwind label %453

433:                                              ; preds = %432
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  %434 = load ptr, ptr %5, align 8, !tbaa !5
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z24Parse_ExprBlockLine_StmtR11TokenStreamRb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %434, ptr noundef nonnull align 1 dereferenceable(1) %435)
          to label %436 unwind label %445

436:                                              ; preds = %433
  store i32 1, ptr %21, align 4
  br label %460

437:                                              ; preds = %414
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %9, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %10, align 4
  br label %462

441:                                              ; preds = %416
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %9, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %10, align 4
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %37) #9
  br label %462

445:                                              ; preds = %458, %433, %430, %427, %422, %417
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %9, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %10, align 4
  br label %461

449:                                              ; preds = %431
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %9, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %10, align 4
  br label %457

453:                                              ; preds = %432
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %9, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #9
  br label %457

457:                                              ; preds = %453, %449
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  br label %461

458:                                              ; preds = %425
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %459 unwind label %445

459:                                              ; preds = %458
  store i32 1, ptr %21, align 4
  br label %460

460:                                              ; preds = %459, %436
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %469

461:                                              ; preds = %457, %445
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %462

462:                                              ; preds = %461, %441, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %491

463:                                              ; preds = %341, %336
  call void @llvm.lifetime.start.p0(i64 88, ptr %41) #9
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %44, ptr noundef nonnull align 8 dereferenceable(240) %32)
          to label %464 unwind label %472

464:                                              ; preds = %463
  invoke void @_ZN20InterpolatedFragmentC1EN3AST4PathE(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef %44)
          to label %465 unwind label %476

465:                                              ; preds = %464
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %41, ptr noundef %43)
          to label %466 unwind label %480

466:                                              ; preds = %465
  %467 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %41)
          to label %468 unwind label %484

468:                                              ; preds = %466
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %44) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %41) #9
  store i32 0, ptr %21, align 4
  br label %469

469:                                              ; preds = %468, %460
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #9
  call void @llvm.lifetime.end.p0(i64 240, ptr %32) #9
  %470 = load i32, ptr %21, align 4
  switch i32 %470, label %932 [
    i32 0, label %471
  ]

471:                                              ; preds = %469
  br label %493

472:                                              ; preds = %463
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %9, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %10, align 4
  br label %490

476:                                              ; preds = %464
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %9, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %10, align 4
  br label %489

480:                                              ; preds = %465
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %9, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %10, align 4
  br label %488

484:                                              ; preds = %466
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %9, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #9
  br label %488

488:                                              ; preds = %484, %480
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %489

489:                                              ; preds = %488, %476
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %44) #9
  br label %490

490:                                              ; preds = %489, %472
  call void @llvm.lifetime.end.p0(i64 88, ptr %41) #9
  br label %491

491:                                              ; preds = %490, %462, %411, %392, %380
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %32) #9
  br label %492

492:                                              ; preds = %491, %376
  call void @llvm.lifetime.end.p0(i64 240, ptr %32) #9
  br label %933

493:                                              ; preds = %471, %326
  br label %495

494:                                              ; preds = %314
  br label %495

495:                                              ; preds = %494, %493
  %496 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %497 unwind label %315

497:                                              ; preds = %495
  switch i32 %496, label %921 [
    i32 10, label %498
    i32 32, label %505
    i32 94, label %507
    i32 98, label %581
    i32 99, label %593
    i32 100, label %642
    i32 96, label %664
    i32 95, label %680
    i32 81, label %696
    i32 79, label %718
    i32 25, label %740
    i32 102, label %814
    i32 105, label %814
    i32 106, label %814
    i32 103, label %814
    i32 104, label %814
    i32 8, label %911
  ]

498:                                              ; preds = %497
  invoke void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.18") align 8 %45, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %499 unwind label %315

499:                                              ; preds = %498
  invoke void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %45)
          to label %500 unwind label %501

500:                                              ; preds = %499
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  store i32 1, ptr %21, align 4
  br label %932

501:                                              ; preds = %499
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %9, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %10, align 4
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %933

505:                                              ; preds = %497
  invoke void @_ZN3AST9ExprNodePC2EPNS_8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef null)
          to label %506 unwind label %315

506:                                              ; preds = %505
  store i32 1, ptr %21, align 4
  br label %932

507:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z14Parse_Stmt_LetR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %46, ptr noundef nonnull align 8 dereferenceable(176) %508)
          to label %509 unwind label %540

509:                                              ; preds = %507
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %511 unwind label %544

511:                                              ; preds = %509
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %512

512:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 88, ptr %47) #9
  %513 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %47, ptr noundef nonnull align 8 dereferenceable(176) %513)
          to label %514 unwind label %549

514:                                              ; preds = %512
  %515 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %47)
          to label %516 unwind label %553

516:                                              ; preds = %514
  %517 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %515)
          to label %518 unwind label %553

518:                                              ; preds = %516
  %519 = icmp ne i32 %517, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %47) #9
  br i1 %519, label %520, label %577

520:                                              ; preds = %518
  br label %521

521:                                              ; preds = %520
  %522 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %523 unwind label %315

523:                                              ; preds = %521
  br i1 %522, label %524, label %558

524:                                              ; preds = %523
  %525 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %525, ptr noundef @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %527 unwind label %315

527:                                              ; preds = %524
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef @.str)
          to label %529 unwind label %315

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 @.str.1)
          to label %531 unwind label %315

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef @.str.2)
          to label %533 unwind label %315

533:                                              ; preds = %531
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %532, i32 noundef 313)
          to label %535 unwind label %315

535:                                              ; preds = %533
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef @_ZSt3decRSt8ios_base)
          to label %537 unwind label %315

537:                                              ; preds = %535
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %536, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %539 unwind label %315

539:                                              ; preds = %537
  br label %558

540:                                              ; preds = %507
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %9, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %10, align 4
  br label %548

544:                                              ; preds = %509
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %9, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %548

548:                                              ; preds = %544, %540
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %933

549:                                              ; preds = %512
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %9, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %10, align 4
  br label %557

553:                                              ; preds = %516, %514
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %9, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #9
  br label %557

557:                                              ; preds = %553, %549
  call void @llvm.lifetime.end.p0(i64 88, ptr %47) #9
  br label %933

558:                                              ; preds = %539, %523
  br label %559

559:                                              ; preds = %558
  br label %560

560:                                              ; preds = %559
  store i1 true, ptr %49, align 1
  %561 = call ptr @__cxa_allocate_exception(i64 96) #9
  %562 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %48, i32 noundef 32)
          to label %563 unwind label %565

563:                                              ; preds = %560
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %561, ptr noundef nonnull align 8 dereferenceable(176) %562, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef %48)
          to label %564 unwind label %569

564:                                              ; preds = %563
  store i1 false, ptr %49, align 1
  invoke void @__cxa_throw(ptr %561, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %940 unwind label %569

565:                                              ; preds = %560
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %9, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %10, align 4
  br label %573

569:                                              ; preds = %564, %563
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %9, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #9
  br label %573

573:                                              ; preds = %569, %565
  %574 = load i1, ptr %49, align 1
  br i1 %574, label %575, label %576

575:                                              ; preds = %573
  call void @__cxa_free_exception(ptr %561) #9
  br label %576

576:                                              ; preds = %575, %573
  br label %933

577:                                              ; preds = %518
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %580 unwind label %315

580:                                              ; preds = %579
  store i32 1, ptr %21, align 4
  br label %932

581:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %582 = load ptr, ptr %5, align 8, !tbaa !5
  %583 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 624) #11
          to label %584 unwind label %599

584:                                              ; preds = %581
  store i1 true, ptr %53, align 1
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef @.str.9)
          to label %585 unwind label %603

585:                                              ; preds = %584
  %586 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %52, ptr noundef nonnull align 8 dereferenceable(176) %586)
          to label %587 unwind label %607

587:                                              ; preds = %585
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %583, ptr noundef %51, ptr noundef %52)
          to label %588 unwind label %611

588:                                              ; preds = %587
  store i1 false, ptr %53, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %50, ptr noundef nonnull align 8 dereferenceable(176) %582, ptr noundef %583)
          to label %589 unwind label %611

589:                                              ; preds = %588
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %591 unwind label %615

591:                                              ; preds = %589
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br i1 false, label %592, label %640

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %594 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef @.str.9)
          to label %595 unwind label %626

595:                                              ; preds = %593
  invoke void @_Z15Parse_WhileStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %54, ptr noundef nonnull align 8 dereferenceable(176) %594, ptr noundef %55)
          to label %596 unwind label %630

596:                                              ; preds = %595
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %598 unwind label %634

598:                                              ; preds = %596
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %640

599:                                              ; preds = %581
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %9, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %10, align 4
  br label %625

603:                                              ; preds = %584
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %9, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %10, align 4
  br label %621

607:                                              ; preds = %585
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %9, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %10, align 4
  br label %620

611:                                              ; preds = %588, %587
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %9, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %10, align 4
  br label %619

615:                                              ; preds = %589
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %9, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br label %619

619:                                              ; preds = %615, %611
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %620

620:                                              ; preds = %619, %607
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  br label %621

621:                                              ; preds = %620, %603
  %622 = load i1, ptr %53, align 1
  br i1 %622, label %623, label %624

623:                                              ; preds = %621
  call void @_ZdlPvm(ptr noundef %583, i64 noundef 624) #12
  br label %624

624:                                              ; preds = %623, %621
  br label %625

625:                                              ; preds = %624, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %933

626:                                              ; preds = %593
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %9, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %10, align 4
  br label %639

630:                                              ; preds = %595
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %9, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %10, align 4
  br label %638

634:                                              ; preds = %596
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %9, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  br label %638

638:                                              ; preds = %634, %630
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  br label %639

639:                                              ; preds = %638, %626
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %933

640:                                              ; preds = %598, %591
  br i1 false, label %641, label %662

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %643 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef @.str.9)
          to label %644 unwind label %648

644:                                              ; preds = %642
  invoke void @_Z13Parse_ForStmtR11TokenStream5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %56, ptr noundef nonnull align 8 dereferenceable(176) %643, ptr noundef %57)
          to label %645 unwind label %652

645:                                              ; preds = %644
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %647 unwind label %656

647:                                              ; preds = %645
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %662

648:                                              ; preds = %642
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %9, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %10, align 4
  br label %661

652:                                              ; preds = %644
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %9, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %10, align 4
  br label %660

656:                                              ; preds = %645
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %9, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %660

660:                                              ; preds = %656, %652
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  br label %661

661:                                              ; preds = %660, %648
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %933

662:                                              ; preds = %647, %640
  br i1 false, label %663, label %678

663:                                              ; preds = %662
  br label %664

664:                                              ; preds = %663, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  %665 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z12Parse_IfStmtR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %58, ptr noundef nonnull align 8 dereferenceable(176) %665)
          to label %666 unwind label %669

666:                                              ; preds = %664
  %667 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %668 unwind label %673

668:                                              ; preds = %666
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  br label %678

669:                                              ; preds = %664
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %9, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %10, align 4
  br label %677

673:                                              ; preds = %666
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %9, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %677

677:                                              ; preds = %673, %669
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  br label %933

678:                                              ; preds = %668, %662
  br i1 false, label %679, label %694

679:                                              ; preds = %678
  br label %680

680:                                              ; preds = %679, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %681 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z16Parse_Expr_MatchR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %59, ptr noundef nonnull align 8 dereferenceable(176) %681)
          to label %682 unwind label %685

682:                                              ; preds = %680
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %684 unwind label %689

684:                                              ; preds = %682
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %694

685:                                              ; preds = %680
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %9, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %10, align 4
  br label %693

689:                                              ; preds = %682
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %9, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br label %693

693:                                              ; preds = %689, %685
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %933

694:                                              ; preds = %684, %678
  br i1 false, label %695, label %716

695:                                              ; preds = %694
  br label %696

696:                                              ; preds = %695, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  %697 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef @.str.9)
          to label %698 unwind label %702

698:                                              ; preds = %696
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %60, ptr noundef nonnull align 8 dereferenceable(176) %697, i32 noundef 1, ptr noundef %61)
          to label %699 unwind label %706

699:                                              ; preds = %698
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %701 unwind label %710

701:                                              ; preds = %699
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  br label %716

702:                                              ; preds = %696
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %9, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %10, align 4
  br label %715

706:                                              ; preds = %698
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %9, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %10, align 4
  br label %714

710:                                              ; preds = %699
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %9, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  br label %714

714:                                              ; preds = %710, %706
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #9
  br label %715

715:                                              ; preds = %714, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  br label %933

716:                                              ; preds = %701, %694
  br i1 false, label %717, label %738

717:                                              ; preds = %716
  br label %718

718:                                              ; preds = %717, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %719 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef @.str.9)
          to label %720 unwind label %724

720:                                              ; preds = %718
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %62, ptr noundef nonnull align 8 dereferenceable(176) %719, i32 noundef 2, ptr noundef %63)
          to label %721 unwind label %728

721:                                              ; preds = %720
  %722 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %723 unwind label %732

723:                                              ; preds = %721
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  br label %738

724:                                              ; preds = %718
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %9, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %10, align 4
  br label %737

728:                                              ; preds = %720
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %9, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %10, align 4
  br label %736

732:                                              ; preds = %721
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %9, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %736

736:                                              ; preds = %732, %728
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  br label %737

737:                                              ; preds = %736, %724
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  br label %933

738:                                              ; preds = %723, %716
  br i1 false, label %739, label %761

739:                                              ; preds = %738
  br label %740

740:                                              ; preds = %739, %497
  %741 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %64, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %742 unwind label %315

742:                                              ; preds = %740
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %741, ptr noundef %64)
          to label %743 unwind label %748

743:                                              ; preds = %742
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %64) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %744 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %65, ptr noundef nonnull align 8 dereferenceable(176) %744)
          to label %745 unwind label %752

745:                                              ; preds = %743
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %747 unwind label %756

747:                                              ; preds = %745
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %761

748:                                              ; preds = %742
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %9, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %64) #9
  br label %933

752:                                              ; preds = %743
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %9, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %10, align 4
  br label %760

756:                                              ; preds = %745
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %9, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %10, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  br label %760

760:                                              ; preds = %756, %752
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %933

761:                                              ; preds = %747, %738
  %762 = load ptr, ptr %5, align 8, !tbaa !5
  %763 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %762, i32 noundef 0)
          to label %764 unwind label %315

764:                                              ; preds = %761
  %765 = icmp eq i32 %763, 46
  br i1 %765, label %771, label %766

766:                                              ; preds = %764
  %767 = load ptr, ptr %5, align 8, !tbaa !5
  %768 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %767, i32 noundef 0)
          to label %769 unwind label %315

769:                                              ; preds = %766
  %770 = icmp eq i32 %768, 69
  br i1 %770, label %771, label %790

771:                                              ; preds = %769, %764
  %772 = load ptr, ptr %5, align 8, !tbaa !5
  %773 = invoke noundef ptr @_ZN3AST9ExprNodeP7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %774 unwind label %315

774:                                              ; preds = %771
  invoke void @_ZN20InterpolatedFragmentC1ENS_4TypeEPN3AST8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(16) %68, i32 noundef 4, ptr noundef %773)
          to label %775 unwind label %315

775:                                              ; preds = %774
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %66, ptr noundef %68)
          to label %776 unwind label %781

776:                                              ; preds = %775
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %772, ptr noundef %66)
          to label %777 unwind label %785

777:                                              ; preds = %776
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %66) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  %778 = load ptr, ptr %5, align 8, !tbaa !5
  %779 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z24Parse_ExprBlockLine_StmtR11TokenStreamRb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %778, ptr noundef nonnull align 1 dereferenceable(1) %779)
          to label %780 unwind label %315

780:                                              ; preds = %777
  store i32 1, ptr %21, align 4
  br label %932

781:                                              ; preds = %775
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %9, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %10, align 4
  br label %789

785:                                              ; preds = %776
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %9, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %66) #9
  br label %789

789:                                              ; preds = %785, %781
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  br label %933

790:                                              ; preds = %769
  %791 = load ptr, ptr %5, align 8, !tbaa !5
  %792 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %791, i32 noundef 0)
          to label %793 unwind label %315

793:                                              ; preds = %790
  %794 = icmp eq i32 %792, 32
  br i1 %794, label %795, label %812

795:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 88, ptr %69) #9
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %69, ptr noundef nonnull align 8 dereferenceable(176) %796)
          to label %797 unwind label %803

797:                                              ; preds = %795
  %798 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %69)
          to label %799 unwind label %807

799:                                              ; preds = %797
  %800 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %798)
          to label %801 unwind label %807

801:                                              ; preds = %799
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %69) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %69) #9
  %802 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 1, ptr %802, align 1, !tbaa !9
  br label %812

803:                                              ; preds = %795
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %9, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %10, align 4
  br label %811

807:                                              ; preds = %799, %797
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %9, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %69) #9
  br label %811

811:                                              ; preds = %807, %803
  call void @llvm.lifetime.end.p0(i64 88, ptr %69) #9
  br label %933

812:                                              ; preds = %801, %793
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %813 unwind label %315

813:                                              ; preds = %812
  store i32 1, ptr %21, align 4
  br label %932

814:                                              ; preds = %497, %497, %497, %497, %497
  %815 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %70, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %816 unwind label %315

816:                                              ; preds = %814
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %815, ptr noundef %70)
          to label %817 unwind label %825

817:                                              ; preds = %816
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #9
  store i1 false, ptr %71, align 1
  %818 = load ptr, ptr %5, 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) %818)
          to label %819 unwind label %315

819:                                              ; preds = %817
  %820 = load ptr, ptr %5, align 8, !tbaa !5
  %821 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %820, i32 noundef 0)
          to label %822 unwind label %829

822:                                              ; preds = %819
  %823 = icmp eq i32 %821, 1
  br i1 %823, label %824, label %833

824:                                              ; preds = %822
  br label %906

825:                                              ; preds = %816
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %9, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #9
  br label %933

829:                                              ; preds = %896, %863, %861, %859, %857, %855, %853, %850, %847, %842, %819
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %9, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %10, align 4
  br label %910

833:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 88, ptr %72) #9
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %72, ptr noundef nonnull align 8 dereferenceable(176) %834)
          to label %835 unwind label %866

835:                                              ; preds = %833
  %836 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef nonnull align 8 dereferenceable(88) %72)
          to label %837 unwind label %870

837:                                              ; preds = %835
  %838 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %836)
          to label %839 unwind label %870

839:                                              ; preds = %837
  %840 = icmp ne i32 %838, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %72) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %72) #9
  br i1 %840, label %841, label %904

841:                                              ; preds = %839
  br label %842

842:                                              ; preds = %841
  %843 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %844 unwind label %829

844:                                              ; preds = %842
  %845 = icmp ne i32 %843, 26
  br i1 %845, label %846, label %894

846:                                              ; preds = %844
  br label %847

847:                                              ; preds = %846
  %848 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %849 unwind label %829

849:                                              ; preds = %847
  br i1 %848, label %850, label %875

850:                                              ; preds = %849
  %851 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %851, ptr noundef @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %853 unwind label %829

853:                                              ; preds = %850
  %854 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef @.str.10)
          to label %855 unwind label %829

855:                                              ; preds = %853
  %856 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %854, ptr noundef @.str.1)
          to label %857 unwind label %829

857:                                              ; preds = %855
  %858 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %856, ptr noundef @.str.2)
          to label %859 unwind label %829

859:                                              ; preds = %857
  %860 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %858, i32 noundef 368)
          to label %861 unwind label %829

861:                                              ; preds = %859
  %862 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %860, ptr noundef @_ZSt3decRSt8ios_base)
          to label %863 unwind label %829

863:                                              ; preds = %861
  %864 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %862, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %865 unwind label %829

865:                                              ; preds = %863
  br label %875

866:                                              ; preds = %833
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %9, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %10, align 4
  br label %874

870:                                              ; preds = %837, %835
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %9, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %72) #9
  br label %874

874:                                              ; preds = %870, %866
  call void @llvm.lifetime.end.p0(i64 88, ptr %72) #9
  br label %910

875:                                              ; preds = %865, %849
  br label %876

876:                                              ; preds = %875
  br label %877

877:                                              ; preds = %876
  store i1 true, ptr %74, align 1
  %878 = call ptr @__cxa_allocate_exception(i64 96) #9
  %879 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %73, i32 noundef 26)
          to label %880 unwind label %882

880:                                              ; preds = %877
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %878, ptr noundef nonnull align 8 dereferenceable(176) %879, ptr noundef nonnull align 8 dereferenceable(88) %7, ptr noundef %73)
          to label %881 unwind label %886

881:                                              ; preds = %880
  store i1 false, ptr %74, align 1
  invoke void @__cxa_throw(ptr %878, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %940 unwind label %886

882:                                              ; preds = %877
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %9, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %10, align 4
  br label %890

886:                                              ; preds = %881, %880
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %9, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #9
  br label %890

890:                                              ; preds = %886, %882
  %891 = load i1, ptr %74, align 1
  br i1 %891, label %892, label %893

892:                                              ; preds = %890
  call void @__cxa_free_exception(ptr %878) #9
  br label %893

893:                                              ; preds = %892, %890
  br label %910

894:                                              ; preds = %844
  br label %895

895:                                              ; preds = %894
  br label %896

896:                                              ; preds = %895
  %897 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %75, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %898 unwind label %829

898:                                              ; preds = %896
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %897, ptr noundef %75)
          to label %899 unwind label %900

899:                                              ; preds = %898
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %75) #9
  br label %905

900:                                              ; preds = %898
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %9, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %75) #9
  br label %910

904:                                              ; preds = %839
  br label %905

905:                                              ; preds = %904, %899
  br label %906

906:                                              ; preds = %905, %824
  store i1 true, ptr %71, align 1
  store i32 1, ptr %21, align 4
  %907 = load i1, ptr %71, align 1
  br i1 %907, label %909, label %908

908:                                              ; preds = %906
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  br label %909

909:                                              ; preds = %908, %906
  br label %932

910:                                              ; preds = %900, %893, %874, %829
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  br label %933

911:                                              ; preds = %497
  %912 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %76, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %913 unwind label %315

913:                                              ; preds = %911
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %912, ptr noundef %76)
          to label %914 unwind label %917

914:                                              ; preds = %913
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #9
  %915 = load ptr, ptr %5, 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) %915)
          to label %916 unwind label %315

916:                                              ; preds = %914
  store i32 1, ptr %21, align 4
  br label %932

917:                                              ; preds = %913
  %918 = landingpad { ptr, i32 }
          cleanup
  %919 = extractvalue { ptr, i32 } %918, 0
  store ptr %919, ptr %9, align 8
  %920 = extractvalue { ptr, i32 } %918, 1
  store i32 %920, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %76) #9
  br label %933

921:                                              ; preds = %497
  %922 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %77, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %923 unwind label %315

923:                                              ; preds = %921
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %922, ptr noundef %77)
          to label %924 unwind label %928

924:                                              ; preds = %923
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %77) #9
  %925 = load ptr, ptr %5, align 8, !tbaa !5
  %926 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z24Parse_ExprBlockLine_StmtR11TokenStreamRb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %925, ptr noundef nonnull align 1 dereferenceable(1) %926)
          to label %927 unwind label %315

927:                                              ; preds = %924
  store i32 1, ptr %21, align 4
  br label %932

928:                                              ; preds = %923
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %9, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %10, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %77) #9
  br label %933

932:                                              ; preds = %927, %916, %909, %813, %780, %580, %506, %500, %469, %309
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %7) #9
  ret void

933:                                              ; preds = %928, %917, %910, %825, %811, %789, %760, %748, %737, %715, %693, %677, %661, %639, %625, %576, %557, %548, %501, %492, %372, %315, %311, %134
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br label %934

934:                                              ; preds = %933, %82
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %7) #9
  br label %935

935:                                              ; preds = %934
  %936 = load ptr, ptr %9, align 8
  %937 = load i32, ptr %10, align 4
  %938 = insertvalue { ptr, i32 } poison, ptr %936, 0
  %939 = insertvalue { ptr, i32 } %938, i32 %937, 1
  resume { ptr, i32 } %939

940:                                              ; preds = %881, %564, %399, %304, %158
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14Parse_Stmt_LetR11TokenStream(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 @_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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}


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

%"class.AST::ExprNodeP" = type { ptr }
%class.Token = type { ptr, i32, %"class.Token::Data", %class.Position, %"class.Ident::Hygiene" }
%"class.Token::Data" = type { i32, %"union.Token::Data::DataUnion" }
%"union.Token::Data::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.Position = type { %struct.Span, %class.RcString, i32, i32 }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.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 }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"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.InterpolatedFragment = type { i32, ptr }

@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
@__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb = external hidden unnamed_addr constant [20 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [11 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

; 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 nounwind uwtable
declare dso_local void @_ZN3AST9ExprNodePC2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z19Parse_ExprBlockLineR11TokenStreamPb(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef %2) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca %class.Token, align 8
  %5 = alloca %"class.AST::ExprNodeP", align 8
  %6 = alloca i8, align 1
  %7 = alloca %class.Token, align 8
  %8 = alloca %struct.Ident, align 8
  %9 = alloca %class.Token, align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca %class.Token, align 8
  %12 = alloca %struct.Ident, align 8
  %13 = alloca %"class.AST::ExprNodeP", align 8
  %14 = alloca %struct.Ident, align 8
  %15 = alloca %struct.Ident, align 8
  %16 = alloca %class.Token, align 8
  %17 = alloca %"class.AST::ExprNodeP", align 8
  %18 = alloca %struct.Ident, align 8
  %19 = alloca %"class.AST::ExprNodeP", align 8
  %20 = alloca %struct.Ident, align 8
  %21 = alloca %"class.AST::ExprNodeP", align 8
  %22 = alloca %struct.Ident, align 8
  %23 = alloca %class.Token, align 8
  %24 = alloca %"class.AST::Path", align 8
  %25 = alloca %class.Token, align 8
  %26 = alloca %class.Token, align 8
  %27 = alloca %"class.AST::ExprNodeP", align 8
  %28 = alloca %"class.AST::Path", align 8
  %29 = alloca %class.Token, align 8
  %30 = alloca %class.InterpolatedFragment, align 8
  %31 = alloca %class.Token, align 8
  %32 = alloca %class.InterpolatedFragment, align 8
  %33 = alloca %"class.AST::Path", align 8
  %34 = alloca %"class.std::unique_ptr.18", align 8
  %35 = alloca %"class.AST::ExprNodeP", align 8
  %36 = alloca %class.Token, align 8
  %37 = alloca %class.Token, align 8
  %38 = alloca %"class.AST::ExprNodeP", align 8
  %39 = alloca %struct.Ident, align 8
  %40 = alloca %"class.AST::ExprNodeP", align 8
  %41 = alloca %"class.AST::ExprNodeP", align 8
  %42 = alloca %struct.Ident, align 8
  %43 = alloca %"class.AST::ExprNodeP", align 8
  %44 = alloca %struct.Ident, align 8
  %45 = alloca %"class.AST::ExprNodeP", align 8
  %46 = alloca %"class.AST::ExprNodeP", align 8
  %47 = alloca %"class.AST::ExprNodeP", align 8
  %48 = alloca %struct.Ident, align 8
  %49 = alloca %"class.AST::ExprNodeP", align 8
  %50 = alloca %struct.Ident, align 8
  %51 = alloca %class.Token, align 8
  %52 = alloca %"class.AST::ExprNodeP", align 8
  %53 = alloca %class.Token, align 8
  %54 = alloca %class.InterpolatedFragment, align 8
  %55 = alloca %class.Token, align 8
  %56 = alloca %class.Token, align 8
  %57 = alloca %class.Token, align 8
  %58 = alloca %class.Token, align 8
  %59 = alloca %class.Token, align 8
  %60 = alloca %class.Token, align 8
  %61 = alloca %class.Token, align 8
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %4) #9
  call void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  call void @_ZN3AST9ExprNodePC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #9
  store i8 0, ptr %6, align 1, !tbaa !5
  %.not = icmp eq ptr %2, null
  %spec.store.select = select i1 %.not, ptr %6, ptr %2
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %7) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %7, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %62 unwind label %93

62:                                               ; preds = %3
  %63 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %7)
          to label %64 unwind label %95

64:                                               ; preds = %62
  %65 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %63)
  %66 = icmp eq i32 %65, 15
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %7) #9
  br i1 %66, label %67, label %187

67:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  %68 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %69 unwind label %98

69:                                               ; preds = %67
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %68)
          to label %70 unwind label %98

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %9) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %9, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %71 unwind label %100

71:                                               ; preds = %70
  %72 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %9)
          to label %73 unwind label %102

73:                                               ; preds = %71
  %74 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %72)
  %.not168 = icmp eq i32 %74, 33
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #9
  br i1 %.not168, label %116, label %75

75:                                               ; preds = %73
  %76 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %77 unwind label %105

77:                                               ; preds = %75
  br i1 %76, label %78, label %107

78:                                               ; preds = %77
  %79 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %79, ptr noundef nonnull @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %81 unwind label %105

81:                                               ; preds = %78
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @.str)
          to label %83 unwind label %105

83:                                               ; preds = %81
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull @.str.1)
          to label %85 unwind label %105

85:                                               ; preds = %83
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull @.str.2)
          to label %87 unwind label %105

87:                                               ; preds = %85
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %86, i32 noundef 240)
          to label %89 unwind label %105

89:                                               ; preds = %87
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %91 unwind label %105

91:                                               ; preds = %89
  %92 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %107 unwind label %105

93:                                               ; preds = %3
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %97

95:                                               ; preds = %62
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %7) #9
  br label %97

97:                                               ; preds = %95, %93
  %.pn = phi { ptr, i32 } [ %96, %95 ], [ %94, %93 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %7) #9
  br label %520

98:                                               ; preds = %69, %67
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %186

100:                                              ; preds = %70
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %104

102:                                              ; preds = %71
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #9
  br label %104

104:                                              ; preds = %102, %100
  %.pn166 = phi { ptr, i32 } [ %103, %102 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %9) #9
  br label %185

105:                                              ; preds = %181, %148, %143, %138, %126, %91, %89, %87, %85, %83, %81, %78, %75
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %185

107:                                              ; preds = %91, %77
  %108 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %10, i32 noundef 33)
          to label %109 unwind label %.thread

109:                                              ; preds = %107
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %108, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %10)
          to label %111 unwind label %.thread188

.thread188:                                       ; preds = %109
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #9
  br label %115

111:                                              ; preds = %109
  invoke void @__cxa_throw(ptr nonnull %108, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %521 unwind label %113

.thread:                                          ; preds = %107
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %115

113:                                              ; preds = %111
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #9
  br label %185

115:                                              ; preds = %.thread188, %.thread
  %.pn180187 = phi { ptr, i32 } [ %112, %.thread ], [ %110, %.thread188 ]
  call void @__cxa_free_exception(ptr %108) #9
  br label %185

116:                                              ; preds = %73
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %11) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %11, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %117 unwind label %121

117:                                              ; preds = %116
  %118 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %11)
          to label %119 unwind label %123

119:                                              ; preds = %117
  %120 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %118)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %11) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %11) #9
  switch i32 %120, label %179 [
    i32 98, label %126
    i32 99, label %138
    i32 100, label %143
    i32 25, label %148
    i32 81, label %161
    i32 79, label %170
  ]

121:                                              ; preds = %116
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %117
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %11) #9
  br label %125

125:                                              ; preds = %123, %121
  %.pn169 = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %11) #9
  br label %185

126:                                              ; preds = %119
  %127 = invoke noalias noundef nonnull dereferenceable(624) ptr @_Znwm(i64 noundef 624) #11
          to label %128 unwind label %105

128:                                              ; preds = %126
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %129 unwind label %.thread190

129:                                              ; preds = %128
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %130 unwind label %.thread194

130:                                              ; preds = %129
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %127, ptr noundef nonnull %12, ptr noundef nonnull %13)
          to label %131 unwind label %135

131:                                              ; preds = %130
  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 %127)
          to label %132 unwind label %135

132:                                              ; preds = %131
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br label %184

.thread190:                                       ; preds = %128
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %137

.thread194:                                       ; preds = %129
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br label %137

135:                                              ; preds = %130, %131
  %.076 = phi i1 [ false, %131 ], [ true, %130 ]
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  br i1 %.076, label %137, label %185

137:                                              ; preds = %.thread194, %.thread190, %135
  %.pn177.pn193 = phi { ptr, i32 } [ %133, %.thread190 ], [ %136, %135 ], [ %134, %.thread194 ]
  call void @_ZdlPvm(ptr noundef nonnull %127, i64 noundef 624) #12
  br label %185

138:                                              ; preds = %119
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %139 unwind label %105

139:                                              ; preds = %138
  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 %14)
          to label %140 unwind label %141

140:                                              ; preds = %139
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %184

141:                                              ; preds = %139
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %185

143:                                              ; preds = %119
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %144 unwind label %105

144:                                              ; preds = %143
  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 %15)
          to label %145 unwind label %146

145:                                              ; preds = %144
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %184

146:                                              ; preds = %144
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %185

148:                                              ; preds = %119
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %16, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %149 unwind label %105

149:                                              ; preds = %148
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %16)
          to label %150 unwind label %154

150:                                              ; preds = %149
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %151 unwind label %156

151:                                              ; preds = %150
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %17, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0, ptr noundef nonnull %18)
          to label %152 unwind label %158

152:                                              ; preds = %151
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %17)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %184

154:                                              ; preds = %149
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %16) #9
  br label %185

156:                                              ; preds = %150
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %160

158:                                              ; preds = %151
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %160

160:                                              ; preds = %158, %156
  %.pn175 = phi { ptr, i32 } [ %159, %158 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %185

161:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %162 unwind label %165

162:                                              ; preds = %161
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %19, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1, ptr noundef nonnull %20)
          to label %163 unwind label %167

163:                                              ; preds = %162
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %184

165:                                              ; preds = %161
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %169

167:                                              ; preds = %162
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %169

169:                                              ; preds = %167, %165
  %.pn173 = phi { ptr, i32 } [ %168, %167 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %185

170:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  invoke void @_ZN5IdentC2ERKS_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %171 unwind label %174

171:                                              ; preds = %170
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %21, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 2, ptr noundef nonnull %22)
          to label %172 unwind label %176

172:                                              ; preds = %171
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %184

174:                                              ; preds = %170
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %178

176:                                              ; preds = %171
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %178

178:                                              ; preds = %176, %174
  %.pn171 = phi { ptr, i32 } [ %177, %176 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %185

179:                                              ; preds = %119
  %180 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %180, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %181 unwind label %182

181:                                              ; preds = %179
  invoke void @__cxa_throw(ptr nonnull %180, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %521 unwind label %105

182:                                              ; preds = %179
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %180) #9
  br label %185

184:                                              ; preds = %172, %163, %152, %145, %140, %132
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  br label %519

185:                                              ; preds = %113, %135, %137, %115, %182, %178, %169, %160, %154, %146, %141, %125, %105, %104
  %.pn180.pn = phi { ptr, i32 } [ %.pn180187, %115 ], [ %114, %113 ], [ %106, %105 ], [ %183, %182 ], [ %.pn171, %178 ], [ %.pn173, %169 ], [ %.pn175, %160 ], [ %155, %154 ], [ %147, %146 ], [ %142, %141 ], [ %.pn177.pn193, %137 ], [ %136, %135 ], [ %.pn169, %125 ], [ %.pn166, %104 ]
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  br label %186

186:                                              ; preds = %185, %98
  %.pn180.pn.pn = phi { ptr, i32 } [ %.pn180.pn, %185 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  br label %520

187:                                              ; preds = %64
  %188 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  switch i32 %188, label %299 [
    i32 14, label %191
    i32 83, label %191
    i32 112, label %191
    i32 34, label %191
    i32 111, label %191
  ]

189:                                              ; preds = %.invoke, %514, %511, %509, %455, %453, %438, %428, %424, %420, %411, %330, %328, %326, %324, %322, %320, %317, %314, %301, %197, %193
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %520

191:                                              ; preds = %187, %187, %187, %187, %187
  %192 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %.not121 = icmp eq i32 %192, 111
  br i1 %.not121, label %193, label %197

193:                                              ; preds = %191
  %194 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %195 unwind label %189

195:                                              ; preds = %193
  %196 = icmp eq i32 %194, 34
  br i1 %196, label %197, label %299

197:                                              ; preds = %195, %191
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %23, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %198 unwind label %189

198:                                              ; preds = %197
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %23)
          to label %199 unwind label %231

199:                                              ; preds = %198
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  call void @llvm.lifetime.start.p0(i64 240, ptr nonnull %24) #9
  invoke void @_Z10Parse_PathR11TokenStream21eParsePathGenericMode(ptr dead_on_unwind nonnull writable sret(%"class.AST::Path") align 8 %24, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1)
          to label %200 unwind label %233

200:                                              ; preds = %199
  %201 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %202 unwind label %235

202:                                              ; preds = %200
  %203 = icmp eq i32 %201, 43
  br i1 %203, label %204, label %280

204:                                              ; preds = %202
  %205 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1)
          to label %206 unwind label %235

206:                                              ; preds = %204
  %207 = icmp eq i32 %205, 25
  br i1 %207, label %208, label %280

208:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %25) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %25, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %209 unwind label %237

209:                                              ; preds = %208
  %210 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %25)
          to label %211 unwind label %239

211:                                              ; preds = %209
  %212 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %210)
  %.not128 = icmp eq i32 %212, 43
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %25) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #9
  br i1 %.not128, label %251, label %213

213:                                              ; preds = %211
  %214 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %215 unwind label %235

215:                                              ; preds = %213
  br i1 %214, label %216, label %242

216:                                              ; preds = %215
  %217 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %217, ptr noundef nonnull @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %219 unwind label %235

219:                                              ; preds = %216
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @.str)
          to label %221 unwind label %235

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

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

225:                                              ; preds = %223
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 noundef 286)
          to label %227 unwind label %235

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %226, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %229 unwind label %235

229:                                              ; preds = %227
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %242 unwind label %235

231:                                              ; preds = %198
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  br label %520

233:                                              ; preds = %199
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %298

235:                                              ; preds = %229, %227, %225, %223, %221, %219, %216, %213, %204, %200
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %297

237:                                              ; preds = %208
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %209
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %25) #9
  br label %241

241:                                              ; preds = %239, %237
  %.pn126 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %25) #9
  br label %297

242:                                              ; preds = %229, %215
  %243 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %26, i32 noundef 43)
          to label %244 unwind label %.thread197

244:                                              ; preds = %242
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %243, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %26)
          to label %246 unwind label %.thread201

.thread201:                                       ; preds = %244
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #9
  br label %250

246:                                              ; preds = %244
  invoke void @__cxa_throw(ptr nonnull %243, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %521 unwind label %248

.thread197:                                       ; preds = %242
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %246
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #9
  br label %297

250:                                              ; preds = %.thread201, %.thread197
  %.pn134200 = phi { ptr, i32 } [ %247, %.thread197 ], [ %245, %.thread201 ]
  call void @__cxa_free_exception(ptr %243) #9
  br label %297

251:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %28, ptr noundef nonnull align 8 dereferenceable(240) %24)
          to label %252 unwind label %266

252:                                              ; preds = %251
  invoke void @_Z15Parse_ExprMacroR11TokenStreamN3AST4PathE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %27, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %28)
          to label %253 unwind label %268

253:                                              ; preds = %252
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #9
  %254 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %255 unwind label %270

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

257:                                              ; preds = %255
  %258 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %259 unwind label %270

259:                                              ; preds = %257
  %260 = icmp eq i32 %258, 69
  br i1 %260, label %261, label %277

261:                                              ; preds = %259, %255
  %262 = call noundef ptr @_ZN3AST9ExprNodeP7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
  invoke void @_ZN20InterpolatedFragmentC1ENS_4TypeEPN3AST8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(16) %30, i32 noundef 4, ptr noundef %262)
          to label %263 unwind label %270

263:                                              ; preds = %261
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %29, ptr noundef nonnull %30)
          to label %264 unwind label %272

264:                                              ; preds = %263
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %29)
          to label %265 unwind label %274

265:                                              ; preds = %264
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  invoke void @_Z24Parse_ExprBlockLine_StmtR11TokenStreamRb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 1 dereferenceable(1) %spec.store.select)
          to label %.critedge unwind label %270

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

268:                                              ; preds = %252
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %28) #9
  br label %279

270:                                              ; preds = %265, %261, %257, %253
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %278

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

274:                                              ; preds = %264
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #9
  br label %276

276:                                              ; preds = %274, %272
  %.pn129 = phi { ptr, i32 } [ %275, %274 ], [ %273, %272 ]
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  br label %278

277:                                              ; preds = %259
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %27)
  br label %.critedge

.critedge:                                        ; preds = %265, %277
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %24) #9
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %24) #9
  br label %519

278:                                              ; preds = %276, %270
  %.pn131 = phi { ptr, i32 } [ %271, %270 ], [ %.pn129, %276 ]
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br label %279

279:                                              ; preds = %278, %268, %266
  %.pn131.pn = phi { ptr, i32 } [ %.pn131, %278 ], [ %269, %268 ], [ %267, %266 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  br label %297

280:                                              ; preds = %206, %202
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %31) #9
  invoke void @_ZN3AST4PathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(240) %33, ptr noundef nonnull align 8 dereferenceable(240) %24)
          to label %281 unwind label %286

281:                                              ; preds = %280
  invoke void @_ZN20InterpolatedFragmentC1EN3AST4PathE(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull %33)
          to label %282 unwind label %288

282:                                              ; preds = %281
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %31, ptr noundef nonnull %32)
          to label %283 unwind label %290

283:                                              ; preds = %282
  %284 = 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 %285 unwind label %292

285:                                              ; preds = %283
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %33) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %31) #9
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %24) #9
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %24) #9
  br label %299

286:                                              ; preds = %280
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %296

288:                                              ; preds = %281
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %295

290:                                              ; preds = %282
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %294

292:                                              ; preds = %283
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #9
  br label %294

294:                                              ; preds = %292, %290
  %.pn122 = phi { ptr, i32 } [ %293, %292 ], [ %291, %290 ]
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  br label %295

295:                                              ; preds = %294, %288
  %.pn122.pn = phi { ptr, i32 } [ %.pn122, %294 ], [ %289, %288 ]
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %33) #9
  br label %296

296:                                              ; preds = %295, %286
  %.pn122.pn.pn = phi { ptr, i32 } [ %.pn122.pn, %295 ], [ %287, %286 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %31) #9
  br label %297

297:                                              ; preds = %248, %250, %296, %279, %241, %235
  %.pn134.pn = phi { ptr, i32 } [ %.pn134200, %250 ], [ %249, %248 ], [ %236, %235 ], [ %.pn131.pn, %279 ], [ %.pn126, %241 ], [ %.pn122.pn.pn, %296 ]
  call void @_ZN3AST4PathD1Ev(ptr noundef nonnull align 8 dereferenceable(240) %24) #9
  br label %298

298:                                              ; preds = %297, %233
  %.pn134.pn.pn = phi { ptr, i32 } [ %.pn134.pn, %297 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 240, ptr nonnull %24) #9
  br label %520

299:                                              ; preds = %285, %187, %195
  %300 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  switch i32 %300, label %514 [
    i32 10, label %301
    i32 32, label %306
    i32 94, label %307
    i32 98, label %349
    i32 99, label %357
    i32 100, label %374
    i32 96, label %383
    i32 95, label %388
    i32 81, label %393
    i32 79, label %402
    i32 25, label %411
    i32 102, label %453
    i32 105, label %453
    i32 106, label %453
    i32 103, label %453
    i32 104, label %453
    i32 8, label %509
  ]

301:                                              ; preds = %299
  invoke void @_ZN5Token14take_frag_nodeEv(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.18") align 8 %34, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %302 unwind label %189

302:                                              ; preds = %301
  invoke void @_ZN3AST9ExprNodePC1ESt10unique_ptrINS_8ExprNodeESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %34)
          to label %303 unwind label %304

303:                                              ; preds = %302
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %519

304:                                              ; preds = %302
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3AST8ExprNodeESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %520

306:                                              ; preds = %299
  call void @_ZN3AST9ExprNodePC2EPNS_8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef null)
  br label %519

307:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  invoke void @_Z14Parse_Stmt_LetR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %35, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %308 unwind label %332

308:                                              ; preds = %307
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %35)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %36) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %310 unwind label %334

310:                                              ; preds = %308
  %311 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %36)
          to label %312 unwind label %336

312:                                              ; preds = %310
  %313 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %311)
  %.not163 = icmp eq i32 %313, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %36) #9
  br i1 %.not163, label %348, label %314

314:                                              ; preds = %312
  %315 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %316 unwind label %189

316:                                              ; preds = %314
  br i1 %315, label %317, label %339

317:                                              ; preds = %316
  %318 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %318, ptr noundef nonnull @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %320 unwind label %189

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull @.str)
          to label %322 unwind label %189

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull @.str.1)
          to label %324 unwind label %189

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

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %325, i32 noundef 313)
          to label %328 unwind label %189

328:                                              ; preds = %326
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %330 unwind label %189

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %339 unwind label %189

332:                                              ; preds = %307
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %520

334:                                              ; preds = %308
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %338

336:                                              ; preds = %310
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %36) #9
  br label %338

338:                                              ; preds = %336, %334
  %.pn161 = phi { ptr, i32 } [ %337, %336 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %36) #9
  br label %520

339:                                              ; preds = %330, %316
  %340 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %37, i32 noundef 32)
          to label %341 unwind label %.thread203

341:                                              ; preds = %339
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %340, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %37)
          to label %343 unwind label %.thread207

.thread207:                                       ; preds = %341
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #9
  br label %347

343:                                              ; preds = %341
  invoke void @__cxa_throw(ptr nonnull %340, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %521 unwind label %345

.thread203:                                       ; preds = %339
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %347

345:                                              ; preds = %343
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #9
  br label %520

347:                                              ; preds = %.thread207, %.thread203
  %.pn164206 = phi { ptr, i32 } [ %344, %.thread203 ], [ %342, %.thread207 ]
  call void @__cxa_free_exception(ptr %340) #9
  br label %520

348:                                              ; preds = %312
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %519

349:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  %350 = invoke noalias noundef nonnull dereferenceable(624) ptr @_Znwm(i64 noundef 624) #11
          to label %351 unwind label %361

351:                                              ; preds = %349
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull @.str.9)
          to label %352 unwind label %.thread209

352:                                              ; preds = %351
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %40, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %353 unwind label %.thread213

353:                                              ; preds = %352
  invoke void @_ZN3AST13ExprNode_LoopC2E5IdentNS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(624) %350, ptr noundef nonnull %39, ptr noundef nonnull %40)
          to label %354 unwind label %365

354:                                              ; preds = %353
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %38, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %350)
          to label %355 unwind label %365

355:                                              ; preds = %354
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %420

357:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull @.str.9)
          to label %358 unwind label %369

358:                                              ; preds = %357
  invoke void @_Z15Parse_WhileStmtR11TokenStream5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %41, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %42)
          to label %359 unwind label %371

359:                                              ; preds = %358
  %360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %41)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %420

361:                                              ; preds = %349
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %368

.thread209:                                       ; preds = %351
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %367

.thread213:                                       ; preds = %352
  %364 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %367

365:                                              ; preds = %353, %354
  %.068 = phi i1 [ false, %354 ], [ true, %353 ]
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br i1 %.068, label %367, label %368

367:                                              ; preds = %.thread213, %.thread209, %365
  %.pn153.pn212 = phi { ptr, i32 } [ %363, %.thread209 ], [ %366, %365 ], [ %364, %.thread213 ]
  call void @_ZdlPvm(ptr noundef nonnull %350, i64 noundef 624) #12
  br label %368

368:                                              ; preds = %365, %367, %361
  %.pn153.pn.pn = phi { ptr, i32 } [ %.pn153.pn212, %367 ], [ %366, %365 ], [ %362, %361 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %520

369:                                              ; preds = %357
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %373

371:                                              ; preds = %358
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  br label %373

373:                                              ; preds = %371, %369
  %.pn151 = phi { ptr, i32 } [ %372, %371 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %520

374:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull @.str.9)
          to label %375 unwind label %378

375:                                              ; preds = %374
  invoke void @_Z13Parse_ForStmtR11TokenStream5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %43, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %44)
          to label %376 unwind label %380

376:                                              ; preds = %375
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %43)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br label %420

378:                                              ; preds = %374
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %375
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  br label %382

382:                                              ; preds = %380, %378
  %.pn149 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br label %520

383:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #9
  invoke void @_Z12Parse_IfStmtR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %45, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %384 unwind label %386

384:                                              ; preds = %383
  %385 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %45)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %420

386:                                              ; preds = %383
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %520

388:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  invoke void @_Z16Parse_Expr_MatchR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %46, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %389 unwind label %391

389:                                              ; preds = %388
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %46)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %420

391:                                              ; preds = %388
  %392 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %520

393:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull @.str.9)
          to label %394 unwind label %397

394:                                              ; preds = %393
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %47, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 1, ptr noundef nonnull %48)
          to label %395 unwind label %399

395:                                              ; preds = %394
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %47)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %420

397:                                              ; preds = %393
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %401

399:                                              ; preds = %394
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #9
  br label %401

401:                                              ; preds = %399, %397
  %.pn147 = phi { ptr, i32 } [ %400, %399 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %520

402:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  invoke void @_ZN5IdentC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull @.str.9)
          to label %403 unwind label %406

403:                                              ; preds = %402
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStreamN3AST14ExprNode_Block4TypeE5Ident(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %49, ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 2, ptr noundef nonnull %50)
          to label %404 unwind label %408

404:                                              ; preds = %403
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %49)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %420

406:                                              ; preds = %402
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %410

408:                                              ; preds = %403
  %409 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5IdentD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  br label %410

410:                                              ; preds = %408, %406
  %.pn145 = phi { ptr, i32 } [ %409, %408 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br label %520

411:                                              ; preds = %299
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %51, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %412 unwind label %189

412:                                              ; preds = %411
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %51)
          to label %413 unwind label %416

413:                                              ; preds = %412
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  invoke void @_Z19Parse_ExprBlockNodeR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %52, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %414 unwind label %418

414:                                              ; preds = %413
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %420

416:                                              ; preds = %412
  %417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #9
  br label %520

418:                                              ; preds = %413
  %419 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %520

420:                                              ; preds = %404, %389, %376, %355, %359, %384, %395, %414
  %421 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %422 unwind label %189

422:                                              ; preds = %420
  %423 = icmp eq i32 %421, 46
  br i1 %423, label %428, label %424

424:                                              ; preds = %422
  %425 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %426 unwind label %189

426:                                              ; preds = %424
  %427 = icmp eq i32 %425, 69
  br i1 %427, label %428, label %438

428:                                              ; preds = %426, %422
  %429 = call noundef ptr @_ZN3AST9ExprNodeP7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN20InterpolatedFragmentC1ENS_4TypeEPN3AST8ExprNodeE(ptr noundef nonnull align 8 dereferenceable(16) %54, i32 noundef 4, ptr noundef %429)
          to label %430 unwind label %189

430:                                              ; preds = %428
  invoke void @_ZN5TokenC1ENS_9TagTakeIPE20InterpolatedFragment(ptr noundef nonnull align 8 dereferenceable(88) %53, ptr noundef nonnull %54)
          to label %431 unwind label %433

431:                                              ; preds = %430
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %53)
          to label %432 unwind label %435

432:                                              ; preds = %431
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #9
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  br label %.invoke

433:                                              ; preds = %430
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %437

435:                                              ; preds = %431
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #9
  br label %437

437:                                              ; preds = %435, %433
  %.pn159 = phi { ptr, i32 } [ %436, %435 ], [ %434, %433 ]
  call void @_ZN20InterpolatedFragmentD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  br label %520

438:                                              ; preds = %426
  %439 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %440 unwind label %189

440:                                              ; preds = %438
  %441 = icmp eq i32 %439, 32
  br i1 %441, label %442, label %452

442:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %55) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %55, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %443 unwind label %447

443:                                              ; preds = %442
  %444 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %55)
          to label %445 unwind label %449

445:                                              ; preds = %443
  %446 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %444)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %55) #9
  store i8 1, ptr %spec.store.select, align 1, !tbaa !5
  br label %452

447:                                              ; preds = %442
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %451

449:                                              ; preds = %443
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %55) #9
  br label %451

451:                                              ; preds = %449, %447
  %.pn157 = phi { ptr, i32 } [ %450, %449 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %55) #9
  br label %520

452:                                              ; preds = %445, %440
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %519

453:                                              ; preds = %299, %299, %299, %299, %299
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %56, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %454 unwind label %189

454:                                              ; preds = %453
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %56)
          to label %455 unwind label %460

455:                                              ; preds = %454
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %56) #9
  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 %456 unwind label %189

456:                                              ; preds = %455
  %457 = invoke noundef i32 @_ZN11TokenStream9lookaheadEj(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 0)
          to label %458 unwind label %462

458:                                              ; preds = %456
  %459 = icmp eq i32 %457, 1
  br i1 %459, label %519, label %464

460:                                              ; preds = %454
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %56) #9
  br label %520

462:                                              ; preds = %503, %487, %485, %483, %481, %479, %477, %474, %471, %456
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %508

464:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %57) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %57, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %465 unwind label %489

465:                                              ; preds = %464
  %466 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull align 8 dereferenceable(88) %57)
          to label %467 unwind label %491

467:                                              ; preds = %465
  %468 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %466)
  %.not140 = icmp eq i32 %468, 32
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %57) #9
  br i1 %.not140, label %519, label %469

469:                                              ; preds = %467
  %470 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %4)
  %.not141 = icmp eq i32 %470, 26
  br i1 %.not141, label %503, label %471

471:                                              ; preds = %469
  %472 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %473 unwind label %462

473:                                              ; preds = %471
  br i1 %472, label %474, label %494

474:                                              ; preds = %473
  %475 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %475, ptr noundef nonnull @__FUNCTION__._Z19Parse_ExprBlockLineR11TokenStreamPb)
          to label %477 unwind label %462

477:                                              ; preds = %474
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef nonnull @.str.10)
          to label %479 unwind label %462

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull @.str.1)
          to label %481 unwind label %462

481:                                              ; preds = %479
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull @.str.2)
          to label %483 unwind label %462

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %482, i32 noundef 368)
          to label %485 unwind label %462

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

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

489:                                              ; preds = %464
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %493

491:                                              ; preds = %465
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %57) #9
  br label %493

493:                                              ; preds = %491, %489
  %.pn138 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %57) #9
  br label %508

494:                                              ; preds = %487, %473
  %495 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %58, i32 noundef 26)
          to label %496 unwind label %.thread216

496:                                              ; preds = %494
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %495, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %4, ptr noundef nonnull %58)
          to label %498 unwind label %.thread220

.thread220:                                       ; preds = %496
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %58) #9
  br label %502

498:                                              ; preds = %496
  invoke void @__cxa_throw(ptr nonnull %495, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #10
          to label %521 unwind label %500

.thread216:                                       ; preds = %494
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %502

500:                                              ; preds = %498
  %501 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %58) #9
  br label %508

502:                                              ; preds = %.thread220, %.thread216
  %.pn142219 = phi { ptr, i32 } [ %499, %.thread216 ], [ %497, %.thread220 ]
  call void @__cxa_free_exception(ptr %495) #9
  br label %508

503:                                              ; preds = %469
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %59, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %504 unwind label %462

504:                                              ; preds = %503
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %59)
          to label %505 unwind label %506

505:                                              ; preds = %504
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %59) #9
  br label %519

506:                                              ; preds = %504
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %59) #9
  br label %508

508:                                              ; preds = %500, %502, %506, %493, %462
  %.pn142.pn = phi { ptr, i32 } [ %.pn142219, %502 ], [ %501, %500 ], [ %463, %462 ], [ %507, %506 ], [ %.pn138, %493 ]
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  br label %520

509:                                              ; preds = %299
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %60, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %510 unwind label %189

510:                                              ; preds = %509
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %60)
          to label %511 unwind label %512

511:                                              ; preds = %510
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %60) #9
  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 %519 unwind label %189

512:                                              ; preds = %510
  %513 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %60) #9
  br label %520

514:                                              ; preds = %299
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %61, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %515 unwind label %189

515:                                              ; preds = %514
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %61)
          to label %516 unwind label %517

516:                                              ; preds = %515
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %61) #9
  br label %.invoke

.invoke:                                          ; preds = %432, %516
  invoke void @_Z24Parse_ExprBlockLine_StmtR11TokenStreamRb(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 1 dereferenceable(1) %spec.store.select)
          to label %519 unwind label %189

517:                                              ; preds = %515
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %61) #9
  br label %520

519:                                              ; preds = %.invoke, %511, %458, %467, %505, %.critedge, %452, %348, %306, %303, %184
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #9
  ret void

520:                                              ; preds = %345, %347, %517, %512, %508, %460, %451, %437, %418, %416, %410, %401, %391, %386, %382, %373, %368, %338, %332, %304, %298, %231, %189, %186, %97
  %.pn180.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn, %186 ], [ %190, %189 ], [ %518, %517 ], [ %513, %512 ], [ %.pn142.pn, %508 ], [ %461, %460 ], [ %.pn159, %437 ], [ %.pn157, %451 ], [ %419, %418 ], [ %417, %416 ], [ %.pn145, %410 ], [ %.pn147, %401 ], [ %392, %391 ], [ %387, %386 ], [ %.pn149, %382 ], [ %.pn151, %373 ], [ %.pn153.pn.pn, %368 ], [ %.pn164206, %347 ], [ %346, %345 ], [ %.pn161, %338 ], [ %333, %332 ], [ %305, %304 ], [ %.pn134.pn.pn, %298 ], [ %232, %231 ], [ %.pn, %97 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #9
  resume { ptr, i32 } %.pn180.pn.pn.pn

521:                                              ; preds = %498, %343, %246, %181, %111
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z14Parse_Stmt_LetR11TokenStream(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 @_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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SROAPass,SimplifyCFGPass