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

; 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::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.156", i8, [7 x i8] }>
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.U128 = type { i64, i64 }
%struct.ParseState = type { i8, i8, i8, ptr, ptr, ptr }
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }

@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__._Z12Parse_ExprFCR11TokenStream = external hidden unnamed_addr constant [13 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #3

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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) #5

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12Parse_ExprFCR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca %class.Token, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.Token, align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca i32, align 4
  %12 = alloca %class.Token, align 8
  %13 = alloca %"class.AST::ExprNodeP", align 8
  %14 = alloca %"class.AST::ExprNodeP", align 8
  %15 = alloca %"class.std::vector.5", align 8
  %16 = alloca i1, align 1
  %17 = alloca %class.Token, align 8
  %18 = alloca %"class.AST::ExprNodeP", align 8
  %19 = alloca %"class.AST::ExprNodeP", align 8
  %20 = alloca %"class.AST::ExprNodeP", align 8
  %21 = alloca i1, align 1
  %22 = alloca %class.Token, align 8
  %23 = alloca %class.Token, align 8
  %24 = alloca i1, align 1
  %25 = alloca %"class.AST::ExprNodeP", align 8
  %26 = alloca %"class.AST::ExprNodeP", align 8
  %27 = alloca i1, align 1
  %28 = alloca %class.Token, align 8
  %29 = alloca %"class.AST::PathNode", align 8
  %30 = alloca %class.RcString, align 8
  %31 = alloca %"struct.AST::PathParams", align 8
  %32 = alloca %class.Token, align 8
  %33 = alloca %class.Token, align 8
  %34 = alloca %"class.AST::ExprNodeP", align 8
  %35 = alloca %"class.AST::ExprNodeP", align 8
  %36 = alloca %"class.AST::PathNode", align 8
  %37 = alloca %"class.std::vector.5", align 8
  %38 = alloca i1, align 1
  %39 = alloca %class.Token, align 8
  %40 = alloca %class.Token, align 8
  %41 = alloca %class.Token, align 8
  %42 = alloca i1, align 1
  %43 = alloca %"struct.AST::PathParams", align 8
  %44 = alloca %"class.AST::ExprNodeP", align 8
  %45 = alloca %"class.AST::ExprNodeP", align 8
  %46 = alloca %"class.AST::PathNode", align 8
  %47 = alloca %"class.std::vector.5", align 8
  %48 = alloca i1, align 1
  %49 = alloca %"class.AST::ExprNodeP", align 8
  %50 = alloca %"class.AST::ExprNodeP", align 8
  %51 = alloca %class.RcString, align 8
  %52 = alloca i1, align 1
  %53 = alloca %class.Token, align 8
  %54 = alloca %"class.AST::ExprNodeP", align 8
  %55 = alloca %"class.AST::ExprNodeP", align 8
  %56 = alloca %class.RcString, align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %59 = alloca %class.U128, align 8
  %60 = alloca i1, align 1
  %61 = alloca %"class.AST::ExprNodeP", align 8
  %62 = alloca %"class.AST::ExprNodeP", align 8
  %63 = alloca i1, align 1
  %64 = alloca %class.Token, align 8
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  store i1 false, ptr %5, align 1
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_Z13Parse_ExprValR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %65)
  br label %66

66:                                               ; preds = %692, %2
  br label %67

67:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 88, ptr %6) #9
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %68 unwind label %75

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

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

72:                                               ; preds = %70
  %73 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %71)
          to label %74 unwind label %83

74:                                               ; preds = %72
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %9) #9
  switch i32 %73, label %681 [
    i32 23, label %88
    i32 29, label %154
    i32 69, label %268
    i32 46, label %299
  ]

75:                                               ; preds = %67
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %7, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %8, align 4
  br label %694

79:                                               ; preds = %68
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %7, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %8, align 4
  br label %87

83:                                               ; preds = %72, %70
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %7, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #9
  br label %87

87:                                               ; preds = %83, %79
  call void @llvm.lifetime.end.p0(i64 88, ptr %9) #9
  br label %693

88:                                               ; preds = %74
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %89)
          to label %91 unwind label %101

91:                                               ; preds = %88
  %92 = getelementptr inbounds %struct.ParseState, ptr %90, i32 0, i32 1
  %93 = load i8, ptr %92, align 1, !tbaa !9, !range !12, !noundef !13
  %94 = trunc i8 %93 to i1
  %95 = zext i1 %94 to i32
  %96 = icmp eq i32 %95, 1
  br i1 %96, label %97, label %109

97:                                               ; preds = %91
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %99 unwind label %101

99:                                               ; preds = %97
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %98, ptr noundef %10)
          to label %100 unwind label %105

100:                                              ; preds = %99
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #9
  store i1 true, ptr %5, align 1
  store i32 1, ptr %11, align 4
  br label %690

101:                                              ; preds = %681, %675, %207, %205, %203, %201, %199, %197, %194, %191, %163, %154, %109, %97, %88
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %7, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %8, align 4
  br label %693

105:                                              ; preds = %99
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %7, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %10) #9
  br label %693

109:                                              ; preds = %91
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %12, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %111 unwind label %101

111:                                              ; preds = %109
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %110, ptr noundef %12)
          to label %112 unwind label %123

112:                                              ; preds = %111
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 72) #10
          to label %115 unwind label %127

115:                                              ; preds = %112
  store i1 true, ptr %16, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %116 unwind label %131

116:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #9
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind writable sret(%"class.std::vector.5") align 8 %15, ptr noundef nonnull align 8 dereferenceable(176) %117)
          to label %118 unwind label %135

118:                                              ; preds = %116
  invoke void @_ZN3AST19ExprNode_CallObjectC2ENS_9ExprNodePEOSt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(72) %114, ptr noundef %14, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %119 unwind label %139

119:                                              ; preds = %118
  store i1 false, ptr %16, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %113, ptr noundef %114)
          to label %120 unwind label %139

120:                                              ; preds = %119
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %122 unwind label %143

122:                                              ; preds = %120
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %689

123:                                              ; preds = %111
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %7, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #9
  br label %693

127:                                              ; preds = %112
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %7, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %8, align 4
  br label %153

131:                                              ; preds = %115
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %7, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %8, align 4
  br label %149

135:                                              ; preds = %116
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %7, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %8, align 4
  br label %148

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

143:                                              ; preds = %120
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %7, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  br label %147

147:                                              ; preds = %143, %139
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  br label %148

148:                                              ; preds = %147, %135
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br label %149

149:                                              ; preds = %148, %131
  %150 = load i1, ptr %16, align 1
  br i1 %150, label %151, label %152

151:                                              ; preds = %149
  call void @_ZdlPvm(ptr noundef %114, i64 noundef 72) #11
  br label %152

152:                                              ; preds = %151, %149
  br label %153

153:                                              ; preds = %152, %127
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %693

154:                                              ; preds = %74
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  %156 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %155)
          to label %157 unwind label %101

157:                                              ; preds = %154
  %158 = getelementptr inbounds %struct.ParseState, ptr %156, i32 0, i32 1
  %159 = load i8, ptr %158, align 1, !tbaa !9, !range !12, !noundef !13
  %160 = trunc i8 %159 to i1
  %161 = zext i1 %160 to i32
  %162 = icmp eq i32 %161, 1
  br i1 %162, label %163, label %171

163:                                              ; preds = %157
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %17, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %165 unwind label %101

165:                                              ; preds = %163
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %164, ptr noundef %17)
          to label %166 unwind label %167

166:                                              ; preds = %165
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #9
  store i1 true, ptr %5, align 1
  store i32 1, ptr %11, align 4
  br label %690

167:                                              ; preds = %165
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %7, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #9
  br label %693

171:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %174 unwind label %210

174:                                              ; preds = %171
  store i1 true, ptr %21, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %175 unwind label %214

175:                                              ; preds = %174
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %20, ptr noundef nonnull align 8 dereferenceable(176) %176)
          to label %177 unwind label %218

177:                                              ; preds = %175
  invoke void @_ZN3AST14ExprNode_IndexC2ENS_9ExprNodePES1_(ptr noundef nonnull align 8 dereferenceable(56) %173, ptr noundef %19, ptr noundef %20)
          to label %178 unwind label %222

178:                                              ; preds = %177
  store i1 false, ptr %21, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %18, ptr noundef nonnull align 8 dereferenceable(176) %172, ptr noundef %173)
          to label %179 unwind label %222

179:                                              ; preds = %178
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %181 unwind label %226

181:                                              ; preds = %179
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %182

182:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 88, ptr %22) #9
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %22, ptr noundef nonnull align 8 dereferenceable(176) %183)
          to label %184 unwind label %237

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %22)
          to label %186 unwind label %241

186:                                              ; preds = %184
  %187 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %185)
          to label %188 unwind label %241

188:                                              ; preds = %186
  %189 = icmp ne i32 %187, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %22) #9
  br i1 %189, label %190, label %265

190:                                              ; preds = %188
  br label %191

191:                                              ; preds = %190
  %192 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %193 unwind label %101

193:                                              ; preds = %191
  br i1 %192, label %194, label %246

194:                                              ; preds = %193
  %195 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %195, ptr noundef @__FUNCTION__._Z12Parse_ExprFCR11TokenStream)
          to label %197 unwind label %101

197:                                              ; preds = %194
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef @.str)
          to label %199 unwind label %101

199:                                              ; preds = %197
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef @.str.1)
          to label %201 unwind label %101

201:                                              ; preds = %199
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef @.str.2)
          to label %203 unwind label %101

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %202, i32 noundef 1123)
          to label %205 unwind label %101

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef @_ZSt3decRSt8ios_base)
          to label %207 unwind label %101

207:                                              ; preds = %205
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %209 unwind label %101

209:                                              ; preds = %207
  br label %246

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

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

218:                                              ; preds = %175
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %7, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %8, align 4
  br label %231

222:                                              ; preds = %178, %177
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %7, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %8, align 4
  br label %230

226:                                              ; preds = %179
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %7, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %230

230:                                              ; preds = %226, %222
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %231

231:                                              ; preds = %230, %218
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br label %232

232:                                              ; preds = %231, %214
  %233 = load i1, ptr %21, align 1
  br i1 %233, label %234, label %235

234:                                              ; preds = %232
  call void @_ZdlPvm(ptr noundef %173, i64 noundef 56) #11
  br label %235

235:                                              ; preds = %234, %232
  br label %236

236:                                              ; preds = %235, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %693

237:                                              ; preds = %182
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %7, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %8, align 4
  br label %245

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

245:                                              ; preds = %241, %237
  call void @llvm.lifetime.end.p0(i64 88, ptr %22) #9
  br label %693

246:                                              ; preds = %209, %193
  br label %247

247:                                              ; preds = %246
  br label %248

248:                                              ; preds = %247
  store i1 true, ptr %24, align 1
  %249 = call ptr @__cxa_allocate_exception(i64 96) #9
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %23, i32 noundef 30)
          to label %251 unwind label %253

251:                                              ; preds = %248
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %249, ptr noundef nonnull align 8 dereferenceable(176) %250, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %23)
          to label %252 unwind label %257

252:                                              ; preds = %251
  store i1 false, ptr %24, align 1
  invoke void @__cxa_throw(ptr %249, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %704 unwind label %257

253:                                              ; preds = %248
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %7, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %8, align 4
  br label %261

257:                                              ; preds = %252, %251
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %7, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  br label %261

261:                                              ; preds = %257, %253
  %262 = load i1, ptr %24, align 1
  br i1 %262, label %263, label %264

263:                                              ; preds = %261
  call void @__cxa_free_exception(ptr %249) #9
  br label %264

264:                                              ; preds = %263, %261
  br label %693

265:                                              ; preds = %188
  br label %266

266:                                              ; preds = %265
  br label %267

267:                                              ; preds = %266
  br label %689

268:                                              ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %269 = load ptr, ptr %4, align 8, !tbaa !5
  %270 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %271 unwind label %277

271:                                              ; preds = %268
  store i1 true, ptr %27, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %272 unwind label %281

272:                                              ; preds = %271
  invoke void @_ZN3AST14ExprNode_UniOpC2ENS0_4TypeENS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(56) %270, i32 noundef 7, ptr noundef %26)
          to label %273 unwind label %285

273:                                              ; preds = %272
  store i1 false, ptr %27, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %25, ptr noundef nonnull align 8 dereferenceable(176) %269, ptr noundef %270)
          to label %274 unwind label %285

274:                                              ; preds = %273
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %276 unwind label %289

276:                                              ; preds = %274
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %689

277:                                              ; preds = %268
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %7, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %8, align 4
  br label %298

281:                                              ; preds = %271
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %7, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %8, align 4
  br label %294

285:                                              ; preds = %273, %272
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %7, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %8, align 4
  br label %293

289:                                              ; preds = %274
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %7, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %293

293:                                              ; preds = %289, %285
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %294

294:                                              ; preds = %293, %281
  %295 = load i1, ptr %27, align 1
  br i1 %295, label %296, label %297

296:                                              ; preds = %294
  call void @_ZdlPvm(ptr noundef %270, i64 noundef 56) #11
  br label %297

297:                                              ; preds = %296, %294
  br label %298

298:                                              ; preds = %297, %277
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %693

299:                                              ; preds = %74
  call void @llvm.lifetime.start.p0(i64 88, ptr %28) #9
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %28, ptr noundef nonnull align 8 dereferenceable(176) %300)
          to label %301 unwind label %306

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %28)
          to label %303 unwind label %310

303:                                              ; preds = %301
  %304 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %302)
          to label %305 unwind label %310

305:                                              ; preds = %303
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %28) #9
  switch i32 %304, label %672 [
    i32 14, label %315
    i32 16, label %584
    i32 123, label %641
  ]

306:                                              ; preds = %299
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %7, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %8, align 4
  br label %314

310:                                              ; preds = %303, %301
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %7, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #9
  br label %314

314:                                              ; preds = %310, %306
  call void @llvm.lifetime.end.p0(i64 88, ptr %28) #9
  br label %693

315:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 40, ptr %29) #9
  %316 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %317 unwind label %328

317:                                              ; preds = %315
  %318 = getelementptr inbounds %struct.Ident, ptr %316, i32 0, i32 1
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %319 unwind label %328

319:                                              ; preds = %317
  invoke void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %31)
          to label %320 unwind label %332

320:                                              ; preds = %319
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %29, ptr noundef %30, ptr noundef %31)
          to label %321 unwind label %336

321:                                              ; preds = %320
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %31) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr %32) #9
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %322)
          to label %323 unwind label %341

323:                                              ; preds = %321
  %324 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %32)
          to label %325 unwind label %345

325:                                              ; preds = %323
  %326 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %324)
          to label %327 unwind label %345

327:                                              ; preds = %325
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %32) #9
  switch i32 %326, label %535 [
    i32 23, label %350
    i32 34, label %405
  ]

328:                                              ; preds = %317, %315
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %7, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %8, align 4
  br label %583

332:                                              ; preds = %319
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %7, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %8, align 4
  br label %340

336:                                              ; preds = %320
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %7, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %8, align 4
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %31) #9
  br label %340

340:                                              ; preds = %336, %332
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %583

341:                                              ; preds = %321
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %7, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %8, align 4
  br label %349

345:                                              ; preds = %325, %323
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %7, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %32) #9
  br label %349

349:                                              ; preds = %345, %341
  call void @llvm.lifetime.end.p0(i64 88, ptr %32) #9
  br label %582

350:                                              ; preds = %327
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %33, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %352 unwind label %365

352:                                              ; preds = %350
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %351, ptr noundef %33)
          to label %353 unwind label %369

353:                                              ; preds = %352
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 112) #10
          to label %356 unwind label %373

356:                                              ; preds = %353
  store i1 true, ptr %38, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %357 unwind label %377

357:                                              ; preds = %356
  invoke void @_ZN3AST8PathNodeC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %36, ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %358 unwind label %381

358:                                              ; preds = %357
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind writable sret(%"class.std::vector.5") align 8 %37, ptr noundef nonnull align 8 dereferenceable(176) %359)
          to label %360 unwind label %385

360:                                              ; preds = %358
  invoke void @_ZN3AST19ExprNode_CallMethodC2ENS_9ExprNodePENS_8PathNodeESt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(112) %355, ptr noundef %35, ptr noundef %36, ptr noundef %37)
          to label %361 unwind label %389

361:                                              ; preds = %360
  store i1 false, ptr %38, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %34, ptr noundef nonnull align 8 dereferenceable(176) %354, ptr noundef %355)
          to label %362 unwind label %389

362:                                              ; preds = %361
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %364 unwind label %393

364:                                              ; preds = %362
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #9
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %581

365:                                              ; preds = %546, %443, %441, %439, %437, %435, %433, %430, %427, %409, %405, %350
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %7, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %8, align 4
  br label %582

369:                                              ; preds = %352
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %7, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #9
  br label %582

373:                                              ; preds = %353
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %7, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %8, align 4
  br label %404

377:                                              ; preds = %356
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %7, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %8, align 4
  br label %400

381:                                              ; preds = %357
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %7, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %8, align 4
  br label %399

385:                                              ; preds = %358
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %7, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %8, align 4
  br label %398

389:                                              ; preds = %361, %360
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %7, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %8, align 4
  br label %397

393:                                              ; preds = %362
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %7, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %397

397:                                              ; preds = %393, %389
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #9
  br label %398

398:                                              ; preds = %397, %385
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #9
  br label %399

399:                                              ; preds = %398, %381
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %400

400:                                              ; preds = %399, %377
  %401 = load i1, ptr %38, align 1
  br i1 %401, label %402, label %403

402:                                              ; preds = %400
  call void @_ZdlPvm(ptr noundef %355, i64 noundef 112) #11
  br label %403

403:                                              ; preds = %402, %400
  br label %404

404:                                              ; preds = %403, %373
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %582

405:                                              ; preds = %327
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = invoke noundef zeroext i1 @_ZN11TokenStream10getTokenIfE10eTokenType(ptr noundef nonnull align 8 dereferenceable(176) %406, i32 noundef 64)
          to label %408 unwind label %365

408:                                              ; preds = %405
  br i1 %407, label %409, label %417

409:                                              ; preds = %408
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %39, i32 noundef 27)
          to label %411 unwind label %365

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

412:                                              ; preds = %411
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #9
  br label %477

413:                                              ; preds = %411
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %7, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #9
  br label %582

417:                                              ; preds = %408
  br label %418

418:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 88, ptr %40) #9
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind writable sret(%class.Token) align 8 %40, ptr noundef nonnull align 8 dereferenceable(176) %419)
          to label %420 unwind label %446

420:                                              ; preds = %418
  %421 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %40)
          to label %422 unwind label %450

422:                                              ; preds = %420
  %423 = invoke noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %421)
          to label %424 unwind label %450

424:                                              ; preds = %422
  %425 = icmp ne i32 %423, 27
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %40) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %40) #9
  br i1 %425, label %426, label %474

426:                                              ; preds = %424
  br label %427

427:                                              ; preds = %426
  %428 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %429 unwind label %365

429:                                              ; preds = %427
  br i1 %428, label %430, label %455

430:                                              ; preds = %429
  %431 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %431, ptr noundef @__FUNCTION__._Z12Parse_ExprFCR11TokenStream)
          to label %433 unwind label %365

433:                                              ; preds = %430
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %432, ptr noundef @.str)
          to label %435 unwind label %365

435:                                              ; preds = %433
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef @.str.1)
          to label %437 unwind label %365

437:                                              ; preds = %435
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %436, ptr noundef @.str.2)
          to label %439 unwind label %365

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %438, i32 noundef 1147)
          to label %441 unwind label %365

441:                                              ; preds = %439
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef @_ZSt3decRSt8ios_base)
          to label %443 unwind label %365

443:                                              ; preds = %441
  %444 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %445 unwind label %365

445:                                              ; preds = %443
  br label %455

446:                                              ; preds = %418
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %7, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %8, align 4
  br label %454

450:                                              ; preds = %422, %420
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %7, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %40) #9
  br label %454

454:                                              ; preds = %450, %446
  call void @llvm.lifetime.end.p0(i64 88, ptr %40) #9
  br label %582

455:                                              ; preds = %445, %429
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  store i1 true, ptr %42, align 1
  %458 = call ptr @__cxa_allocate_exception(i64 96) #9
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %41, i32 noundef 27)
          to label %460 unwind label %462

460:                                              ; preds = %457
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %458, ptr noundef nonnull align 8 dereferenceable(176) %459, ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef %41)
          to label %461 unwind label %466

461:                                              ; preds = %460
  store i1 false, ptr %42, align 1
  invoke void @__cxa_throw(ptr %458, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %704 unwind label %466

462:                                              ; preds = %457
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %7, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %8, align 4
  br label %470

466:                                              ; preds = %461, %460
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %7, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %41) #9
  br label %470

470:                                              ; preds = %466, %462
  %471 = load i1, ptr %42, align 1
  br i1 %471, label %472, label %473

472:                                              ; preds = %470
  call void @__cxa_free_exception(ptr %458) #9
  br label %473

473:                                              ; preds = %472, %470
  br label %582

474:                                              ; preds = %424
  br label %475

475:                                              ; preds = %474
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476, %412
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z22Parse_Path_GenericListR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::PathParams") align 8 %43, ptr noundef nonnull align 8 dereferenceable(176) %478)
          to label %479 unwind label %494

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST8PathNode4argsEv(ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %481 unwind label %498

481:                                              ; preds = %479
  %482 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(25) %480, ptr noundef nonnull align 8 dereferenceable(25) %43) #9
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 112) #10
          to label %485 unwind label %503

485:                                              ; preds = %481
  store i1 true, ptr %48, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %486 unwind label %507

486:                                              ; preds = %485
  invoke void @_ZN3AST8PathNodeC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %46, ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %487 unwind label %511

487:                                              ; preds = %486
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind writable sret(%"class.std::vector.5") align 8 %47, ptr noundef nonnull align 8 dereferenceable(176) %488)
          to label %489 unwind label %515

489:                                              ; preds = %487
  invoke void @_ZN3AST19ExprNode_CallMethodC2ENS_9ExprNodePENS_8PathNodeESt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(112) %484, ptr noundef %45, ptr noundef %46, ptr noundef %47)
          to label %490 unwind label %519

490:                                              ; preds = %489
  store i1 false, ptr %48, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %44, ptr noundef nonnull align 8 dereferenceable(176) %483, ptr noundef %484)
          to label %491 unwind label %519

491:                                              ; preds = %490
  %492 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %493 unwind label %523

493:                                              ; preds = %491
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %581

494:                                              ; preds = %477
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %7, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %8, align 4
  br label %502

498:                                              ; preds = %479
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %7, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %8, align 4
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %43) #9
  br label %502

502:                                              ; preds = %498, %494
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %582

503:                                              ; preds = %481
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %7, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %8, align 4
  br label %534

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

511:                                              ; preds = %486
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %7, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %8, align 4
  br label %529

515:                                              ; preds = %487
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %7, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %8, align 4
  br label %528

519:                                              ; preds = %490, %489
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %7, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %8, align 4
  br label %527

523:                                              ; preds = %491
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %7, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  br label %527

527:                                              ; preds = %523, %519
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #9
  br label %528

528:                                              ; preds = %527, %515
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #9
  br label %529

529:                                              ; preds = %528, %511
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %530

530:                                              ; preds = %529, %507
  %531 = load i1, ptr %48, align 1
  br i1 %531, label %532, label %533

532:                                              ; preds = %530
  call void @_ZdlPvm(ptr noundef %484, i64 noundef 112) #11
  br label %533

533:                                              ; preds = %532, %530
  br label %534

534:                                              ; preds = %533, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %582

535:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %538 unwind label %550

538:                                              ; preds = %535
  store i1 true, ptr %52, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %539 unwind label %554

539:                                              ; preds = %538
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8PathNode4nameEv(ptr noundef nonnull align 8 dereferenceable(40) %29)
          to label %541 unwind label %558

541:                                              ; preds = %539
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %540)
          to label %542 unwind label %558

542:                                              ; preds = %541
  invoke void @_ZN3AST14ExprNode_FieldC2ENS_9ExprNodePE8RcString(ptr noundef nonnull align 8 dereferenceable(56) %537, ptr noundef %50, ptr noundef %51)
          to label %543 unwind label %562

543:                                              ; preds = %542
  store i1 false, ptr %52, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %49, ptr noundef nonnull align 8 dereferenceable(176) %536, ptr noundef %537)
          to label %544 unwind label %562

544:                                              ; preds = %543
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %546 unwind label %566

546:                                              ; preds = %544
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  %547 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %53, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %548 unwind label %365

548:                                              ; preds = %546
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %547, ptr noundef %53)
          to label %549 unwind label %577

549:                                              ; preds = %548
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #9
  br label %581

550:                                              ; preds = %535
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %7, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %8, align 4
  br label %576

554:                                              ; preds = %538
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %7, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %8, align 4
  br label %572

558:                                              ; preds = %541, %539
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %7, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %8, align 4
  br label %571

562:                                              ; preds = %543, %542
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %7, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %8, align 4
  br label %570

566:                                              ; preds = %544
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %7, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  br label %570

570:                                              ; preds = %566, %562
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  br label %571

571:                                              ; preds = %570, %558
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br label %572

572:                                              ; preds = %571, %554
  %573 = load i1, ptr %52, align 1
  br i1 %573, label %574, label %575

574:                                              ; preds = %572
  call void @_ZdlPvm(ptr noundef %537, i64 noundef 56) #11
  br label %575

575:                                              ; preds = %574, %572
  br label %576

576:                                              ; preds = %575, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %582

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

581:                                              ; preds = %549, %493, %364
  store i32 9, ptr %11, align 4
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #9
  br label %680

582:                                              ; preds = %577, %576, %534, %502, %473, %454, %413, %404, %369, %365, %349
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #9
  br label %583

583:                                              ; preds = %582, %340, %328
  call void @llvm.lifetime.end.p0(i64 40, ptr %29) #9
  br label %693

584:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %585 = load ptr, ptr %4, align 8, !tbaa !5
  %586 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %587 unwind label %604

587:                                              ; preds = %584
  store i1 true, ptr %60, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %588 unwind label %608

588:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #9
  call void @llvm.lifetime.start.p0(i64 376, ptr %58) #9
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %58)
          to label %589 unwind label %612

589:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #9
  %590 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %591 unwind label %616

591:                                              ; preds = %589
  %592 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 0
  %593 = extractvalue { i64, i64 } %590, 0
  store i64 %593, ptr %592, align 8
  %594 = getelementptr inbounds { i64, i64 }, ptr %59, i32 0, i32 1
  %595 = extractvalue { i64, i64 } %590, 1
  store i64 %595, ptr %594, align 8
  %596 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE4U128EOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %58, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %597 unwind label %616

597:                                              ; preds = %591
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(112) %596)
          to label %598 unwind label %616

598:                                              ; preds = %597
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %599 unwind label %620

599:                                              ; preds = %598
  invoke void @_ZN3AST14ExprNode_FieldC2ENS_9ExprNodePE8RcString(ptr noundef nonnull align 8 dereferenceable(56) %586, ptr noundef %55, ptr noundef %56)
          to label %600 unwind label %624

600:                                              ; preds = %599
  store i1 false, ptr %60, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %54, ptr noundef nonnull align 8 dereferenceable(176) %585, ptr noundef %586)
          to label %601 unwind label %624

601:                                              ; preds = %600
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %603 unwind label %628

603:                                              ; preds = %601
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %58) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %680

604:                                              ; preds = %584
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %7, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %8, align 4
  br label %640

608:                                              ; preds = %587
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %7, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %8, align 4
  br label %636

612:                                              ; preds = %588
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %7, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %8, align 4
  br label %635

616:                                              ; preds = %597, %591, %589
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %7, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %8, align 4
  br label %634

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

624:                                              ; preds = %600, %599
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %7, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %8, align 4
  br label %632

628:                                              ; preds = %601
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %7, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  br label %632

632:                                              ; preds = %628, %624
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %633

633:                                              ; preds = %632, %620
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %634

634:                                              ; preds = %633, %616
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %58) #9
  br label %635

635:                                              ; preds = %634, %612
  call void @llvm.lifetime.end.p0(i64 376, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  br label %636

636:                                              ; preds = %635, %608
  %637 = load i1, ptr %60, align 1
  br i1 %637, label %638, label %639

638:                                              ; preds = %636
  call void @_ZdlPvm(ptr noundef %586, i64 noundef 56) #11
  br label %639

639:                                              ; preds = %638, %636
  br label %640

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

641:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %644 unwind label %650

644:                                              ; preds = %641
  store i1 true, ptr %63, align 1
  invoke void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %645 unwind label %654

645:                                              ; preds = %644
  invoke void @_ZN3AST14ExprNode_UniOpC2ENS0_4TypeENS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(56) %643, i32 noundef 8, ptr noundef %62)
          to label %646 unwind label %658

646:                                              ; preds = %645
  store i1 false, ptr %63, align 1
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %61, ptr noundef nonnull align 8 dereferenceable(176) %642, ptr noundef %643)
          to label %647 unwind label %658

647:                                              ; preds = %646
  %648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %649 unwind label %662

649:                                              ; preds = %647
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %680

650:                                              ; preds = %641
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %7, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %8, align 4
  br label %671

654:                                              ; preds = %644
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %7, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %8, align 4
  br label %667

658:                                              ; preds = %646, %645
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %7, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %8, align 4
  br label %666

662:                                              ; preds = %647
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %7, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %8, align 4
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  br label %666

666:                                              ; preds = %662, %658
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %667

667:                                              ; preds = %666, %654
  %668 = load i1, ptr %63, align 1
  br i1 %668, label %669, label %670

669:                                              ; preds = %667
  call void @_ZdlPvm(ptr noundef %643, i64 noundef 56) #11
  br label %670

670:                                              ; preds = %669, %667
  br label %671

671:                                              ; preds = %670, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %693

672:                                              ; preds = %305
  %673 = call ptr @__cxa_allocate_exception(i64 96) #9
  %674 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %673, ptr noundef nonnull align 8 dereferenceable(176) %674, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %675 unwind label %676

675:                                              ; preds = %672
  invoke void @__cxa_throw(ptr %673, ptr @_ZTIN10ParseError10UnexpectedE, ptr @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %704 unwind label %101

676:                                              ; preds = %672
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %7, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %8, align 4
  call void @__cxa_free_exception(ptr %673) #9
  br label %693

680:                                              ; preds = %649, %603, %581
  br label %689

681:                                              ; preds = %74
  %682 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %64, ptr noundef nonnull align 8 dereferenceable(88) %6)
          to label %683 unwind label %101

683:                                              ; preds = %681
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %682, ptr noundef %64)
          to label %684 unwind label %685

684:                                              ; preds = %683
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %64) #9
  store i1 true, ptr %5, align 1
  store i32 1, ptr %11, align 4
  br label %690

685:                                              ; preds = %683
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %7, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %8, align 4
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %64) #9
  br label %693

689:                                              ; preds = %680, %276, %267, %122
  store i32 0, ptr %11, align 4
  br label %690

690:                                              ; preds = %689, %684, %166, %100
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #9
  %691 = load i32, ptr %11, align 4
  switch i32 %691, label %695 [
    i32 0, label %692
  ]

692:                                              ; preds = %690
  br label %66, !llvm.loop !16

693:                                              ; preds = %685, %676, %671, %640, %583, %314, %298, %264, %245, %236, %167, %153, %123, %105, %101, %87
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  br label %694

694:                                              ; preds = %693, %75
  call void @llvm.lifetime.end.p0(i64 88, ptr %6) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  br label %699

695:                                              ; preds = %690
  %696 = load i1, ptr %5, align 1
  br i1 %696, label %698, label %697

697:                                              ; preds = %695
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  br label %698

698:                                              ; preds = %697, %695
  ret void

699:                                              ; preds = %694
  %700 = load ptr, ptr %7, align 8
  %701 = load i32, ptr %8, align 4
  %702 = insertvalue { ptr, i32 } poison, ptr %700, 0
  %703 = insertvalue { ptr, i32 } %702, i32 %701, 1
  resume { ptr, i32 } %703

704:                                              ; preds = %675, %461, %252
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z22Parse_Path_GenericListR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(176)) #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

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

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

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

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

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

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


; 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::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::ExprNodeP, std::allocator<AST::ExprNodeP>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.AST::PathNode" = type { %class.RcString, %"struct.AST::PathParams" }
%"struct.AST::PathParams" = type <{ %"class.std::vector.156", i8, [7 x i8] }>
%"class.std::vector.156" = type { %"struct.std::_Vector_base.157" }
%"struct.std::_Vector_base.157" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::PathParamEnt, std::allocator<AST::PathParamEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.U128 = type { i64, i64 }

@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__._Z12Parse_ExprFCR11TokenStream = external hidden unnamed_addr constant [13 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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 #5

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12Parse_ExprFCR11TokenStream(ptr dead_on_unwind noalias writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.Token, align 8
  %4 = alloca %class.Token, align 8
  %5 = alloca %class.Token, align 8
  %6 = alloca %class.Token, align 8
  %7 = alloca %"class.AST::ExprNodeP", align 8
  %8 = alloca %"class.AST::ExprNodeP", align 8
  %9 = alloca %"class.std::vector.5", align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca %"class.AST::ExprNodeP", align 8
  %12 = alloca %"class.AST::ExprNodeP", align 8
  %13 = alloca %"class.AST::ExprNodeP", align 8
  %14 = alloca %class.Token, align 8
  %15 = alloca %class.Token, align 8
  %16 = alloca %"class.AST::ExprNodeP", align 8
  %17 = alloca %"class.AST::ExprNodeP", align 8
  %18 = alloca %class.Token, align 8
  %19 = alloca %"class.AST::PathNode", align 8
  %20 = alloca %class.RcString, align 8
  %21 = alloca %"struct.AST::PathParams", align 8
  %22 = alloca %class.Token, align 8
  %23 = alloca %class.Token, align 8
  %24 = alloca %"class.AST::ExprNodeP", align 8
  %25 = alloca %"class.AST::ExprNodeP", align 8
  %26 = alloca %"class.AST::PathNode", align 8
  %27 = alloca %"class.std::vector.5", align 8
  %28 = alloca %class.Token, align 8
  %29 = alloca %class.Token, align 8
  %30 = alloca %class.Token, align 8
  %31 = alloca %"struct.AST::PathParams", align 8
  %32 = alloca %"class.AST::ExprNodeP", align 8
  %33 = alloca %"class.AST::ExprNodeP", align 8
  %34 = alloca %"class.AST::PathNode", align 8
  %35 = alloca %"class.std::vector.5", align 8
  %36 = alloca %"class.AST::ExprNodeP", align 8
  %37 = alloca %"class.AST::ExprNodeP", align 8
  %38 = alloca %class.RcString, align 8
  %39 = alloca %class.Token, align 8
  %40 = alloca %"class.AST::ExprNodeP", align 8
  %41 = alloca %"class.AST::ExprNodeP", align 8
  %42 = alloca %class.RcString, align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %45 = alloca %class.U128, align 8
  %46 = alloca %"class.AST::ExprNodeP", align 8
  %47 = alloca %"class.AST::ExprNodeP", align 8
  %48 = alloca %class.Token, align 8
  tail call void @_Z13Parse_ExprValR11TokenStream(ptr dead_on_unwind writable sret(%"class.AST::ExprNodeP") align 8 %0, ptr noundef nonnull align 8 dereferenceable(176) %1)
  %49 = getelementptr inbounds i8, ptr %45, i64 8
  br label %50

50:                                               ; preds = %350, %2
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %3) #9
  invoke void @_ZN5TokenC1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %51 unwind label %56

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

52:                                               ; preds = %51
  %53 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(88) %4)
          to label %54 unwind label %60

54:                                               ; preds = %52
  %55 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %53)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #9
  switch i32 %55, label %346 [
    i32 23, label %63
    i32 29, label %90
    i32 69, label %149
    i32 46, label %162
  ]

56:                                               ; preds = %50
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %352

58:                                               ; preds = %51
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %62

60:                                               ; preds = %52
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %4) #9
  br label %62

62:                                               ; preds = %60, %58
  %.pn = phi { ptr, i32 } [ %61, %60 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %4) #9
  br label %351

63:                                               ; preds = %54
  %64 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %65 = getelementptr inbounds i8, ptr %64, i64 1
  %66 = load i8, ptr %65, align 1, !tbaa !5, !range !11, !noundef !12
  %67 = trunc nuw i8 %66 to i1
  br i1 %67, label %68, label %72

68:                                               ; preds = %63
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %5, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %69 unwind label %.loopexit.split-lp182

69:                                               ; preds = %68
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %5)
          to label %353 unwind label %70

.loopexit181:                                     ; preds = %72
  %lpad.loopexit183 = landingpad { ptr, i32 }
          cleanup
  br label %351

.loopexit.split-lp182:                            ; preds = %68, %95, %110, %113, %116, %118, %120, %122, %124, %126, %343, %346
  %lpad.loopexit.split-lp184 = landingpad { ptr, i32 }
          cleanup
  br label %351

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

72:                                               ; preds = %63
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %6, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %73 unwind label %.loopexit181

73:                                               ; preds = %72
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %6)
          to label %74 unwind label %81

74:                                               ; preds = %73
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %75 = invoke noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #10
          to label %76 unwind label %83

76:                                               ; preds = %74
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %0)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #9
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.5") align 8 %9, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %77 unwind label %.thread

77:                                               ; preds = %76
  invoke void @_ZN3AST19ExprNode_CallObjectC2ENS_9ExprNodePEOSt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(72) %75, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %78 unwind label %86

78:                                               ; preds = %77
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %7, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %75)
          to label %79 unwind label %86

79:                                               ; preds = %78
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %7)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %350

81:                                               ; preds = %73
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %6) #9
  br label %351

83:                                               ; preds = %74
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %89

.thread:                                          ; preds = %76
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br label %88

86:                                               ; preds = %77, %78
  %.060 = phi i1 [ false, %78 ], [ true, %77 ]
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br i1 %.060, label %88, label %89

88:                                               ; preds = %.thread, %86
  %.pn136144 = phi { ptr, i32 } [ %85, %.thread ], [ %87, %86 ]
  call void @_ZdlPvm(ptr noundef nonnull %75, i64 noundef 72) #11
  br label %89

89:                                               ; preds = %86, %88, %83
  %.pn136.pn = phi { ptr, i32 } [ %.pn136144, %88 ], [ %87, %86 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %351

90:                                               ; preds = %54
  %91 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN11TokenStream11parse_stateEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %92 = getelementptr inbounds i8, ptr %91, i64 1
  %93 = load i8, ptr %92, align 1, !tbaa !5, !range !11, !noundef !12
  %94 = trunc nuw i8 %93 to i1
  br i1 %94, label %95, label %99

95:                                               ; preds = %90
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %10, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %96 unwind label %.loopexit.split-lp182

96:                                               ; preds = %95
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %10)
          to label %353 unwind label %97

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

99:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %100 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %101 unwind label %128

101:                                              ; preds = %99
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_Z11Parse_Expr0R11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %13, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %102 unwind label %.thread145

102:                                              ; preds = %101
  invoke void @_ZN3AST14ExprNode_IndexC2ENS_9ExprNodePES1_(ptr noundef nonnull align 8 dereferenceable(56) %100, ptr noundef nonnull %12, ptr noundef nonnull %13)
          to label %103 unwind label %131

103:                                              ; preds = %102
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %11, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %100)
          to label %104 unwind label %131

104:                                              ; preds = %103
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %14) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %14, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %106 unwind label %135

106:                                              ; preds = %104
  %107 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(88) %14)
          to label %108 unwind label %137

108:                                              ; preds = %106
  %109 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %107)
  %.not133 = icmp eq i32 %109, 30
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #9
  br i1 %.not133, label %350, label %110

110:                                              ; preds = %108
  %111 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %112 unwind label %.loopexit.split-lp182

112:                                              ; preds = %110
  br i1 %111, label %113, label %140

113:                                              ; preds = %112
  %114 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %114, ptr noundef nonnull @__FUNCTION__._Z12Parse_ExprFCR11TokenStream)
          to label %116 unwind label %.loopexit.split-lp182

116:                                              ; preds = %113
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @.str)
          to label %118 unwind label %.loopexit.split-lp182

118:                                              ; preds = %116
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull @.str.1)
          to label %120 unwind label %.loopexit.split-lp182

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull @.str.2)
          to label %122 unwind label %.loopexit.split-lp182

122:                                              ; preds = %120
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %121, i32 noundef 1123)
          to label %124 unwind label %.loopexit.split-lp182

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %126 unwind label %.loopexit.split-lp182

126:                                              ; preds = %124
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %140 unwind label %.loopexit.split-lp182

128:                                              ; preds = %99
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %134

.thread145:                                       ; preds = %101
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br label %133

131:                                              ; preds = %102, %103
  %.058 = phi i1 [ false, %103 ], [ true, %102 ]
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br i1 %.058, label %133, label %134

133:                                              ; preds = %.thread145, %131
  %.pn128148 = phi { ptr, i32 } [ %130, %.thread145 ], [ %132, %131 ]
  call void @_ZdlPvm(ptr noundef nonnull %100, i64 noundef 56) #11
  br label %134

134:                                              ; preds = %131, %133, %128
  %.pn128.pn = phi { ptr, i32 } [ %.pn128148, %133 ], [ %132, %131 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %351

135:                                              ; preds = %104
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %139

137:                                              ; preds = %106
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %14) #9
  br label %139

139:                                              ; preds = %137, %135
  %.pn131 = phi { ptr, i32 } [ %138, %137 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %14) #9
  br label %351

140:                                              ; preds = %126, %112
  %141 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %15, i32 noundef 30)
          to label %142 unwind label %.thread149

142:                                              ; preds = %140
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %141, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull %15)
          to label %144 unwind label %.thread153

.thread153:                                       ; preds = %142
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #9
  br label %148

144:                                              ; preds = %142
  invoke void @__cxa_throw(ptr nonnull %141, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %354 unwind label %146

.thread149:                                       ; preds = %140
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %148

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

148:                                              ; preds = %.thread153, %.thread149
  %.pn134152 = phi { ptr, i32 } [ %145, %.thread149 ], [ %143, %.thread153 ]
  call void @__cxa_free_exception(ptr %141) #9
  br label %351

149:                                              ; preds = %54
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %150 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %151 unwind label %155

151:                                              ; preds = %149
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_ZN3AST14ExprNode_UniOpC2ENS0_4TypeENS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(56) %150, i32 noundef 7, ptr noundef nonnull %17)
          to label %152 unwind label %159

152:                                              ; preds = %151
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %16, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %150)
          to label %153 unwind label %157

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

155:                                              ; preds = %149
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %161

157:                                              ; preds = %152
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %161

159:                                              ; preds = %151
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @_ZdlPvm(ptr noundef nonnull %150, i64 noundef 56) #11
  br label %161

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

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

163:                                              ; preds = %162
  %164 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(88) %18)
          to label %165 unwind label %169

165:                                              ; preds = %163
  %166 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %164)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #9
  switch i32 %166, label %341 [
    i32 14, label %172
    i32 16, label %300
    i32 123, label %328
  ]

167:                                              ; preds = %162
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %171

169:                                              ; preds = %163
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %18) #9
  br label %171

171:                                              ; preds = %169, %167
  %.pn98 = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #9
  br label %351

172:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %19) #9
  %173 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK5Token5identEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %174 unwind label %181

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %173, i64 8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %175)
  call void @_ZN3AST10PathParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(25) %21)
  invoke void @_ZN3AST8PathNodeC1E8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull %20, ptr noundef nonnull %21)
          to label %176 unwind label %183

176:                                              ; preds = %174
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %21) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %22) #9
  invoke void @_ZN11TokenStream8getTokenEv(ptr dead_on_unwind nonnull writable sret(%class.Token) align 8 %22, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %177 unwind label %185

177:                                              ; preds = %176
  %178 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(88) %22)
          to label %179 unwind label %187

179:                                              ; preds = %177
  %180 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %178)
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %22) #9
  switch i32 %180, label %280 [
    i32 23, label %190
    i32 34, label %212
  ]

181:                                              ; preds = %172
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %299

183:                                              ; preds = %174
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %21) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %299

185:                                              ; preds = %176
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %177
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %22) #9
  br label %189

189:                                              ; preds = %187, %185
  %.pn107 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %22) #9
  br label %298

190:                                              ; preds = %179
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %23, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %191 unwind label %.loopexit

191:                                              ; preds = %190
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %23)
          to label %192 unwind label %200

192:                                              ; preds = %191
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %193 = invoke noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #10
          to label %194 unwind label %202

194:                                              ; preds = %192
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_ZN3AST8PathNodeC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull align 8 dereferenceable(40) %19)
          to label %195 unwind label %.thread157

195:                                              ; preds = %194
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.5") align 8 %27, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %196 unwind label %205

196:                                              ; preds = %195
  invoke void @_ZN3AST19ExprNode_CallMethodC2ENS_9ExprNodePENS_8PathNodeESt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(112) %193, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27)
          to label %197 unwind label %207

197:                                              ; preds = %196
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %24, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %193)
          to label %198 unwind label %207

198:                                              ; preds = %197
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %24)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %297

.loopexit:                                        ; preds = %190, %212, %215, %285
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %298

.loopexit.split-lp:                               ; preds = %225, %228, %231, %233, %235, %237, %239, %241
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %298

200:                                              ; preds = %191
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  br label %298

202:                                              ; preds = %192
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %211

.thread157:                                       ; preds = %194
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br label %210

205:                                              ; preds = %195
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

207:                                              ; preds = %197, %196
  %.052 = phi i1 [ false, %197 ], [ true, %196 ]
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  br label %209

209:                                              ; preds = %205, %207
  %.pn117 = phi { ptr, i32 } [ %208, %207 ], [ %206, %205 ]
  %.153 = phi i1 [ %.052, %207 ], [ true, %205 ]
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %26) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  br i1 %.153, label %210, label %211

210:                                              ; preds = %.thread157, %209
  %.pn117.pn160 = phi { ptr, i32 } [ %204, %.thread157 ], [ %.pn117, %209 ]
  call void @_ZdlPvm(ptr noundef nonnull %193, i64 noundef 112) #11
  br label %211

211:                                              ; preds = %209, %210, %202
  %.pn117.pn.pn = phi { ptr, i32 } [ %.pn117.pn160, %210 ], [ %.pn117, %209 ], [ %203, %202 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %298

212:                                              ; preds = %179
  %213 = invoke noundef zeroext i1 @_ZN11TokenStream10getTokenIfE10eTokenType(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef 64)
          to label %214 unwind label %.loopexit

214:                                              ; preds = %212
  br i1 %213, label %215, label %220

215:                                              ; preds = %214
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %28, i32 noundef 27)
          to label %216 unwind label %.loopexit

216:                                              ; preds = %215
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %28)
          to label %217 unwind label %218

217:                                              ; preds = %216
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #9
  br label %257

218:                                              ; preds = %216
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %28) #9
  br label %298

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

221:                                              ; preds = %220
  %222 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN5TokenaSEOS_(ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(88) %29)
          to label %223 unwind label %245

223:                                              ; preds = %221
  %224 = call noundef i32 @_ZNK5Token4typeEv(ptr noundef nonnull align 8 dereferenceable(88) %222)
  %.not = icmp eq i32 %224, 27
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %29) #9
  br i1 %.not, label %257, label %225

225:                                              ; preds = %223
  %226 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %227 unwind label %.loopexit.split-lp

227:                                              ; preds = %225
  br i1 %226, label %228, label %248

228:                                              ; preds = %227
  %229 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !13
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %229, ptr noundef nonnull @__FUNCTION__._Z12Parse_ExprFCR11TokenStream)
          to label %231 unwind label %.loopexit.split-lp

231:                                              ; preds = %228
  %232 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %230, ptr noundef nonnull @.str)
          to label %233 unwind label %.loopexit.split-lp

233:                                              ; preds = %231
  %234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull @.str.1)
          to label %235 unwind label %.loopexit.split-lp

235:                                              ; preds = %233
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull @.str.2)
          to label %237 unwind label %.loopexit.split-lp

237:                                              ; preds = %235
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %236, i32 noundef 1147)
          to label %239 unwind label %.loopexit.split-lp

239:                                              ; preds = %237
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %241 unwind label %.loopexit.split-lp

241:                                              ; preds = %239
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %248 unwind label %.loopexit.split-lp

243:                                              ; preds = %220
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %221
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %29) #9
  br label %247

247:                                              ; preds = %245, %243
  %.pn109 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %29) #9
  br label %298

248:                                              ; preds = %241, %227
  %249 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN5TokenC1E10eTokenType(ptr noundef nonnull align 8 dereferenceable(88) %30, i32 noundef 27)
          to label %250 unwind label %.thread161

250:                                              ; preds = %248
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5TokenS4_(ptr noundef nonnull align 8 dereferenceable(96) %249, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull %30)
          to label %252 unwind label %.thread165

.thread165:                                       ; preds = %250
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #9
  br label %256

252:                                              ; preds = %250
  invoke void @__cxa_throw(ptr nonnull %249, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %354 unwind label %254

.thread161:                                       ; preds = %248
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %256

254:                                              ; preds = %252
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %30) #9
  br label %298

256:                                              ; preds = %.thread165, %.thread161
  %.pn111164 = phi { ptr, i32 } [ %253, %.thread161 ], [ %251, %.thread165 ]
  call void @__cxa_free_exception(ptr %249) #9
  br label %298

257:                                              ; preds = %223, %217
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  invoke void @_Z22Parse_Path_GenericListR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"struct.AST::PathParams") align 8 %31, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %258 unwind label %268

258:                                              ; preds = %257
  %259 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST8PathNode4argsEv(ptr noundef nonnull align 8 dereferenceable(40) %19)
  %260 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZN3AST10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(25) %259, ptr noundef nonnull align 8 dereferenceable(25) %31) #9
  call void @_ZN3AST10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  %261 = invoke noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #10
          to label %262 unwind label %270

262:                                              ; preds = %258
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_ZN3AST8PathNodeC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %34, ptr noundef nonnull align 8 dereferenceable(40) %19)
          to label %263 unwind label %.thread167

263:                                              ; preds = %262
  invoke void @_Z15Parse_ParenListR11TokenStream(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.5") align 8 %35, ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %264 unwind label %273

264:                                              ; preds = %263
  invoke void @_ZN3AST19ExprNode_CallMethodC2ENS_9ExprNodePENS_8PathNodeESt6vectorIS1_SaIS1_EE(ptr noundef nonnull align 8 dereferenceable(112) %261, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35)
          to label %265 unwind label %275

265:                                              ; preds = %264
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %32, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %261)
          to label %266 unwind label %275

266:                                              ; preds = %265
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %32)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  br label %297

268:                                              ; preds = %257
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %298

270:                                              ; preds = %258
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %279

.thread167:                                       ; preds = %262
  %272 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br label %278

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

275:                                              ; preds = %265, %264
  %.047 = phi i1 [ false, %265 ], [ true, %264 ]
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3AST9ExprNodePESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  br label %277

277:                                              ; preds = %273, %275
  %.pn113 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  %.148 = phi i1 [ %.047, %275 ], [ true, %273 ]
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br i1 %.148, label %278, label %279

278:                                              ; preds = %.thread167, %277
  %.pn113.pn170 = phi { ptr, i32 } [ %272, %.thread167 ], [ %.pn113, %277 ]
  call void @_ZdlPvm(ptr noundef nonnull %261, i64 noundef 112) #11
  br label %279

279:                                              ; preds = %277, %278, %270
  %.pn113.pn.pn = phi { ptr, i32 } [ %.pn113.pn170, %278 ], [ %.pn113, %277 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  br label %298

280:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  %281 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %282 unwind label %289

282:                                              ; preds = %280
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %0)
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3AST8PathNode4nameEv(ptr noundef nonnull align 8 dereferenceable(40) %19)
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %283)
  invoke void @_ZN3AST14ExprNode_FieldC2ENS_9ExprNodePE8RcString(ptr noundef nonnull align 8 dereferenceable(56) %281, ptr noundef nonnull %37, ptr noundef nonnull %38)
          to label %284 unwind label %291

284:                                              ; preds = %282
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %36, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %281)
          to label %285 unwind label %291

285:                                              ; preds = %284
  %286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %36)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %39, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %287 unwind label %.loopexit

287:                                              ; preds = %285
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %39)
          to label %288 unwind label %295

288:                                              ; preds = %287
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #9
  br label %297

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

291:                                              ; preds = %284, %282
  %.046 = phi i1 [ false, %284 ], [ true, %282 ]
  %292 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %.046, label %293, label %294

293:                                              ; preds = %291
  call void @_ZdlPvm(ptr noundef nonnull %281, i64 noundef 56) #11
  br label %294

294:                                              ; preds = %291, %293, %289
  %.pn121 = phi { ptr, i32 } [ %292, %293 ], [ %292, %291 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %298

295:                                              ; preds = %287
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #9
  br label %298

297:                                              ; preds = %288, %266, %198
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #9
  br label %350

298:                                              ; preds = %.loopexit, %.loopexit.split-lp, %254, %256, %295, %294, %279, %268, %247, %218, %211, %200, %189
  %.pn123 = phi { ptr, i32 } [ %296, %295 ], [ %.pn121, %294 ], [ %.pn113.pn.pn, %279 ], [ %269, %268 ], [ %219, %218 ], [ %.pn111164, %256 ], [ %255, %254 ], [ %.pn109, %247 ], [ %.pn117.pn.pn, %211 ], [ %201, %200 ], [ %.pn107, %189 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3AST8PathNodeD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #9
  br label %299

299:                                              ; preds = %298, %183, %181
  %.pn123.pn = phi { ptr, i32 } [ %.pn123, %298 ], [ %184, %183 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #9
  br label %351

300:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %301 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %302 unwind label %315

302:                                              ; preds = %300
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %0)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #9
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %44) #9
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44)
          to label %303 unwind label %.thread171

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #9
  %304 = invoke { i64, i64 } @_ZNK5Token6intvalEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %305 unwind label %318

305:                                              ; preds = %303
  %306 = extractvalue { i64, i64 } %304, 0
  store i64 %306, ptr %45, align 8
  %307 = extractvalue { i64, i64 } %304, 1
  store i64 %307, ptr %49, align 8
  %308 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE4U128EOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %44, ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %309 unwind label %318

309:                                              ; preds = %305
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(112) %308)
          to label %310 unwind label %318

310:                                              ; preds = %309
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %311 unwind label %320

311:                                              ; preds = %310
  invoke void @_ZN3AST14ExprNode_FieldC2ENS_9ExprNodePE8RcString(ptr noundef nonnull align 8 dereferenceable(56) %301, ptr noundef nonnull %41, ptr noundef nonnull %42)
          to label %312 unwind label %322

312:                                              ; preds = %311
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %40, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %301)
          to label %313 unwind label %322

313:                                              ; preds = %312
  %314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %350

315:                                              ; preds = %300
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %327

.thread171:                                       ; preds = %302
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br label %326

318:                                              ; preds = %309, %305, %303
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %325

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

322:                                              ; preds = %312, %311
  %.045 = phi i1 [ false, %312 ], [ true, %311 ]
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %324

324:                                              ; preds = %322, %320
  %.pn102 = phi { ptr, i32 } [ %323, %322 ], [ %321, %320 ]
  %.1 = phi i1 [ %.045, %322 ], [ true, %320 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %325

325:                                              ; preds = %318, %324
  %.pn102.pn = phi { ptr, i32 } [ %.pn102, %324 ], [ %319, %318 ]
  %.2 = phi i1 [ %.1, %324 ], [ true, %318 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br i1 %.2, label %326, label %327

326:                                              ; preds = %.thread171, %325
  %.pn102.pn.pn174 = phi { ptr, i32 } [ %317, %.thread171 ], [ %.pn102.pn, %325 ]
  call void @_ZdlPvm(ptr noundef nonnull %301, i64 noundef 56) #11
  br label %327

327:                                              ; preds = %325, %326, %315
  %.pn102.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn174, %326 ], [ %.pn102.pn, %325 ], [ %316, %315 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %351

328:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  %329 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %330 unwind label %334

330:                                              ; preds = %328
  call void @_ZN3AST9ExprNodePC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_ZN3AST14ExprNode_UniOpC2ENS0_4TypeENS_9ExprNodePE(ptr noundef nonnull align 8 dereferenceable(56) %329, i32 noundef 8, ptr noundef nonnull %47)
          to label %331 unwind label %338

331:                                              ; preds = %330
  invoke void @_ZL12mk_exprnodepRK11TokenStreamPN3AST8ExprNodeE(ptr dead_on_unwind nonnull writable sret(%"class.AST::ExprNodeP") align 8 %46, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %329)
          to label %332 unwind label %336

332:                                              ; preds = %331
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3AST9ExprNodePaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %46)
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %350

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

336:                                              ; preds = %331
  %337 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br label %340

338:                                              ; preds = %330
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @_ZdlPvm(ptr noundef nonnull %329, i64 noundef 56) #11
  br label %340

340:                                              ; preds = %336, %338, %334
  %.pn100 = phi { ptr, i32 } [ %339, %338 ], [ %337, %336 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %351

341:                                              ; preds = %165
  %342 = call ptr @__cxa_allocate_exception(i64 96) #9
  invoke void @_ZN10ParseError10UnexpectedC1ERK11TokenStreamRK5Token(ptr noundef nonnull align 8 dereferenceable(96) %342, ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %343 unwind label %344

343:                                              ; preds = %341
  invoke void @__cxa_throw(ptr nonnull %342, ptr nonnull @_ZTIN10ParseError10UnexpectedE, ptr nonnull @_ZN10ParseError10UnexpectedD1Ev) #12
          to label %354 unwind label %.loopexit.split-lp182

344:                                              ; preds = %341
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %342) #9
  br label %351

346:                                              ; preds = %54
  invoke void @_ZN5TokenC2EOS_(ptr noundef nonnull align 8 dereferenceable(88) %48, ptr noundef nonnull align 8 dereferenceable(88) %3)
          to label %347 unwind label %.loopexit.split-lp182

347:                                              ; preds = %346
  invoke void @_ZN11TokenStream7putbackE5Token(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull %48)
          to label %353 unwind label %348

348:                                              ; preds = %347
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %48) #9
  br label %351

350:                                              ; preds = %79, %153, %108, %332, %313, %297
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %3) #9
  br label %50, !llvm.loop !15

351:                                              ; preds = %.loopexit181, %.loopexit.split-lp182, %146, %148, %348, %344, %340, %327, %299, %171, %161, %139, %134, %97, %89, %81, %70, %62
  %.pn139 = phi { ptr, i32 } [ %349, %348 ], [ %345, %344 ], [ %.pn100, %340 ], [ %.pn102.pn.pn.pn, %327 ], [ %.pn123.pn, %299 ], [ %.pn98, %171 ], [ %.pn126, %161 ], [ %98, %97 ], [ %.pn134152, %148 ], [ %147, %146 ], [ %.pn131, %139 ], [ %.pn128.pn, %134 ], [ %71, %70 ], [ %.pn136.pn, %89 ], [ %82, %81 ], [ %.pn, %62 ], [ %lpad.loopexit183, %.loopexit181 ], [ %lpad.loopexit.split-lp184, %.loopexit.split-lp182 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #9
  br label %352

352:                                              ; preds = %351, %56
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %351 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %3) #9
  call void @_ZN3AST9ExprNodePD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #9
  resume { ptr, i32 } %.pn139.pn

353:                                              ; preds = %347, %96, %69
  %.sink = phi ptr [ %5, %69 ], [ %10, %96 ], [ %48, %347 ]
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %.sink) #9
  call void @_ZN5TokenD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #9
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %3) #9
  ret void

354:                                              ; preds = %343, %252, %144
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z22Parse_Path_GenericListR11TokenStream(ptr dead_on_unwind writable sret(%"struct.AST::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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


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