; LLVM IR from fetlang/fetlang :: src/Parser.ll (ZN6Parser10formBranchERN10SyntaxTree4NodeE)

; 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.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.SyntaxTree::Node" = type { ptr, %class.Token, %"class.std::vector.8" }
%class.Token = type <{ i32, [4 x i8], %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::allocator.5" = type { i8 }
%class.Operator = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::set", %"class.std::map.62" }
%"class.std::set" = type { %"class.std::_Rb_tree.42" }
%"class.std::_Rb_tree.42" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.62" = type { %"class.std::_Rb_tree.63" }
%"class.std::_Rb_tree.63" = type { %"struct.std::_Rb_tree<FetType, std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>, std::_Select1st<std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>>, std::less<FetType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<FetType, std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>, std::_Select1st<std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>>, std::less<FetType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.Grammar = type <{ %"class.std::__cxx11::basic_string", %"class.std::set.68", %"class.std::set.68", i8, [7 x i8] }>
%"class.std::set.68" = type { %"class.std::_Rb_tree.69" }
%"class.std::_Rb_tree.69" = type { %"struct.std::_Rb_tree<Grammar::OperandType, Grammar::OperandType, std::_Identity<Grammar::OperandType>, std::less<Grammar::OperandType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Grammar::OperandType, Grammar::OperandType, std::_Identity<Grammar::OperandType>, std::less<Grammar::OperandType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl" }
%"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl" = type { %"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator.76" = type { i8 }
%class.ComparisonOperator = type { %class.Operator }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl" }
%"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl" = type { %"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Parser = type { %"class.std::vector", %"class.std::vector.0", %"class.__gnu_cxx::__normal_iterator", %"class.SyntaxTree::RootNode", %class.VariableCollection }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.SyntaxTree::RootNode" = type { %"class.SyntaxTree::Node" }
%class.VariableCollection = type { %"class.std::map", %"class.std::vector.16", %"class.std::vector.16" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Variable>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Variable>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Variable>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Variable>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Variable *, std::allocator<Variable *>>::_Vector_impl" }
%"struct.std::_Vector_base<Variable *, std::allocator<Variable *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Variable *, std::allocator<Variable *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Variable *, std::allocator<Variable *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@manager = external constant ptr, align 8
@_ZTI14TokenException = external constant ptr
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [71 x i8], align 1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

declare noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44)) #4

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #4

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

declare void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) #4

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

declare void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(44)) #4

declare ptr @__cxa_allocate_exception(i64)

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #5 align 2

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

declare void @__cxa_free_exception(ptr)

declare noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44)) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef nonnull align 8 dereferenceable(129), ptr, ptr noundef nonnull align 8 dereferenceable(136), ptr, ptr noundef nonnull align 8 dereferenceable(80)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #6

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) #4

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.SyntaxTree::Node", align 8
  %9 = alloca %class.Token, align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.5", align 1
  %15 = alloca i1, align 1
  %16 = alloca ptr, align 8
  %17 = alloca %"class.SyntaxTree::Node", align 8
  %18 = alloca %class.Token, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.5", align 1
  %22 = alloca i1, align 1
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.5", align 1
  %28 = alloca i1, align 1
  %29 = alloca %class.Operator, align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.5", align 1
  %34 = alloca i1, align 1
  %35 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %class.Grammar, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.5", align 1
  %40 = alloca %"class.std::vector.74", align 8
  %41 = alloca %"class.std::initializer_list", align 8
  %42 = alloca [2 x i32], align 4
  %43 = alloca %"class.std::allocator.76", align 1
  %44 = alloca %"class.std::vector.74", align 8
  %45 = alloca %"class.std::initializer_list", align 8
  %46 = alloca [3 x i32], align 4
  %47 = alloca %"class.std::allocator.76", align 1
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca i1, align 1
  %54 = alloca i1, align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca i1, align 1
  %57 = alloca i1, align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca i32, align 4
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca i1, align 1
  %63 = alloca ptr, align 8
  %64 = alloca %"class.SyntaxTree::Node", align 8
  %65 = alloca %class.Token, align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.5", align 1
  %69 = alloca i1, align 1
  %70 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.5", align 1
  %74 = alloca i1, align 1
  %75 = alloca %class.ComparisonOperator, align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator.5", align 1
  %80 = alloca i1, align 1
  %81 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %83 = alloca %class.Grammar, align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.5", align 1
  %86 = alloca %"class.std::vector.74", align 8
  %87 = alloca %"class.std::initializer_list", align 8
  %88 = alloca [1 x i32], align 4
  %89 = alloca %"class.std::allocator.76", align 1
  %90 = alloca %"class.std::vector.74", align 8
  %91 = alloca %"class.std::initializer_list", align 8
  %92 = alloca [1 x i32], align 4
  %93 = alloca %"class.std::allocator.76", align 1
  %94 = alloca %"class.std::vector.74", align 8
  %95 = alloca %"class.std::initializer_list", align 8
  %96 = alloca [1 x i32], align 4
  %97 = alloca %"class.std::allocator.76", align 1
  %98 = alloca %"class.std::vector.74", align 8
  %99 = alloca %"class.std::initializer_list", align 8
  %100 = alloca [1 x i32], align 4
  %101 = alloca %"class.std::allocator.76", align 1
  %102 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca i1, align 1
  %108 = alloca i1, align 1
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::allocator.5", align 1
  %111 = alloca i1, align 1
  %112 = alloca ptr, align 8
  %113 = alloca %"class.SyntaxTree::Node", align 8
  %114 = alloca %class.Token, align 8
  %115 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %116 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %117 = alloca %"class.std::__cxx11::basic_string", align 8
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator.5", align 1
  %120 = alloca i1, align 1
  %121 = alloca %class.Grammar, align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::allocator.5", align 1
  %124 = alloca %"class.std::vector.74", align 8
  %125 = alloca %"class.std::initializer_list", align 8
  %126 = alloca [2 x i32], align 4
  %127 = alloca %"class.std::allocator.76", align 1
  %128 = alloca %"class.std::vector.74", align 8
  %129 = alloca %"class.std::initializer_list", align 8
  %130 = alloca [3 x i32], align 4
  %131 = alloca %"class.std::allocator.76", align 1
  %132 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %133 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %134 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %135 = alloca %class.Operator, align 8
  %136 = alloca %"class.std::__cxx11::basic_string", align 8
  %137 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %138 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %139 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %140 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %141 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::__cxx11::basic_string", align 8
  %144 = alloca %"class.std::allocator.5", align 1
  %145 = alloca i1, align 1
  %146 = alloca %class.Grammar, align 8
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.std::allocator.5", align 1
  %149 = alloca %"class.std::vector.74", align 8
  %150 = alloca %"class.std::initializer_list", align 8
  %151 = alloca [2 x i32], align 4
  %152 = alloca %"class.std::allocator.76", align 1
  %153 = alloca %"class.std::vector.74", align 8
  %154 = alloca %"class.std::initializer_list", align 8
  %155 = alloca [4 x i32], align 4
  %156 = alloca %"class.std::allocator.76", align 1
  %157 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %158 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %159 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %160 = alloca %"class.std::__cxx11::basic_string", align 8
  %161 = alloca %"class.std::allocator.5", align 1
  %162 = alloca i1, align 1
  %163 = alloca %class.Operator, align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %166 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %167 = alloca %"class.std::vector", align 8
  %168 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %169 = alloca %class.Token, align 8
  %170 = alloca %"class.std::__cxx11::basic_string", align 8
  %171 = alloca %"class.std::allocator.5", align 1
  %172 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %173 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %174 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %175 = alloca %"class.std::__cxx11::basic_string", align 8
  %176 = alloca %"class.std::__cxx11::basic_string", align 8
  %177 = alloca %"class.std::__cxx11::basic_string", align 8
  %178 = alloca i1, align 1
  %179 = alloca %"class.std::__cxx11::basic_string", align 8
  %180 = alloca %"class.std::allocator.5", align 1
  %181 = alloca i1, align 1
  %182 = alloca %class.Grammar, align 8
  %183 = alloca %"class.std::__cxx11::basic_string", align 8
  %184 = alloca %"class.std::allocator.5", align 1
  %185 = alloca %"class.std::vector.74", align 8
  %186 = alloca %"class.std::initializer_list", align 8
  %187 = alloca [2 x i32], align 4
  %188 = alloca %"class.std::allocator.76", align 1
  %189 = alloca %"class.std::vector.74", align 8
  %190 = alloca %"class.std::initializer_list", align 8
  %191 = alloca [1 x i32], align 4
  %192 = alloca %"class.std::allocator.76", align 1
  %193 = alloca %class.Operator, align 8
  %194 = alloca %"class.std::__cxx11::basic_string", align 8
  %195 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %196 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %197 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %198 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %199 = alloca %"class.std::vector", align 8
  %200 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %201 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %202 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %203 = alloca %"class.std::__cxx11::basic_string", align 8
  %204 = alloca %"class.std::__cxx11::basic_string", align 8
  %205 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %206 = alloca %"class.std::__cxx11::basic_string", align 8
  %207 = alloca %"class.std::allocator.5", align 1
  %208 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %209 = alloca i1, align 1
  %210 = alloca %"class.std::__cxx11::basic_string", align 8
  %211 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %212 = alloca %"class.std::__cxx11::basic_string", align 8
  %213 = alloca %"class.std::allocator.5", align 1
  %214 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %215 = alloca i1, align 1
  %216 = alloca %"class.std::__cxx11::basic_string", align 8
  %217 = alloca %"class.std::allocator.5", align 1
  %218 = alloca i1, align 1
  %219 = alloca %class.Token, align 8
  %220 = alloca %"class.std::__cxx11::basic_string", align 8
  %221 = alloca %"class.std::allocator.5", align 1
  %222 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %223 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %224 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %225 = alloca %"class.std::__cxx11::basic_string", align 8
  %226 = alloca %"class.std::allocator.5", align 1
  %227 = alloca i1, align 1
  %228 = alloca %"class.std::__cxx11::basic_string", align 8
  %229 = alloca %"class.std::allocator.5", align 1
  %230 = alloca i1, align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %231 = load ptr, ptr %3, align 8
  %232 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %233 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %232) #7
  %234 = call noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %233)
  switch i32 %234, label %1641 [
    i32 1, label %235
  ]

235:                                              ; preds = %2
  %236 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %237 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %236) #7
  %238 = call noundef i32 @_ZNK5Token20getKeyphraseCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %237)
  switch i32 %238, label %1623 [
    i32 0, label %239
    i32 1, label %1357
  ]

239:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #7
  %240 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %241 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %240) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(44) %241)
  %242 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef @.str.15)
          to label %243 unwind label %254

243:                                              ; preds = %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br i1 %242, label %244, label %267

244:                                              ; preds = %243
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %8) #7
  %246 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %247 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %246) #7
  call void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(44) %247)
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef %9)
          to label %248 unwind label %258

248:                                              ; preds = %244
  %249 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %245, ptr noundef nonnull align 8 dereferenceable(80) %8)
          to label %250 unwind label %262

250:                                              ; preds = %248
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #7
  %251 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %252 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %251, i32 noundef 0) #7
  %253 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %10, i32 0, i32 0
  store ptr %252, ptr %253, align 8
  br label %1659

254:                                              ; preds = %239
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %6, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #7
  br label %1660

258:                                              ; preds = %244
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %6, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %7, align 4
  br label %266

262:                                              ; preds = %248
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %6, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %7, align 4
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #7
  br label %266

266:                                              ; preds = %262, %258
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #7
  br label %1660

267:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  %268 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %269 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %268) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(44) %269)
  %270 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.16)
          to label %271 unwind label %284

271:                                              ; preds = %267
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br i1 %270, label %272, label %517

272:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %273 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %274 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %273) #7
  %275 = call noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %274)
  %276 = call noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %275)
  store i32 %276, ptr %12, align 4, !tbaa !9
  %277 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef 4)
  br i1 %277, label %300, label %278

278:                                              ; preds = %272
  store i1 true, ptr %15, align 1
  %279 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %280 unwind label %288

280:                                              ; preds = %278
  %281 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %282 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %281) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %279, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(44) %282)
          to label %283 unwind label %292

283:                                              ; preds = %280
  store i1 false, ptr %15, align 1
  invoke void @__cxa_throw(ptr %279, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %292

284:                                              ; preds = %267
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %6, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %1660

288:                                              ; preds = %278
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %6, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %7, align 4
  br label %296

292:                                              ; preds = %283, %280
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %6, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %296

296:                                              ; preds = %292, %288
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  %297 = load i1, ptr %15, align 1
  br i1 %297, label %298, label %299

298:                                              ; preds = %296
  call void @__cxa_free_exception(ptr %279) #7
  br label %299

299:                                              ; preds = %298, %296
  br label %516

300:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %17) #7
  %302 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %303 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %302) #7
  call void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %18, ptr noundef nonnull align 8 dereferenceable(44) %303)
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %17, ptr noundef %18)
          to label %304 unwind label %323

304:                                              ; preds = %300
  %305 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %301, ptr noundef nonnull align 8 dereferenceable(80) %17)
          to label %306 unwind label %327

306:                                              ; preds = %304
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %17) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %17) #7
  store ptr %305, ptr %16, align 8, !tbaa !5
  %307 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %308 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %307, i32 noundef 0) #7
  %309 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %308, ptr %309, align 8
  %310 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %311 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %310) #7
  %312 = call noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %311)
  br i1 %312, label %344, label %313

313:                                              ; preds = %306
  %314 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %315 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %314) #7
  %316 = call noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %315)
  br i1 %316, label %344, label %317

317:                                              ; preds = %313
  store i1 true, ptr %22, align 1
  %318 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %319 unwind label %332

319:                                              ; preds = %317
  %320 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %321 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %320) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %318, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(44) %321)
          to label %322 unwind label %336

322:                                              ; preds = %319
  store i1 false, ptr %22, align 1
  invoke void @__cxa_throw(ptr %318, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %336

323:                                              ; preds = %300
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %6, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %7, align 4
  br label %331

327:                                              ; preds = %304
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %6, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %7, align 4
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %17) #7
  br label %331

331:                                              ; preds = %327, %323
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %18) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %17) #7
  br label %515

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

336:                                              ; preds = %322, %319
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %6, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %340

340:                                              ; preds = %336, %332
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #7
  %341 = load i1, ptr %22, align 1
  br i1 %341, label %342, label %343

342:                                              ; preds = %340
  call void @__cxa_free_exception(ptr %318) #7
  br label %343

343:                                              ; preds = %342, %340
  br label %515

344:                                              ; preds = %313, %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %345 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %345, i64 8, i1 false), !tbaa.struct !11
  %346 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %347 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %346, i32 noundef 0) #7
  %348 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %347, ptr %348, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  %349 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %350 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %349) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(44) %350)
  %351 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.19)
          to label %352 unwind label %359

352:                                              ; preds = %344
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br i1 %351, label %353, label %375

353:                                              ; preds = %352
  store i1 true, ptr %28, align 1
  %354 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %355 unwind label %363

355:                                              ; preds = %353
  %356 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %357 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %356) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %354, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(44) %357)
          to label %358 unwind label %367

358:                                              ; preds = %355
  store i1 false, ptr %28, align 1
  invoke void @__cxa_throw(ptr %354, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %367

359:                                              ; preds = %344
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %6, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %514

363:                                              ; preds = %353
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %6, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %7, align 4
  br label %371

367:                                              ; preds = %358, %355
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %6, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %371

371:                                              ; preds = %367, %363
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  %372 = load i1, ptr %28, align 1
  br i1 %372, label %373, label %374

373:                                              ; preds = %371
  call void @__cxa_free_exception(ptr %354) #7
  br label %374

374:                                              ; preds = %373, %371
  br label %514

375:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 136, ptr %29) #7
  %376 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  %377 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %378 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %377) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(44) %378)
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8 %29, ptr noundef nonnull align 8 dereferenceable(380) %376, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %379 unwind label %402

379:                                              ; preds = %375
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  %380 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %381 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %380, i32 noundef 0) #7
  %382 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  store ptr %381, ptr %382, align 8
  %383 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %384 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %383) #7
  %385 = invoke noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %384)
          to label %386 unwind label %406

386:                                              ; preds = %379
  br i1 %385, label %422, label %387

387:                                              ; preds = %386
  %388 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %389 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %388) #7
  %390 = invoke noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %389)
          to label %391 unwind label %406

391:                                              ; preds = %387
  br i1 %390, label %422, label %392

392:                                              ; preds = %391
  %393 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %394 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %393) #7
  %395 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %394)
          to label %396 unwind label %406

396:                                              ; preds = %392
  %397 = icmp eq i32 %395, 3
  br i1 %397, label %422, label %398

398:                                              ; preds = %396
  store i1 true, ptr %34, align 1
  %399 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %400 unwind label %410

400:                                              ; preds = %398
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %399, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %401 unwind label %414

401:                                              ; preds = %400
  store i1 false, ptr %34, align 1
  invoke void @__cxa_throw(ptr %399, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %414

402:                                              ; preds = %375
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %6, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %513

406:                                              ; preds = %392, %387, %379
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %6, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %7, align 4
  br label %512

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

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

418:                                              ; preds = %414, %410
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  %419 = load i1, ptr %34, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @__cxa_free_exception(ptr %399) #7
  br label %421

421:                                              ; preds = %420, %418
  br label %512

422:                                              ; preds = %396, %391, %386
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %423 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %423, i64 8, i1 false), !tbaa.struct !11
  %424 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %425 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %424, i32 noundef 0) #7
  %426 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %425, ptr %426, align 8
  call void @llvm.lifetime.start.p0(i64 136, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %427 unwind label %474

427:                                              ; preds = %422
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %37, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %428 unwind label %478

428:                                              ; preds = %427
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !12
  %429 = getelementptr inbounds i32, ptr %42, i64 1
  store i32 1, ptr %429, align 4, !tbaa !12
  %430 = getelementptr inbounds %"class.std::initializer_list", ptr %41, i32 0, i32 0
  store ptr %42, ptr %430, align 8, !tbaa !14
  %431 = getelementptr inbounds %"class.std::initializer_list", ptr %41, i32 0, i32 1
  store i64 2, ptr %431, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  %432 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8
  %434 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 1
  %435 = load i64, ptr %434, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr %433, i64 %435, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %436 unwind label %483

436:                                              ; preds = %428
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %37, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %437 unwind label %487

437:                                              ; preds = %436
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %46) #7
  store i32 0, ptr %46, align 4, !tbaa !12
  %438 = getelementptr inbounds i32, ptr %46, i64 1
  store i32 1, ptr %438, align 4, !tbaa !12
  %439 = getelementptr inbounds i32, ptr %46, i64 2
  store i32 3, ptr %439, align 4, !tbaa !12
  %440 = getelementptr inbounds %"class.std::initializer_list", ptr %45, i32 0, i32 0
  store ptr %46, ptr %440, align 8, !tbaa !14
  %441 = getelementptr inbounds %"class.std::initializer_list", ptr %45, i32 0, i32 1
  store i64 3, ptr %441, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  %442 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 0
  %443 = load ptr, ptr %442, align 8
  %444 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 1
  %445 = load i64, ptr %444, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr %443, i64 %445, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %446 unwind label %492

446:                                              ; preds = %437
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %37, ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %447 unwind label %496

447:                                              ; preds = %446
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %48, ptr align 8 %23, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %49, ptr align 8 %35, i64 8, i1 false), !tbaa.struct !11
  %448 = load ptr, ptr %16, align 8, !tbaa !5
  %449 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  %450 = load ptr, ptr %449, align 8
  %451 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %49, i32 0, i32 0
  %452 = load ptr, ptr %451, align 8
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(129) %37, ptr %450, ptr noundef nonnull align 8 dereferenceable(136) %29, ptr %452, ptr noundef nonnull align 8 dereferenceable(80) %448)
          to label %453 unwind label %501

453:                                              ; preds = %447
  br label %454

454:                                              ; preds = %473, %453
  %455 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %456 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %457 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %456) #7
  %458 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %457, ptr %458, align 8
  %459 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br i1 %459, label %460, label %469

460:                                              ; preds = %454
  %461 = load i32, ptr %12, align 4, !tbaa !9
  %462 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %463 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %462) #7
  %464 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %463)
          to label %465 unwind label %505

465:                                              ; preds = %460
  %466 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %464)
          to label %467 unwind label %505

467:                                              ; preds = %465
  %468 = icmp slt i32 %461, %466
  br label %469

469:                                              ; preds = %467, %454
  %470 = phi i1 [ false, %454 ], [ %468, %467 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br i1 %470, label %471, label %509

471:                                              ; preds = %469
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(80) %472)
          to label %473 unwind label %501

473:                                              ; preds = %471
  br label %454, !llvm.loop !18

474:                                              ; preds = %422
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %6, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %7, align 4
  br label %482

478:                                              ; preds = %427
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %6, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %482

482:                                              ; preds = %478, %474
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %511

483:                                              ; preds = %428
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %6, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %7, align 4
  br label %491

487:                                              ; preds = %436
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %6, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  br label %491

491:                                              ; preds = %487, %483
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  br label %510

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

496:                                              ; preds = %446
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %6, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  br label %500

500:                                              ; preds = %496, %492
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  br label %510

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

505:                                              ; preds = %465, %460
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %6, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br label %510

509:                                              ; preds = %469
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %37) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %29) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %1659

510:                                              ; preds = %505, %501, %500, %491
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %37) #7
  br label %511

511:                                              ; preds = %510, %482
  call void @llvm.lifetime.end.p0(i64 136, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %512

512:                                              ; preds = %511, %421, %406
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %29) #7
  br label %513

513:                                              ; preds = %512, %402
  call void @llvm.lifetime.end.p0(i64 136, ptr %29) #7
  br label %514

514:                                              ; preds = %513, %374, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %515

515:                                              ; preds = %514, %343, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %516

516:                                              ; preds = %515, %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %1660

517:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  %518 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %519 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %518) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(44) %519)
  store i1 false, ptr %53, align 1
  store i1 false, ptr %54, align 1
  store i1 false, ptr %56, align 1
  store i1 false, ptr %57, align 1
  %520 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.22)
          to label %521 unwind label %565

521:                                              ; preds = %517
  br i1 %520, label %534, label %522

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #7
  store i1 true, ptr %53, align 1
  %523 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %524 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %523) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(44) %524)
          to label %525 unwind label %569

525:                                              ; preds = %522
  store i1 true, ptr %54, align 1
  %526 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.23)
          to label %527 unwind label %573

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

528:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  store i1 true, ptr %56, align 1
  %529 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %530 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %529) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(44) %530)
          to label %531 unwind label %577

531:                                              ; preds = %528
  store i1 true, ptr %57, align 1
  %532 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.24)
          to label %533 unwind label %581

533:                                              ; preds = %531
  br label %534

534:                                              ; preds = %533, %527, %521
  %535 = phi i1 [ true, %527 ], [ true, %521 ], [ %532, %533 ]
  %536 = load i1, ptr %57, align 1
  br i1 %536, label %537, label %538

537:                                              ; preds = %534
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %538

538:                                              ; preds = %537, %534
  %539 = load i1, ptr %56, align 1
  br i1 %539, label %540, label %541

540:                                              ; preds = %538
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %541

541:                                              ; preds = %540, %538
  %542 = load i1, ptr %54, align 1
  br i1 %542, label %543, label %544

543:                                              ; preds = %541
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %544

544:                                              ; preds = %543, %541
  %545 = load i1, ptr %53, align 1
  br i1 %545, label %546, label %547

546:                                              ; preds = %544
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %547

547:                                              ; preds = %546, %544
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br i1 %535, label %548, label %1001

548:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #7
  %549 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %550 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %549) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(44) %550)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  %551 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %552 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %551) #7
  %553 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %552)
          to label %554 unwind label %601

554:                                              ; preds = %548
  %555 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %553)
          to label %556 unwind label %601

556:                                              ; preds = %554
  store i32 %555, ptr %59, align 4, !tbaa !9
  %557 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef 4)
  br i1 %557, label %622, label %558

558:                                              ; preds = %556
  store i1 true, ptr %62, align 1
  %559 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef @.str.25, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %560 unwind label %605

560:                                              ; preds = %558
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.26)
          to label %561 unwind label %609

561:                                              ; preds = %560
  %562 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %563 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %562) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %559, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(44) %563)
          to label %564 unwind label %613

564:                                              ; preds = %561
  store i1 false, ptr %62, align 1
  invoke void @__cxa_throw(ptr %559, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %613

565:                                              ; preds = %517
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %6, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %7, align 4
  br label %600

569:                                              ; preds = %522
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %6, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %7, align 4
  br label %596

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

577:                                              ; preds = %528
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %6, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %7, align 4
  br label %588

581:                                              ; preds = %531
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %6, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %7, align 4
  %585 = load i1, ptr %57, align 1
  br i1 %585, label %586, label %587

586:                                              ; preds = %581
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %587

587:                                              ; preds = %586, %581
  br label %588

588:                                              ; preds = %587, %577
  %589 = load i1, ptr %56, align 1
  br i1 %589, label %590, label %591

590:                                              ; preds = %588
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %591

591:                                              ; preds = %590, %588
  br label %592

592:                                              ; preds = %591, %573
  %593 = load i1, ptr %54, align 1
  br i1 %593, label %594, label %595

594:                                              ; preds = %592
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %595

595:                                              ; preds = %594, %592
  br label %596

596:                                              ; preds = %595, %569
  %597 = load i1, ptr %53, align 1
  br i1 %597, label %598, label %599

598:                                              ; preds = %596
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #7
  br label %599

599:                                              ; preds = %598, %596
  br label %600

600:                                              ; preds = %599, %565
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  br label %1660

601:                                              ; preds = %554, %548
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %6, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %7, align 4
  br label %1000

605:                                              ; preds = %558
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %6, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %7, align 4
  br label %618

609:                                              ; preds = %560
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %6, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %7, align 4
  br label %617

613:                                              ; preds = %564, %561
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %6, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %617

617:                                              ; preds = %613, %609
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %618

618:                                              ; preds = %617, %605
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #7
  %619 = load i1, ptr %62, align 1
  br i1 %619, label %620, label %621

620:                                              ; preds = %618
  call void @__cxa_free_exception(ptr %559) #7
  br label %621

621:                                              ; preds = %620, %618
  br label %1000

622:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %623 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %64) #7
  %624 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %625 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %624) #7
  invoke void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %65, ptr noundef nonnull align 8 dereferenceable(44) %625)
          to label %626 unwind label %644

626:                                              ; preds = %622
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %64, ptr noundef %65)
          to label %627 unwind label %648

627:                                              ; preds = %626
  %628 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %623, ptr noundef nonnull align 8 dereferenceable(80) %64)
          to label %629 unwind label %652

629:                                              ; preds = %627
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %64) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %65) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %64) #7
  store ptr %628, ptr %63, align 8, !tbaa !5
  %630 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %631 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %630, i32 noundef 0) #7
  %632 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %66, i32 0, i32 0
  store ptr %631, ptr %632, align 8
  %633 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %634 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %633) #7
  %635 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %634)
          to label %636 unwind label %658

636:                                              ; preds = %629
  %637 = icmp ne i32 %635, 4
  br i1 %637, label %638, label %674

638:                                              ; preds = %636
  store i1 true, ptr %69, align 1
  %639 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %640 unwind label %662

640:                                              ; preds = %638
  %641 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %642 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %641) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %639, ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(44) %642)
          to label %643 unwind label %666

643:                                              ; preds = %640
  store i1 false, ptr %69, align 1
  invoke void @__cxa_throw(ptr %639, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %666

644:                                              ; preds = %622
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %6, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %7, align 4
  br label %657

648:                                              ; preds = %626
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %6, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %7, align 4
  br label %656

652:                                              ; preds = %627
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %6, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %7, align 4
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %64) #7
  br label %656

656:                                              ; preds = %652, %648
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %65) #7
  br label %657

657:                                              ; preds = %656, %644
  call void @llvm.lifetime.end.p0(i64 80, ptr %64) #7
  br label %999

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

662:                                              ; preds = %638
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %6, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %7, align 4
  br label %670

666:                                              ; preds = %643, %640
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %6, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #7
  br label %670

670:                                              ; preds = %666, %662
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  %671 = load i1, ptr %69, align 1
  br i1 %671, label %672, label %673

672:                                              ; preds = %670
  call void @__cxa_free_exception(ptr %639) #7
  br label %673

673:                                              ; preds = %672, %670
  br label %999

674:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %675 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %70, ptr align 8 %675, i64 8, i1 false), !tbaa.struct !11
  %676 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %677 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %676, i32 noundef 0) #7
  %678 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  store ptr %677, ptr %678, align 8
  %679 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %680 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %679) #7
  %681 = invoke noundef zeroext i1 @_ZL25tokenIsComparisonOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %680)
          to label %682 unwind label %689

682:                                              ; preds = %674
  br i1 %681, label %705, label %683

683:                                              ; preds = %682
  store i1 true, ptr %74, align 1
  %684 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %685 unwind label %693

685:                                              ; preds = %683
  %686 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %687 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %686) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %684, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(44) %687)
          to label %688 unwind label %697

688:                                              ; preds = %685
  store i1 false, ptr %74, align 1
  invoke void @__cxa_throw(ptr %684, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %697

689:                                              ; preds = %674
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %6, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %7, align 4
  br label %998

693:                                              ; preds = %683
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %6, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %7, align 4
  br label %701

697:                                              ; preds = %688, %685
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %6, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %701

701:                                              ; preds = %697, %693
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  %702 = load i1, ptr %74, align 1
  br i1 %702, label %703, label %704

703:                                              ; preds = %701
  call void @__cxa_free_exception(ptr %684) #7
  br label %704

704:                                              ; preds = %703, %701
  br label %998

705:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 136, ptr %75) #7
  %706 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #7
  %707 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %708 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %707) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(44) %708)
          to label %709 unwind label %730

709:                                              ; preds = %705
  invoke void @_ZNK14FetlangManager21getComparisonOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.ComparisonOperator) align 8 %75, ptr noundef nonnull align 8 dereferenceable(380) %706, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %710 unwind label %734

710:                                              ; preds = %709
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #7
  %711 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %712 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %711, i32 noundef 0) #7
  %713 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %77, i32 0, i32 0
  store ptr %712, ptr %713, align 8
  %714 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %715 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %714) #7
  %716 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %715)
          to label %717 unwind label %739

717:                                              ; preds = %710
  %718 = icmp ne i32 %716, 4
  br i1 %718, label %719, label %755

719:                                              ; preds = %717
  %720 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %721 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %720) #7
  %722 = invoke noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %721)
          to label %723 unwind label %739

723:                                              ; preds = %719
  br i1 %722, label %755, label %724

724:                                              ; preds = %723
  store i1 true, ptr %80, align 1
  %725 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %726 unwind label %743

726:                                              ; preds = %724
  %727 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %728 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %727) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %725, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(44) %728)
          to label %729 unwind label %747

729:                                              ; preds = %726
  store i1 false, ptr %80, align 1
  invoke void @__cxa_throw(ptr %725, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %747

730:                                              ; preds = %705
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %6, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %7, align 4
  br label %738

734:                                              ; preds = %709
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %6, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br label %738

738:                                              ; preds = %734, %730
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #7
  br label %997

739:                                              ; preds = %719, %710
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %6, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %7, align 4
  br label %996

743:                                              ; preds = %724
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %6, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %7, align 4
  br label %751

747:                                              ; preds = %729, %726
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %6, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %751

751:                                              ; preds = %747, %743
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  %752 = load i1, ptr %80, align 1
  br i1 %752, label %753, label %754

753:                                              ; preds = %751
  call void @__cxa_free_exception(ptr %725) #7
  br label %754

754:                                              ; preds = %753, %751
  br label %996

755:                                              ; preds = %723, %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %756 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %81, ptr align 8 %756, i64 8, i1 false), !tbaa.struct !11
  %757 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %758 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %757, i32 noundef 0) #7
  %759 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %82, i32 0, i32 0
  store ptr %758, ptr %759, align 8
  call void @llvm.lifetime.start.p0(i64 136, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %760 unwind label %820

760:                                              ; preds = %755
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %83, ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %761 unwind label %824

761:                                              ; preds = %760
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %86) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #7
  store i32 0, ptr %88, align 4, !tbaa !12
  %762 = getelementptr inbounds %"class.std::initializer_list", ptr %87, i32 0, i32 0
  store ptr %88, ptr %762, align 8, !tbaa !14
  %763 = getelementptr inbounds %"class.std::initializer_list", ptr %87, i32 0, i32 1
  store i64 1, ptr %763, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #7
  %764 = getelementptr inbounds { ptr, i64 }, ptr %87, i32 0, i32 0
  %765 = load ptr, ptr %764, align 8
  %766 = getelementptr inbounds { ptr, i64 }, ptr %87, i32 0, i32 1
  %767 = load i64, ptr %766, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr %765, i64 %767, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %768 unwind label %829

768:                                              ; preds = %761
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %83, ptr noundef nonnull align 8 dereferenceable(24) %86)
          to label %769 unwind label %833

769:                                              ; preds = %768
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %86) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %90) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #7
  store i32 0, ptr %92, align 4, !tbaa !12
  %770 = getelementptr inbounds %"class.std::initializer_list", ptr %91, i32 0, i32 0
  store ptr %92, ptr %770, align 8, !tbaa !14
  %771 = getelementptr inbounds %"class.std::initializer_list", ptr %91, i32 0, i32 1
  store i64 1, ptr %771, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  %772 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 0
  %773 = load ptr, ptr %772, align 8
  %774 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 1
  %775 = load i64, ptr %774, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr %773, i64 %775, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %776 unwind label %838

776:                                              ; preds = %769
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %83, ptr noundef nonnull align 8 dereferenceable(24) %90)
          to label %777 unwind label %842

777:                                              ; preds = %776
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #7
  store i32 1, ptr %96, align 4, !tbaa !12
  %778 = getelementptr inbounds %"class.std::initializer_list", ptr %95, i32 0, i32 0
  store ptr %96, ptr %778, align 8, !tbaa !14
  %779 = getelementptr inbounds %"class.std::initializer_list", ptr %95, i32 0, i32 1
  store i64 1, ptr %779, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  %780 = getelementptr inbounds { ptr, i64 }, ptr %95, i32 0, i32 0
  %781 = load ptr, ptr %780, align 8
  %782 = getelementptr inbounds { ptr, i64 }, ptr %95, i32 0, i32 1
  %783 = load i64, ptr %782, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr %781, i64 %783, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %784 unwind label %847

784:                                              ; preds = %777
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %83, ptr noundef nonnull align 8 dereferenceable(24) %94)
          to label %785 unwind label %851

785:                                              ; preds = %784
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #7
  store i32 2, ptr %100, align 4, !tbaa !12
  %786 = getelementptr inbounds %"class.std::initializer_list", ptr %99, i32 0, i32 0
  store ptr %100, ptr %786, align 8, !tbaa !14
  %787 = getelementptr inbounds %"class.std::initializer_list", ptr %99, i32 0, i32 1
  store i64 1, ptr %787, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #7
  %788 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 0
  %789 = load ptr, ptr %788, align 8
  %790 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 1
  %791 = load i64, ptr %790, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr %789, i64 %791, ptr noundef nonnull align 1 dereferenceable(1) %101)
          to label %792 unwind label %856

792:                                              ; preds = %785
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %83, ptr noundef nonnull align 8 dereferenceable(24) %98)
          to label %793 unwind label %860

793:                                              ; preds = %792
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %102, ptr align 8 %70, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %81, i64 8, i1 false), !tbaa.struct !11
  %794 = load ptr, ptr %63, align 8, !tbaa !5
  %795 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %102, i32 0, i32 0
  %796 = load ptr, ptr %795, align 8
  %797 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %103, i32 0, i32 0
  %798 = load ptr, ptr %797, align 8
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(129) %83, ptr %796, ptr noundef nonnull align 8 dereferenceable(136) %75, ptr %798, ptr noundef nonnull align 8 dereferenceable(80) %794)
          to label %799 unwind label %865

799:                                              ; preds = %793
  br label %800

800:                                              ; preds = %819, %799
  %801 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  %802 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %803 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %802) #7
  %804 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %104, i32 0, i32 0
  store ptr %803, ptr %804, align 8
  %805 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %801, ptr noundef nonnull align 8 dereferenceable(8) %104) #7
  br i1 %805, label %806, label %815

806:                                              ; preds = %800
  %807 = load i32, ptr %59, align 4, !tbaa !9
  %808 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %809 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %808) #7
  %810 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %809)
          to label %811 unwind label %869

811:                                              ; preds = %806
  %812 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %810)
          to label %813 unwind label %869

813:                                              ; preds = %811
  %814 = icmp slt i32 %807, %812
  br label %815

815:                                              ; preds = %813, %800
  %816 = phi i1 [ false, %800 ], [ %814, %813 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br i1 %816, label %817, label %873

817:                                              ; preds = %815
  %818 = load ptr, ptr %63, align 8, !tbaa !5
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(80) %818)
          to label %819 unwind label %865

819:                                              ; preds = %817
  br label %800, !llvm.loop !20

820:                                              ; preds = %755
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %6, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %7, align 4
  br label %828

824:                                              ; preds = %760
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %6, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %828

828:                                              ; preds = %824, %820
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #7
  br label %995

829:                                              ; preds = %761
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %6, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %7, align 4
  br label %837

833:                                              ; preds = %768
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %6, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #7
  br label %837

837:                                              ; preds = %833, %829
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %86) #7
  br label %994

838:                                              ; preds = %769
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %6, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %7, align 4
  br label %846

842:                                              ; preds = %776
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %6, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #7
  br label %846

846:                                              ; preds = %842, %838
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #7
  br label %994

847:                                              ; preds = %777
  %848 = landingpad { ptr, i32 }
          cleanup
  %849 = extractvalue { ptr, i32 } %848, 0
  store ptr %849, ptr %6, align 8
  %850 = extractvalue { ptr, i32 } %848, 1
  store i32 %850, ptr %7, align 4
  br label %855

851:                                              ; preds = %784
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %6, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #7
  br label %855

855:                                              ; preds = %851, %847
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #7
  br label %994

856:                                              ; preds = %785
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %6, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %7, align 4
  br label %864

860:                                              ; preds = %792
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %6, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  br label %864

864:                                              ; preds = %860, %856
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %101) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #7
  br label %994

865:                                              ; preds = %902, %817, %793
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %6, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %7, align 4
  br label %994

869:                                              ; preds = %811, %806
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %6, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br label %994

873:                                              ; preds = %815
  %874 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %875 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %876 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %875) #7
  %877 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %105, i32 0, i32 0
  store ptr %876, ptr %877, align 8
  %878 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %874, ptr noundef nonnull align 8 dereferenceable(8) %105) #7
  store i1 false, ptr %107, align 1
  store i1 false, ptr %108, align 1
  br i1 %878, label %879, label %894

879:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #7
  store i1 true, ptr %107, align 1
  %880 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %881 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %880) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull align 8 dereferenceable(44) %881)
          to label %882 unwind label %911

882:                                              ; preds = %879
  store i1 true, ptr %108, align 1
  %883 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.31)
          to label %884 unwind label %915

884:                                              ; preds = %882
  br i1 %883, label %885, label %894

885:                                              ; preds = %884
  %886 = load i32, ptr %59, align 4, !tbaa !9
  %887 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %888 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %887) #7
  %889 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %888)
          to label %890 unwind label %915

890:                                              ; preds = %885
  %891 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %889)
          to label %892 unwind label %915

892:                                              ; preds = %890
  %893 = icmp eq i32 %886, %891
  br label %894

894:                                              ; preds = %892, %884, %873
  %895 = phi i1 [ false, %884 ], [ false, %873 ], [ %893, %892 ]
  %896 = load i1, ptr %108, align 1
  br i1 %896, label %897, label %898

897:                                              ; preds = %894
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  br label %898

898:                                              ; preds = %897, %894
  %899 = load i1, ptr %107, align 1
  br i1 %899, label %900, label %901

900:                                              ; preds = %898
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #7
  br label %901

901:                                              ; preds = %900, %898
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  br i1 %895, label %902, label %993

902:                                              ; preds = %901
  %903 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.22)
          to label %904 unwind label %865

904:                                              ; preds = %902
  br i1 %903, label %905, label %938

905:                                              ; preds = %904
  store i1 true, ptr %111, align 1
  %906 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %907 unwind label %926

907:                                              ; preds = %905
  %908 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %909 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %908) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %906, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(44) %909)
          to label %910 unwind label %930

910:                                              ; preds = %907
  store i1 false, ptr %111, align 1
  invoke void @__cxa_throw(ptr %906, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %930

911:                                              ; preds = %879
  %912 = landingpad { ptr, i32 }
          cleanup
  %913 = extractvalue { ptr, i32 } %912, 0
  store ptr %913, ptr %6, align 8
  %914 = extractvalue { ptr, i32 } %912, 1
  store i32 %914, ptr %7, align 4
  br label %922

915:                                              ; preds = %890, %885, %882
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %6, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %7, align 4
  %919 = load i1, ptr %108, align 1
  br i1 %919, label %920, label %921

920:                                              ; preds = %915
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  br label %921

921:                                              ; preds = %920, %915
  br label %922

922:                                              ; preds = %921, %911
  %923 = load i1, ptr %107, align 1
  br i1 %923, label %924, label %925

924:                                              ; preds = %922
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #7
  br label %925

925:                                              ; preds = %924, %922
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  br label %994

926:                                              ; preds = %905
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %6, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %7, align 4
  br label %934

930:                                              ; preds = %910, %907
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %6, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #7
  br label %934

934:                                              ; preds = %930, %926
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #7
  %935 = load i1, ptr %111, align 1
  br i1 %935, label %936, label %937

936:                                              ; preds = %934
  call void @__cxa_free_exception(ptr %906) #7
  br label %937

937:                                              ; preds = %936, %934
  br label %994

938:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #7
  %939 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %113) #7
  %940 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %941 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %940) #7
  invoke void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %114, ptr noundef nonnull align 8 dereferenceable(44) %941)
          to label %942 unwind label %969

942:                                              ; preds = %938
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %113, ptr noundef %114)
          to label %943 unwind label %973

943:                                              ; preds = %942
  %944 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %939, ptr noundef nonnull align 8 dereferenceable(80) %113)
          to label %945 unwind label %977

945:                                              ; preds = %943
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %113) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %114) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %113) #7
  store ptr %944, ptr %112, align 8, !tbaa !5
  %946 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %947 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %946, i32 noundef 0) #7
  %948 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %115, i32 0, i32 0
  store ptr %947, ptr %948, align 8
  br label %949

949:                                              ; preds = %968, %945
  %950 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #7
  %951 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %952 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %951) #7
  %953 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %116, i32 0, i32 0
  store ptr %952, ptr %953, align 8
  %954 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %950, ptr noundef nonnull align 8 dereferenceable(8) %116) #7
  br i1 %954, label %955, label %964

955:                                              ; preds = %949
  %956 = load i32, ptr %59, align 4, !tbaa !9
  %957 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %958 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %957) #7
  %959 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %958)
          to label %960 unwind label %983

960:                                              ; preds = %955
  %961 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef %959)
          to label %962 unwind label %983

962:                                              ; preds = %960
  %963 = icmp slt i32 %956, %961
  br label %964

964:                                              ; preds = %962, %949
  %965 = phi i1 [ false, %949 ], [ %963, %962 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #7
  br i1 %965, label %966, label %991

966:                                              ; preds = %964
  %967 = load ptr, ptr %112, align 8, !tbaa !5
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(80) %967)
          to label %968 unwind label %987

968:                                              ; preds = %966
  br label %949, !llvm.loop !21

969:                                              ; preds = %938
  %970 = landingpad { ptr, i32 }
          cleanup
  %971 = extractvalue { ptr, i32 } %970, 0
  store ptr %971, ptr %6, align 8
  %972 = extractvalue { ptr, i32 } %970, 1
  store i32 %972, ptr %7, align 4
  br label %982

973:                                              ; preds = %942
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %6, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %7, align 4
  br label %981

977:                                              ; preds = %943
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %6, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %7, align 4
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %113) #7
  br label %981

981:                                              ; preds = %977, %973
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %114) #7
  br label %982

982:                                              ; preds = %981, %969
  call void @llvm.lifetime.end.p0(i64 80, ptr %113) #7
  br label %992

983:                                              ; preds = %960, %955
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %6, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #7
  br label %992

987:                                              ; preds = %966
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %6, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %7, align 4
  br label %992

991:                                              ; preds = %964
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #7
  br label %993

992:                                              ; preds = %987, %983, %982
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #7
  br label %994

993:                                              ; preds = %991, %901
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %83) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %75) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %1659

994:                                              ; preds = %992, %937, %925, %869, %865, %864, %855, %846, %837
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %83) #7
  br label %995

995:                                              ; preds = %994, %828
  call void @llvm.lifetime.end.p0(i64 136, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  br label %996

996:                                              ; preds = %995, %754, %739
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %75) #7
  br label %997

997:                                              ; preds = %996, %738
  call void @llvm.lifetime.end.p0(i64 136, ptr %75) #7
  br label %998

998:                                              ; preds = %997, %704, %689
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %999

999:                                              ; preds = %998, %673, %658, %657
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %1000

1000:                                             ; preds = %999, %621, %601
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #7
  br label %1660

1001:                                             ; preds = %547
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #7
  %1002 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1003 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1002) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %117, ptr noundef nonnull align 8 dereferenceable(44) %1003)
  %1004 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef @.str.33)
          to label %1005 unwind label %1012

1005:                                             ; preds = %1001
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  br i1 %1004, label %1006, label %1123

1006:                                             ; preds = %1005
  %1007 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef 3)
  br i1 %1007, label %1028, label %1008

1008:                                             ; preds = %1006
  store i1 true, ptr %120, align 1
  %1009 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %1010 unwind label %1016

1010:                                             ; preds = %1008
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %1009, ptr noundef nonnull align 8 dereferenceable(32) %118)
          to label %1011 unwind label %1020

1011:                                             ; preds = %1010
  store i1 false, ptr %120, align 1
  invoke void @__cxa_throw(ptr %1009, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1020

1012:                                             ; preds = %1001
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %6, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #7
  br label %1660

1016:                                             ; preds = %1008
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %6, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %7, align 4
  br label %1024

1020:                                             ; preds = %1011, %1010
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %6, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #7
  br label %1024

1024:                                             ; preds = %1020, %1016
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #7
  %1025 = load i1, ptr %120, align 1
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1024
  call void @__cxa_free_exception(ptr %1009) #7
  br label %1027

1027:                                             ; preds = %1026, %1024
  br label %1660

1028:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 136, ptr %121) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %1029 unwind label %1076

1029:                                             ; preds = %1028
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %121, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %1030 unwind label %1080

1030:                                             ; preds = %1029
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  invoke void @_ZN7Grammar11setReversedEb(ptr noundef nonnull align 8 dereferenceable(129) %121, i1 noundef zeroext true)
          to label %1031 unwind label %1085

1031:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 24, ptr %124) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #7
  store i32 1, ptr %126, align 4, !tbaa !12
  %1032 = getelementptr inbounds i32, ptr %126, i64 1
  store i32 0, ptr %1032, align 4, !tbaa !12
  %1033 = getelementptr inbounds %"class.std::initializer_list", ptr %125, i32 0, i32 0
  store ptr %126, ptr %1033, align 8, !tbaa !14
  %1034 = getelementptr inbounds %"class.std::initializer_list", ptr %125, i32 0, i32 1
  store i64 2, ptr %1034, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #7
  %1035 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 0
  %1036 = load ptr, ptr %1035, align 8
  %1037 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 1
  %1038 = load i64, ptr %1037, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr %1036, i64 %1038, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %1039 unwind label %1089

1039:                                             ; preds = %1031
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %121, ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %1040 unwind label %1093

1040:                                             ; preds = %1039
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %128) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %130) #7
  store i32 1, ptr %130, align 4, !tbaa !12
  %1041 = getelementptr inbounds i32, ptr %130, i64 1
  store i32 0, ptr %1041, align 4, !tbaa !12
  %1042 = getelementptr inbounds i32, ptr %130, i64 2
  store i32 2, ptr %1042, align 4, !tbaa !12
  %1043 = getelementptr inbounds %"class.std::initializer_list", ptr %129, i32 0, i32 0
  store ptr %130, ptr %1043, align 8, !tbaa !14
  %1044 = getelementptr inbounds %"class.std::initializer_list", ptr %129, i32 0, i32 1
  store i64 3, ptr %1044, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  %1045 = getelementptr inbounds { ptr, i64 }, ptr %129, i32 0, i32 0
  %1046 = load ptr, ptr %1045, align 8
  %1047 = getelementptr inbounds { ptr, i64 }, ptr %129, i32 0, i32 1
  %1048 = load i64, ptr %1047, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %128, ptr %1046, i64 %1048, ptr noundef nonnull align 1 dereferenceable(1) %131)
          to label %1049 unwind label %1098

1049:                                             ; preds = %1040
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %121, ptr noundef nonnull align 8 dereferenceable(24) %128)
          to label %1050 unwind label %1102

1050:                                             ; preds = %1049
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %128) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %128) #7
  %1051 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1052 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1051, i32 noundef 0) #7
  %1053 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %132, i32 0, i32 0
  store ptr %1052, ptr %1053, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #7
  %1054 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %133, ptr align 8 %1054, i64 8, i1 false), !tbaa.struct !11
  %1055 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1056 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1055, i32 noundef 0) #7
  %1057 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %134, i32 0, i32 0
  store ptr %1056, ptr %1057, align 8
  call void @llvm.lifetime.start.p0(i64 136, ptr %135) #7
  %1058 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %136) #7
  %1059 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1060 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1059) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %136, ptr noundef nonnull align 8 dereferenceable(44) %1060)
          to label %1061 unwind label %1107

1061:                                             ; preds = %1050
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8 %135, ptr noundef nonnull align 8 dereferenceable(380) %1058, ptr noundef nonnull align 8 dereferenceable(32) %136)
          to label %1062 unwind label %1111

1062:                                             ; preds = %1061
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #7
  %1063 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1064 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1063, i32 noundef 0) #7
  %1065 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %137, i32 0, i32 0
  store ptr %1064, ptr %1065, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #7
  %1066 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %138, ptr align 8 %1066, i64 8, i1 false), !tbaa.struct !11
  %1067 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1068 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1067, i32 noundef 0) #7
  %1069 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %139, i32 0, i32 0
  store ptr %1068, ptr %1069, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %140, ptr align 8 %133, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %141, ptr align 8 %138, i64 8, i1 false), !tbaa.struct !11
  %1070 = load ptr, ptr %4, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %140, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8
  %1073 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %141, i32 0, i32 0
  %1074 = load ptr, ptr %1073, align 8
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(129) %121, ptr %1072, ptr noundef nonnull align 8 dereferenceable(136) %135, ptr %1074, ptr noundef nonnull align 8 dereferenceable(80) %1070)
          to label %1075 unwind label %1116

1075:                                             ; preds = %1062
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %135) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #7
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %121) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %121) #7
  br label %1659

1076:                                             ; preds = %1028
  %1077 = landingpad { ptr, i32 }
          cleanup
  %1078 = extractvalue { ptr, i32 } %1077, 0
  store ptr %1078, ptr %6, align 8
  %1079 = extractvalue { ptr, i32 } %1077, 1
  store i32 %1079, ptr %7, align 4
  br label %1084

1080:                                             ; preds = %1029
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %6, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  br label %1084

1084:                                             ; preds = %1080, %1076
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  br label %1122

1085:                                             ; preds = %1030
  %1086 = landingpad { ptr, i32 }
          cleanup
  %1087 = extractvalue { ptr, i32 } %1086, 0
  store ptr %1087, ptr %6, align 8
  %1088 = extractvalue { ptr, i32 } %1086, 1
  store i32 %1088, ptr %7, align 4
  br label %1121

1089:                                             ; preds = %1031
  %1090 = landingpad { ptr, i32 }
          cleanup
  %1091 = extractvalue { ptr, i32 } %1090, 0
  store ptr %1091, ptr %6, align 8
  %1092 = extractvalue { ptr, i32 } %1090, 1
  store i32 %1092, ptr %7, align 4
  br label %1097

1093:                                             ; preds = %1039
  %1094 = landingpad { ptr, i32 }
          cleanup
  %1095 = extractvalue { ptr, i32 } %1094, 0
  store ptr %1095, ptr %6, align 8
  %1096 = extractvalue { ptr, i32 } %1094, 1
  store i32 %1096, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #7
  br label %1097

1097:                                             ; preds = %1093, %1089
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #7
  br label %1121

1098:                                             ; preds = %1040
  %1099 = landingpad { ptr, i32 }
          cleanup
  %1100 = extractvalue { ptr, i32 } %1099, 0
  store ptr %1100, ptr %6, align 8
  %1101 = extractvalue { ptr, i32 } %1099, 1
  store i32 %1101, ptr %7, align 4
  br label %1106

1102:                                             ; preds = %1049
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %6, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %128) #7
  br label %1106

1106:                                             ; preds = %1102, %1098
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %131) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %128) #7
  br label %1121

1107:                                             ; preds = %1050
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %6, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %7, align 4
  br label %1115

1111:                                             ; preds = %1061
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %6, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #7
  br label %1115

1115:                                             ; preds = %1111, %1107
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #7
  br label %1120

1116:                                             ; preds = %1062
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %6, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %135) #7
  br label %1120

1120:                                             ; preds = %1116, %1115
  call void @llvm.lifetime.end.p0(i64 136, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #7
  br label %1121

1121:                                             ; preds = %1120, %1106, %1097, %1085
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %121) #7
  br label %1122

1122:                                             ; preds = %1121, %1084
  call void @llvm.lifetime.end.p0(i64 136, ptr %121) #7
  br label %1660

1123:                                             ; preds = %1005
  call void @llvm.lifetime.start.p0(i64 32, ptr %142) #7
  %1124 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1125 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1124) #7
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %142, ptr noundef nonnull align 8 dereferenceable(44) %1125)
  %1126 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef @.str.35)
          to label %1127 unwind label %1134

1127:                                             ; preds = %1123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #7
  br i1 %1126, label %1128, label %1325

1128:                                             ; preds = %1127
  %1129 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef 2)
  br i1 %1129, label %1150, label %1130

1130:                                             ; preds = %1128
  store i1 true, ptr %145, align 1
  %1131 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %143) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %144) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %144)
          to label %1132 unwind label %1138

1132:                                             ; preds = %1130
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %1131, ptr noundef nonnull align 8 dereferenceable(32) %143)
          to label %1133 unwind label %1142

1133:                                             ; preds = %1132
  store i1 false, ptr %145, align 1
  invoke void @__cxa_throw(ptr %1131, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1142

1134:                                             ; preds = %1123
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %6, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %142) #7
  br label %1660

1138:                                             ; preds = %1130
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %6, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %7, align 4
  br label %1146

1142:                                             ; preds = %1133, %1132
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %6, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #7
  br label %1146

1146:                                             ; preds = %1142, %1138
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %144) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %143) #7
  %1147 = load i1, ptr %145, align 1
  br i1 %1147, label %1148, label %1149

1148:                                             ; preds = %1146
  call void @__cxa_free_exception(ptr %1131) #7
  br label %1149

1149:                                             ; preds = %1148, %1146
  br label %1660

1150:                                             ; preds = %1128
  call void @llvm.lifetime.start.p0(i64 136, ptr %146) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %147) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %1151 unwind label %1190

1151:                                             ; preds = %1150
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %146, ptr noundef nonnull align 8 dereferenceable(32) %147)
          to label %1152 unwind label %1194

1152:                                             ; preds = %1151
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %149) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  store i32 1, ptr %151, align 4, !tbaa !12
  %1153 = getelementptr inbounds i32, ptr %151, i64 1
  store i32 0, ptr %1153, align 4, !tbaa !12
  %1154 = getelementptr inbounds %"class.std::initializer_list", ptr %150, i32 0, i32 0
  store ptr %151, ptr %1154, align 8, !tbaa !14
  %1155 = getelementptr inbounds %"class.std::initializer_list", ptr %150, i32 0, i32 1
  store i64 2, ptr %1155, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  %1156 = getelementptr inbounds { ptr, i64 }, ptr %150, i32 0, i32 0
  %1157 = load ptr, ptr %1156, align 8
  %1158 = getelementptr inbounds { ptr, i64 }, ptr %150, i32 0, i32 1
  %1159 = load i64, ptr %1158, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %149, ptr %1157, i64 %1159, ptr noundef nonnull align 1 dereferenceable(1) %152)
          to label %1160 unwind label %1199

1160:                                             ; preds = %1152
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %146, ptr noundef nonnull align 8 dereferenceable(24) %149)
          to label %1161 unwind label %1203

1161:                                             ; preds = %1160
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %149) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %153) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #7
  store i32 1, ptr %155, align 4, !tbaa !12
  %1162 = getelementptr inbounds i32, ptr %155, i64 1
  store i32 0, ptr %1162, align 4, !tbaa !12
  %1163 = getelementptr inbounds i32, ptr %155, i64 2
  store i32 2, ptr %1163, align 4, !tbaa !12
  %1164 = getelementptr inbounds i32, ptr %155, i64 3
  store i32 3, ptr %1164, align 4, !tbaa !12
  %1165 = getelementptr inbounds %"class.std::initializer_list", ptr %154, i32 0, i32 0
  store ptr %155, ptr %1165, align 8, !tbaa !14
  %1166 = getelementptr inbounds %"class.std::initializer_list", ptr %154, i32 0, i32 1
  store i64 4, ptr %1166, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  %1167 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 0
  %1168 = load ptr, ptr %1167, align 8
  %1169 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 1
  %1170 = load i64, ptr %1169, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr %1168, i64 %1170, ptr noundef nonnull align 1 dereferenceable(1) %156)
          to label %1171 unwind label %1208

1171:                                             ; preds = %1161
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %146, ptr noundef nonnull align 8 dereferenceable(24) %153)
          to label %1172 unwind label %1212

1172:                                             ; preds = %1171
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %153) #7
  %1173 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1174 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1173, i32 noundef 0) #7
  %1175 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %157, i32 0, i32 0
  store ptr %1174, ptr %1175, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #7
  %1176 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %158, ptr align 8 %1176, i64 8, i1 false), !tbaa.struct !11
  %1177 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1178 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1177, i32 noundef 0) #7
  %1179 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %159, i32 0, i32 0
  store ptr %1178, ptr %1179, align 8
  %1180 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1181 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1180) #7
  %1182 = invoke noundef zeroext i1 @_ZL15tokenIsOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %1181)
          to label %1183 unwind label %1217

1183:                                             ; preds = %1172
  br i1 %1182, label %1233, label %1184

1184:                                             ; preds = %1183
  store i1 true, ptr %162, align 1
  %1185 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %160) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %161) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %161)
          to label %1186 unwind label %1221

1186:                                             ; preds = %1184
  %1187 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1188 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1187) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1185, ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull align 8 dereferenceable(44) %1188)
          to label %1189 unwind label %1225

1189:                                             ; preds = %1186
  store i1 false, ptr %162, align 1
  invoke void @__cxa_throw(ptr %1185, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1225

1190:                                             ; preds = %1150
  %1191 = landingpad { ptr, i32 }
          cleanup
  %1192 = extractvalue { ptr, i32 } %1191, 0
  store ptr %1192, ptr %6, align 8
  %1193 = extractvalue { ptr, i32 } %1191, 1
  store i32 %1193, ptr %7, align 4
  br label %1198

1194:                                             ; preds = %1151
  %1195 = landingpad { ptr, i32 }
          cleanup
  %1196 = extractvalue { ptr, i32 } %1195, 0
  store ptr %1196, ptr %6, align 8
  %1197 = extractvalue { ptr, i32 } %1195, 1
  store i32 %1197, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #7
  br label %1198

1198:                                             ; preds = %1194, %1190
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %147) #7
  br label %1324

1199:                                             ; preds = %1152
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %6, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %7, align 4
  br label %1207

1203:                                             ; preds = %1160
  %1204 = landingpad { ptr, i32 }
          cleanup
  %1205 = extractvalue { ptr, i32 } %1204, 0
  store ptr %1205, ptr %6, align 8
  %1206 = extractvalue { ptr, i32 } %1204, 1
  store i32 %1206, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #7
  br label %1207

1207:                                             ; preds = %1203, %1199
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %152) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %149) #7
  br label %1323

1208:                                             ; preds = %1161
  %1209 = landingpad { ptr, i32 }
          cleanup
  %1210 = extractvalue { ptr, i32 } %1209, 0
  store ptr %1210, ptr %6, align 8
  %1211 = extractvalue { ptr, i32 } %1209, 1
  store i32 %1211, ptr %7, align 4
  br label %1216

1212:                                             ; preds = %1171
  %1213 = landingpad { ptr, i32 }
          cleanup
  %1214 = extractvalue { ptr, i32 } %1213, 0
  store ptr %1214, ptr %6, align 8
  %1215 = extractvalue { ptr, i32 } %1213, 1
  store i32 %1215, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  br label %1216

1216:                                             ; preds = %1212, %1208
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %153) #7
  br label %1323

1217:                                             ; preds = %1172
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %6, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %7, align 4
  br label %1322

1221:                                             ; preds = %1184
  %1222 = landingpad { ptr, i32 }
          cleanup
  %1223 = extractvalue { ptr, i32 } %1222, 0
  store ptr %1223, ptr %6, align 8
  %1224 = extractvalue { ptr, i32 } %1222, 1
  store i32 %1224, ptr %7, align 4
  br label %1229

1225:                                             ; preds = %1189, %1186
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %6, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #7
  br label %1229

1229:                                             ; preds = %1225, %1221
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %161) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %160) #7
  %1230 = load i1, ptr %162, align 1
  br i1 %1230, label %1231, label %1232

1231:                                             ; preds = %1229
  call void @__cxa_free_exception(ptr %1185) #7
  br label %1232

1232:                                             ; preds = %1231, %1229
  br label %1322

1233:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 136, ptr %163) #7
  %1234 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %164) #7
  %1235 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1236 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1235) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %164, ptr noundef nonnull align 8 dereferenceable(44) %1236)
          to label %1237 unwind label %1272

1237:                                             ; preds = %1233
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8 %163, ptr noundef nonnull align 8 dereferenceable(380) %1234, ptr noundef nonnull align 8 dereferenceable(32) %164)
          to label %1238 unwind label %1276

1238:                                             ; preds = %1237
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #7
  %1239 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1240 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1239, i32 noundef 0) #7
  %1241 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %165, i32 0, i32 0
  store ptr %1240, ptr %1241, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #7
  call void @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %166) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %167) #7
  call void @_ZNSt6vectorI5TokenSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #7
  %1242 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #7
  %1243 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %1244 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1243) #7
  %1245 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %168, i32 0, i32 0
  store ptr %1244, ptr %1245, align 8
  %1246 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %1242, ptr noundef nonnull align 8 dereferenceable(8) %168) #7
  br i1 %1246, label %1247, label %1266

1247:                                             ; preds = %1238
  %1248 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1249 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1248) #7
  %1250 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %1249)
          to label %1251 unwind label %1281

1251:                                             ; preds = %1247
  %1252 = icmp eq i32 %1250, 3
  br i1 %1252, label %1264, label %1253

1253:                                             ; preds = %1251
  %1254 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1255 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1254) #7
  %1256 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %1255)
          to label %1257 unwind label %1281

1257:                                             ; preds = %1253
  %1258 = icmp eq i32 %1256, 4
  br i1 %1258, label %1264, label %1259

1259:                                             ; preds = %1257
  %1260 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1261 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1260) #7
  %1262 = invoke noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %1261)
          to label %1263 unwind label %1281

1263:                                             ; preds = %1259
  br label %1264

1264:                                             ; preds = %1263, %1257, %1251
  %1265 = phi i1 [ true, %1257 ], [ true, %1251 ], [ %1262, %1263 ]
  br label %1266

1266:                                             ; preds = %1264, %1238
  %1267 = phi i1 [ false, %1238 ], [ %1265, %1264 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #7
  br i1 %1267, label %1268, label %1285

1268:                                             ; preds = %1266
  %1269 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %166, ptr align 8 %1269, i64 8, i1 false), !tbaa.struct !11
  %1270 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %1270, i64 noundef 1) #7
  br label %1309

1272:                                             ; preds = %1233
  %1273 = landingpad { ptr, i32 }
          cleanup
  %1274 = extractvalue { ptr, i32 } %1273, 0
  store ptr %1274, ptr %6, align 8
  %1275 = extractvalue { ptr, i32 } %1273, 1
  store i32 %1275, ptr %7, align 4
  br label %1280

1276:                                             ; preds = %1237
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %6, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  br label %1280

1280:                                             ; preds = %1276, %1272
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #7
  br label %1321

1281:                                             ; preds = %1259, %1253, %1247
  %1282 = landingpad { ptr, i32 }
          cleanup
  %1283 = extractvalue { ptr, i32 } %1282, 0
  store ptr %1283, ptr %6, align 8
  %1284 = extractvalue { ptr, i32 } %1282, 1
  store i32 %1284, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #7
  br label %1320

1285:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 48, ptr %169) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %170) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %171) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %171)
          to label %1286 unwind label %1295

1286:                                             ; preds = %1285
  %1287 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %158) #7
  %1288 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %1287)
          to label %1289 unwind label %1299

1289:                                             ; preds = %1286
  invoke void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44) %169, ptr noundef nonnull align 8 dereferenceable(32) %170, i32 noundef %1288)
          to label %1290 unwind label %1299

1290:                                             ; preds = %1289
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %170) #7
  invoke void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44) %169, i32 noundef 3)
          to label %1291 unwind label %1304

1291:                                             ; preds = %1290
  invoke void @_ZNSt6vectorI5TokenSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(44) %169)
          to label %1292 unwind label %1304

1292:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #7
  %1293 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #7
  %1294 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %172, i32 0, i32 0
  store ptr %1293, ptr %1294, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %166, ptr align 8 %172, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %169) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %169) #7
  br label %1309

1295:                                             ; preds = %1285
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %6, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %7, align 4
  br label %1303

1299:                                             ; preds = %1289, %1286
  %1300 = landingpad { ptr, i32 }
          cleanup
  %1301 = extractvalue { ptr, i32 } %1300, 0
  store ptr %1301, ptr %6, align 8
  %1302 = extractvalue { ptr, i32 } %1300, 1
  store i32 %1302, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #7
  br label %1303

1303:                                             ; preds = %1299, %1295
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %171) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %170) #7
  br label %1308

1304:                                             ; preds = %1291, %1290
  %1305 = landingpad { ptr, i32 }
          cleanup
  %1306 = extractvalue { ptr, i32 } %1305, 0
  store ptr %1306, ptr %6, align 8
  %1307 = extractvalue { ptr, i32 } %1305, 1
  store i32 %1307, ptr %7, align 4
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %169) #7
  br label %1308

1308:                                             ; preds = %1304, %1303
  call void @llvm.lifetime.end.p0(i64 48, ptr %169) #7
  br label %1320

1309:                                             ; preds = %1292, %1268
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %173, ptr align 8 %158, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %174, ptr align 8 %166, i64 8, i1 false), !tbaa.struct !11
  %1310 = load ptr, ptr %4, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %173, i32 0, i32 0
  %1312 = load ptr, ptr %1311, align 8
  %1313 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %174, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(129) %146, ptr %1312, ptr noundef nonnull align 8 dereferenceable(136) %163, ptr %1314, ptr noundef nonnull align 8 dereferenceable(80) %1310)
          to label %1315 unwind label %1316

1315:                                             ; preds = %1309
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %167) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %163) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %146) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %146) #7
  br label %1659

1316:                                             ; preds = %1309
  %1317 = landingpad { ptr, i32 }
          cleanup
  %1318 = extractvalue { ptr, i32 } %1317, 0
  store ptr %1318, ptr %6, align 8
  %1319 = extractvalue { ptr, i32 } %1317, 1
  store i32 %1319, ptr %7, align 4
  br label %1320

1320:                                             ; preds = %1316, %1308, %1281
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %167) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %163) #7
  br label %1321

1321:                                             ; preds = %1320, %1280
  call void @llvm.lifetime.end.p0(i64 136, ptr %163) #7
  br label %1322

1322:                                             ; preds = %1321, %1232, %1217
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  br label %1323

1323:                                             ; preds = %1322, %1216, %1207
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %146) #7
  br label %1324

1324:                                             ; preds = %1323, %1198
  call void @llvm.lifetime.end.p0(i64 136, ptr %146) #7
  br label %1660

1325:                                             ; preds = %1127
  store i1 true, ptr %178, align 1
  %1326 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %175) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %176) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %177) #7
  %1327 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1328 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1327) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %177, ptr noundef nonnull align 8 dereferenceable(44) %1328)
          to label %1329 unwind label %1335

1329:                                             ; preds = %1325
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %176, ptr noundef @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %177)
          to label %1330 unwind label %1339

1330:                                             ; preds = %1329
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %175, ptr noundef nonnull align 8 dereferenceable(32) %176, ptr noundef @.str.25)
          to label %1331 unwind label %1343

1331:                                             ; preds = %1330
  %1332 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1333 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1332) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1326, ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull align 8 dereferenceable(44) %1333)
          to label %1334 unwind label %1347

1334:                                             ; preds = %1331
  store i1 false, ptr %178, align 1
  invoke void @__cxa_throw(ptr %1326, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1347

1335:                                             ; preds = %1325
  %1336 = landingpad { ptr, i32 }
          cleanup
  %1337 = extractvalue { ptr, i32 } %1336, 0
  store ptr %1337, ptr %6, align 8
  %1338 = extractvalue { ptr, i32 } %1336, 1
  store i32 %1338, ptr %7, align 4
  br label %1353

1339:                                             ; preds = %1329
  %1340 = landingpad { ptr, i32 }
          cleanup
  %1341 = extractvalue { ptr, i32 } %1340, 0
  store ptr %1341, ptr %6, align 8
  %1342 = extractvalue { ptr, i32 } %1340, 1
  store i32 %1342, ptr %7, align 4
  br label %1352

1343:                                             ; preds = %1330
  %1344 = landingpad { ptr, i32 }
          cleanup
  %1345 = extractvalue { ptr, i32 } %1344, 0
  store ptr %1345, ptr %6, align 8
  %1346 = extractvalue { ptr, i32 } %1344, 1
  store i32 %1346, ptr %7, align 4
  br label %1351

1347:                                             ; preds = %1334, %1331
  %1348 = landingpad { ptr, i32 }
          cleanup
  %1349 = extractvalue { ptr, i32 } %1348, 0
  store ptr %1349, ptr %6, align 8
  %1350 = extractvalue { ptr, i32 } %1348, 1
  store i32 %1350, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #7
  br label %1351

1351:                                             ; preds = %1347, %1343
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #7
  br label %1352

1352:                                             ; preds = %1351, %1339
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %177) #7
  br label %1353

1353:                                             ; preds = %1352, %1335
  call void @llvm.lifetime.end.p0(i64 32, ptr %177) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %176) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %175) #7
  %1354 = load i1, ptr %178, align 1
  br i1 %1354, label %1355, label %1356

1355:                                             ; preds = %1353
  call void @__cxa_free_exception(ptr %1326) #7
  br label %1356

1356:                                             ; preds = %1355, %1353
  br label %1660

1357:                                             ; preds = %235
  %1358 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %231, i32 noundef 1)
  br i1 %1358, label %1377, label %1359

1359:                                             ; preds = %1357
  store i1 true, ptr %181, align 1
  %1360 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %179) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %180) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %1361 unwind label %1365

1361:                                             ; preds = %1359
  %1362 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1363 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1362) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1360, ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(44) %1363)
          to label %1364 unwind label %1369

1364:                                             ; preds = %1361
  store i1 false, ptr %181, align 1
  invoke void @__cxa_throw(ptr %1360, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1369

1365:                                             ; preds = %1359
  %1366 = landingpad { ptr, i32 }
          cleanup
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %6, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %7, align 4
  br label %1373

1369:                                             ; preds = %1364, %1361
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %6, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #7
  br label %1373

1373:                                             ; preds = %1369, %1365
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %179) #7
  %1374 = load i1, ptr %181, align 1
  br i1 %1374, label %1375, label %1376

1375:                                             ; preds = %1373
  call void @__cxa_free_exception(ptr %1360) #7
  br label %1376

1376:                                             ; preds = %1375, %1373
  br label %1660

1377:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 136, ptr %182) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %183) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %1378 unwind label %1452

1378:                                             ; preds = %1377
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %182, ptr noundef nonnull align 8 dereferenceable(32) %183)
          to label %1379 unwind label %1456

1379:                                             ; preds = %1378
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %185) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #7
  store i32 1, ptr %187, align 4, !tbaa !12
  %1380 = getelementptr inbounds i32, ptr %187, i64 1
  store i32 0, ptr %1380, align 4, !tbaa !12
  %1381 = getelementptr inbounds %"class.std::initializer_list", ptr %186, i32 0, i32 0
  store ptr %187, ptr %1381, align 8, !tbaa !14
  %1382 = getelementptr inbounds %"class.std::initializer_list", ptr %186, i32 0, i32 1
  store i64 2, ptr %1382, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %188) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #7
  %1383 = getelementptr inbounds { ptr, i64 }, ptr %186, i32 0, i32 0
  %1384 = load ptr, ptr %1383, align 8
  %1385 = getelementptr inbounds { ptr, i64 }, ptr %186, i32 0, i32 1
  %1386 = load i64, ptr %1385, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr %1384, i64 %1386, ptr noundef nonnull align 1 dereferenceable(1) %188)
          to label %1387 unwind label %1461

1387:                                             ; preds = %1379
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %182, ptr noundef nonnull align 8 dereferenceable(24) %185)
          to label %1388 unwind label %1465

1388:                                             ; preds = %1387
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %185) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %188) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %185) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %189) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #7
  store i32 4, ptr %191, align 4, !tbaa !12
  %1389 = getelementptr inbounds %"class.std::initializer_list", ptr %190, i32 0, i32 0
  store ptr %191, ptr %1389, align 8, !tbaa !14
  %1390 = getelementptr inbounds %"class.std::initializer_list", ptr %190, i32 0, i32 1
  store i64 1, ptr %1390, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %192) #7
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #7
  %1391 = getelementptr inbounds { ptr, i64 }, ptr %190, i32 0, i32 0
  %1392 = load ptr, ptr %1391, align 8
  %1393 = getelementptr inbounds { ptr, i64 }, ptr %190, i32 0, i32 1
  %1394 = load i64, ptr %1393, align 8
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr %1392, i64 %1394, ptr noundef nonnull align 1 dereferenceable(1) %192)
          to label %1395 unwind label %1470

1395:                                             ; preds = %1388
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %182, ptr noundef nonnull align 8 dereferenceable(24) %189)
          to label %1396 unwind label %1474

1396:                                             ; preds = %1395
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #7
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %189) #7
  call void @llvm.lifetime.start.p0(i64 136, ptr %193) #7
  %1397 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %194) #7
  %1398 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1399 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1398) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %194, ptr noundef nonnull align 8 dereferenceable(44) %1399)
          to label %1400 unwind label %1479

1400:                                             ; preds = %1396
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8 %193, ptr noundef nonnull align 8 dereferenceable(380) %1397, ptr noundef nonnull align 8 dereferenceable(32) %194)
          to label %1401 unwind label %1483

1401:                                             ; preds = %1400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #7
  %1402 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1403 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1402, i32 noundef 0) #7
  %1404 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %195, i32 0, i32 0
  store ptr %1403, ptr %1404, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #7
  %1405 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %196, ptr align 8 %1405, i64 8, i1 false), !tbaa.struct !11
  %1406 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1407 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %1406, i32 noundef 0) #7
  %1408 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %197, i32 0, i32 0
  store ptr %1407, ptr %1408, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #7
  call void @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %199) #7
  call void @_ZNSt6vectorI5TokenSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %199) #7
  %1409 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #7
  %1410 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %1411 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1410) #7
  %1412 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %200, i32 0, i32 0
  store ptr %1411, ptr %1412, align 8
  %1413 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %1409, ptr noundef nonnull align 8 dereferenceable(8) %200) #7
  br i1 %1413, label %1414, label %1420

1414:                                             ; preds = %1401
  %1415 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1416 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1415) #7
  %1417 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %1416)
          to label %1418 unwind label %1488

1418:                                             ; preds = %1414
  %1419 = icmp eq i32 %1417, 2
  br label %1420

1420:                                             ; preds = %1418, %1401
  %1421 = phi i1 [ false, %1401 ], [ %1419, %1418 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #7
  br i1 %1421, label %1422, label %1584

1422:                                             ; preds = %1420
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #7
  %1423 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1424 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %1423, i64 noundef 1) #7
  %1425 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %201, i32 0, i32 0
  store ptr %1424, ptr %1425, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #7
  %1426 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 0
  %1427 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1426) #7
  %1428 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %202, i32 0, i32 0
  store ptr %1427, ptr %1428, align 8
  %1429 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %202) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #7
  br i1 %1429, label %1430, label %1562

1430:                                             ; preds = %1422
  call void @llvm.lifetime.start.p0(i64 32, ptr %203) #7
  %1431 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1432 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1431) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %203, ptr noundef nonnull align 8 dereferenceable(44) %1432)
          to label %1433 unwind label %1492

1433:                                             ; preds = %1430
  %1434 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef @.str.42)
          to label %1435 unwind label %1496

1435:                                             ; preds = %1433
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #7
  br i1 %1434, label %1436, label %1523

1436:                                             ; preds = %1435
  call void @llvm.lifetime.start.p0(i64 32, ptr %204) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #7
  %1437 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1438 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %1437, i64 noundef 1) #7
  %1439 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %205, i32 0, i32 0
  store ptr %1438, ptr %1439, align 8
  %1440 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %205) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %204, ptr noundef nonnull align 8 dereferenceable(44) %1440)
          to label %1441 unwind label %1501

1441:                                             ; preds = %1436
  %1442 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %204, ptr noundef @.str.43)
          to label %1443 unwind label %1505

1443:                                             ; preds = %1441
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  br i1 %1442, label %1444, label %1522

1444:                                             ; preds = %1443
  store i1 true, ptr %209, align 1
  %1445 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %206) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %207) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %207) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %207)
          to label %1446 unwind label %1510

1446:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #7
  %1447 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1448 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %1447, i64 noundef 1) #7
  %1449 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %208, i32 0, i32 0
  store ptr %1448, ptr %1449, align 8
  %1450 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %208) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1445, ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef nonnull align 8 dereferenceable(44) %1450)
          to label %1451 unwind label %1514

1451:                                             ; preds = %1446
  store i1 false, ptr %209, align 1
  invoke void @__cxa_throw(ptr %1445, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1514

1452:                                             ; preds = %1377
  %1453 = landingpad { ptr, i32 }
          cleanup
  %1454 = extractvalue { ptr, i32 } %1453, 0
  store ptr %1454, ptr %6, align 8
  %1455 = extractvalue { ptr, i32 } %1453, 1
  store i32 %1455, ptr %7, align 4
  br label %1460

1456:                                             ; preds = %1378
  %1457 = landingpad { ptr, i32 }
          cleanup
  %1458 = extractvalue { ptr, i32 } %1457, 0
  store ptr %1458, ptr %6, align 8
  %1459 = extractvalue { ptr, i32 } %1457, 1
  store i32 %1459, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #7
  br label %1460

1460:                                             ; preds = %1456, %1452
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %184) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %183) #7
  br label %1622

1461:                                             ; preds = %1379
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %6, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %7, align 4
  br label %1469

1465:                                             ; preds = %1387
  %1466 = landingpad { ptr, i32 }
          cleanup
  %1467 = extractvalue { ptr, i32 } %1466, 0
  store ptr %1467, ptr %6, align 8
  %1468 = extractvalue { ptr, i32 } %1466, 1
  store i32 %1468, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %185) #7
  br label %1469

1469:                                             ; preds = %1465, %1461
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %188) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %185) #7
  br label %1621

1470:                                             ; preds = %1388
  %1471 = landingpad { ptr, i32 }
          cleanup
  %1472 = extractvalue { ptr, i32 } %1471, 0
  store ptr %1472, ptr %6, align 8
  %1473 = extractvalue { ptr, i32 } %1471, 1
  store i32 %1473, ptr %7, align 4
  br label %1478

1474:                                             ; preds = %1395
  %1475 = landingpad { ptr, i32 }
          cleanup
  %1476 = extractvalue { ptr, i32 } %1475, 0
  store ptr %1476, ptr %6, align 8
  %1477 = extractvalue { ptr, i32 } %1475, 1
  store i32 %1477, ptr %7, align 4
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #7
  br label %1478

1478:                                             ; preds = %1474, %1470
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %192) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %189) #7
  br label %1621

1479:                                             ; preds = %1396
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %6, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %7, align 4
  br label %1487

1483:                                             ; preds = %1400
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %6, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #7
  br label %1487

1487:                                             ; preds = %1483, %1479
  call void @llvm.lifetime.end.p0(i64 32, ptr %194) #7
  br label %1620

1488:                                             ; preds = %1414
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %6, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #7
  br label %1619

1492:                                             ; preds = %1430
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %6, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %7, align 4
  br label %1500

1496:                                             ; preds = %1433
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %6, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #7
  br label %1500

1500:                                             ; preds = %1496, %1492
  call void @llvm.lifetime.end.p0(i64 32, ptr %203) #7
  br label %1619

1501:                                             ; preds = %1436
  %1502 = landingpad { ptr, i32 }
          cleanup
  %1503 = extractvalue { ptr, i32 } %1502, 0
  store ptr %1503, ptr %6, align 8
  %1504 = extractvalue { ptr, i32 } %1502, 1
  store i32 %1504, ptr %7, align 4
  br label %1509

1505:                                             ; preds = %1441
  %1506 = landingpad { ptr, i32 }
          cleanup
  %1507 = extractvalue { ptr, i32 } %1506, 0
  store ptr %1507, ptr %6, align 8
  %1508 = extractvalue { ptr, i32 } %1506, 1
  store i32 %1508, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  br label %1509

1509:                                             ; preds = %1505, %1501
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  br label %1619

1510:                                             ; preds = %1444
  %1511 = landingpad { ptr, i32 }
          cleanup
  %1512 = extractvalue { ptr, i32 } %1511, 0
  store ptr %1512, ptr %6, align 8
  %1513 = extractvalue { ptr, i32 } %1511, 1
  store i32 %1513, ptr %7, align 4
  br label %1518

1514:                                             ; preds = %1451, %1446
  %1515 = landingpad { ptr, i32 }
          cleanup
  %1516 = extractvalue { ptr, i32 } %1515, 0
  store ptr %1516, ptr %6, align 8
  %1517 = extractvalue { ptr, i32 } %1515, 1
  store i32 %1517, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #7
  br label %1518

1518:                                             ; preds = %1514, %1510
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %207) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %207) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %206) #7
  %1519 = load i1, ptr %209, align 1
  br i1 %1519, label %1520, label %1521

1520:                                             ; preds = %1518
  call void @__cxa_free_exception(ptr %1445) #7
  br label %1521

1521:                                             ; preds = %1520, %1518
  br label %1619

1522:                                             ; preds = %1443
  br label %1561

1523:                                             ; preds = %1435
  call void @llvm.lifetime.start.p0(i64 32, ptr %210) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #7
  %1524 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1525 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %1524, i64 noundef 1) #7
  %1526 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %211, i32 0, i32 0
  store ptr %1525, ptr %1526, align 8
  %1527 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %211) #7
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %210, ptr noundef nonnull align 8 dereferenceable(44) %1527)
          to label %1528 unwind label %1539

1528:                                             ; preds = %1523
  %1529 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef @.str.45)
          to label %1530 unwind label %1543

1530:                                             ; preds = %1528
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  br i1 %1529, label %1531, label %1560

1531:                                             ; preds = %1530
  store i1 true, ptr %215, align 1
  %1532 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %212) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %213) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %213)
          to label %1533 unwind label %1548

1533:                                             ; preds = %1531
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #7
  %1534 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1535 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %1534, i64 noundef 1) #7
  %1536 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %214, i32 0, i32 0
  store ptr %1535, ptr %1536, align 8
  %1537 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %214) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1532, ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef nonnull align 8 dereferenceable(44) %1537)
          to label %1538 unwind label %1552

1538:                                             ; preds = %1533
  store i1 false, ptr %215, align 1
  invoke void @__cxa_throw(ptr %1532, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1552

1539:                                             ; preds = %1523
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %6, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %7, align 4
  br label %1547

1543:                                             ; preds = %1528
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %6, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #7
  br label %1547

1547:                                             ; preds = %1543, %1539
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %210) #7
  br label %1619

1548:                                             ; preds = %1531
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %6, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %7, align 4
  br label %1556

1552:                                             ; preds = %1538, %1533
  %1553 = landingpad { ptr, i32 }
          cleanup
  %1554 = extractvalue { ptr, i32 } %1553, 0
  store ptr %1554, ptr %6, align 8
  %1555 = extractvalue { ptr, i32 } %1553, 1
  store i32 %1555, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #7
  br label %1556

1556:                                             ; preds = %1552, %1548
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %213) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %213) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %212) #7
  %1557 = load i1, ptr %215, align 1
  br i1 %1557, label %1558, label %1559

1558:                                             ; preds = %1556
  call void @__cxa_free_exception(ptr %1532) #7
  br label %1559

1559:                                             ; preds = %1558, %1556
  br label %1619

1560:                                             ; preds = %1530
  br label %1561

1561:                                             ; preds = %1560, %1522
  br label %1580

1562:                                             ; preds = %1422
  store i1 true, ptr %218, align 1
  %1563 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %216) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %217) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %217) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef @.str.47, ptr noundef nonnull align 1 dereferenceable(1) %217)
          to label %1564 unwind label %1568

1564:                                             ; preds = %1562
  %1565 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1566 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1565) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1563, ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 8 dereferenceable(44) %1566)
          to label %1567 unwind label %1572

1567:                                             ; preds = %1564
  store i1 false, ptr %218, align 1
  invoke void @__cxa_throw(ptr %1563, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1572

1568:                                             ; preds = %1562
  %1569 = landingpad { ptr, i32 }
          cleanup
  %1570 = extractvalue { ptr, i32 } %1569, 0
  store ptr %1570, ptr %6, align 8
  %1571 = extractvalue { ptr, i32 } %1569, 1
  store i32 %1571, ptr %7, align 4
  br label %1576

1572:                                             ; preds = %1567, %1564
  %1573 = landingpad { ptr, i32 }
          cleanup
  %1574 = extractvalue { ptr, i32 } %1573, 0
  store ptr %1574, ptr %6, align 8
  %1575 = extractvalue { ptr, i32 } %1573, 1
  store i32 %1575, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #7
  br label %1576

1576:                                             ; preds = %1572, %1568
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %217) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %217) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #7
  %1577 = load i1, ptr %218, align 1
  br i1 %1577, label %1578, label %1579

1578:                                             ; preds = %1576
  call void @__cxa_free_exception(ptr %1563) #7
  br label %1579

1579:                                             ; preds = %1578, %1576
  br label %1619

1580:                                             ; preds = %1561
  %1581 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %198, ptr align 8 %1581, i64 8, i1 false), !tbaa.struct !11
  %1582 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1583 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %1582, i64 noundef 2) #7
  br label %1608

1584:                                             ; preds = %1420
  call void @llvm.lifetime.start.p0(i64 48, ptr %219) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %220) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %221) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef @.str.42, ptr noundef nonnull align 1 dereferenceable(1) %221)
          to label %1585 unwind label %1594

1585:                                             ; preds = %1584
  %1586 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %196) #7
  %1587 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %1586)
          to label %1588 unwind label %1598

1588:                                             ; preds = %1585
  invoke void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44) %219, ptr noundef nonnull align 8 dereferenceable(32) %220, i32 noundef %1587)
          to label %1589 unwind label %1598

1589:                                             ; preds = %1588
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %221) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %220) #7
  invoke void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44) %219, i32 noundef 2)
          to label %1590 unwind label %1603

1590:                                             ; preds = %1589
  invoke void @_ZNSt6vectorI5TokenSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 8 dereferenceable(44) %219)
          to label %1591 unwind label %1603

1591:                                             ; preds = %1590
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #7
  %1592 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #7
  %1593 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %222, i32 0, i32 0
  store ptr %1592, ptr %1593, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %198, ptr align 8 %222, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #7
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %219) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %219) #7
  br label %1608

1594:                                             ; preds = %1584
  %1595 = landingpad { ptr, i32 }
          cleanup
  %1596 = extractvalue { ptr, i32 } %1595, 0
  store ptr %1596, ptr %6, align 8
  %1597 = extractvalue { ptr, i32 } %1595, 1
  store i32 %1597, ptr %7, align 4
  br label %1602

1598:                                             ; preds = %1588, %1585
  %1599 = landingpad { ptr, i32 }
          cleanup
  %1600 = extractvalue { ptr, i32 } %1599, 0
  store ptr %1600, ptr %6, align 8
  %1601 = extractvalue { ptr, i32 } %1599, 1
  store i32 %1601, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #7
  br label %1602

1602:                                             ; preds = %1598, %1594
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %221) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %221) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %220) #7
  br label %1607

1603:                                             ; preds = %1590, %1589
  %1604 = landingpad { ptr, i32 }
          cleanup
  %1605 = extractvalue { ptr, i32 } %1604, 0
  store ptr %1605, ptr %6, align 8
  %1606 = extractvalue { ptr, i32 } %1604, 1
  store i32 %1606, ptr %7, align 4
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %219) #7
  br label %1607

1607:                                             ; preds = %1603, %1602
  call void @llvm.lifetime.end.p0(i64 48, ptr %219) #7
  br label %1619

1608:                                             ; preds = %1591, %1580
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %223, ptr align 8 %196, i64 8, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %224, ptr align 8 %198, i64 8, i1 false), !tbaa.struct !11
  %1609 = load ptr, ptr %4, align 8, !tbaa !5
  %1610 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %223, i32 0, i32 0
  %1611 = load ptr, ptr %1610, align 8
  %1612 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %224, i32 0, i32 0
  %1613 = load ptr, ptr %1612, align 8
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %231, ptr noundef nonnull align 8 dereferenceable(129) %182, ptr %1611, ptr noundef nonnull align 8 dereferenceable(136) %193, ptr %1613, ptr noundef nonnull align 8 dereferenceable(80) %1609)
          to label %1614 unwind label %1615

1614:                                             ; preds = %1608
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %199) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %193) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %193) #7
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %182) #7
  call void @llvm.lifetime.end.p0(i64 136, ptr %182) #7
  br label %1659

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

1619:                                             ; preds = %1615, %1607, %1579, %1559, %1547, %1521, %1509, %1500, %1488
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %199) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #7
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %193) #7
  br label %1620

1620:                                             ; preds = %1619, %1487
  call void @llvm.lifetime.end.p0(i64 136, ptr %193) #7
  br label %1621

1621:                                             ; preds = %1620, %1478, %1469
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %182) #7
  br label %1622

1622:                                             ; preds = %1621, %1460
  call void @llvm.lifetime.end.p0(i64 136, ptr %182) #7
  br label %1660

1623:                                             ; preds = %235
  store i1 true, ptr %227, align 1
  %1624 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %225) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %226) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %226) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %225, ptr noundef @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %226)
          to label %1625 unwind label %1629

1625:                                             ; preds = %1623
  %1626 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1627 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1626) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1624, ptr noundef nonnull align 8 dereferenceable(32) %225, ptr noundef nonnull align 8 dereferenceable(44) %1627)
          to label %1628 unwind label %1633

1628:                                             ; preds = %1625
  store i1 false, ptr %227, align 1
  invoke void @__cxa_throw(ptr %1624, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1633

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

1633:                                             ; preds = %1628, %1625
  %1634 = landingpad { ptr, i32 }
          cleanup
  %1635 = extractvalue { ptr, i32 } %1634, 0
  store ptr %1635, ptr %6, align 8
  %1636 = extractvalue { ptr, i32 } %1634, 1
  store i32 %1636, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %225) #7
  br label %1637

1637:                                             ; preds = %1633, %1629
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %226) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %225) #7
  %1638 = load i1, ptr %227, align 1
  br i1 %1638, label %1639, label %1640

1639:                                             ; preds = %1637
  call void @__cxa_free_exception(ptr %1624) #7
  br label %1640

1640:                                             ; preds = %1639, %1637
  br label %1660

1641:                                             ; preds = %2
  store i1 true, ptr %230, align 1
  %1642 = call ptr @__cxa_allocate_exception(i64 72) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %228) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %229)
          to label %1643 unwind label %1647

1643:                                             ; preds = %1641
  %1644 = getelementptr inbounds %class.Parser, ptr %231, i32 0, i32 2
  %1645 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1644) #7
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %1642, ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(44) %1645)
          to label %1646 unwind label %1651

1646:                                             ; preds = %1643
  store i1 false, ptr %230, align 1
  invoke void @__cxa_throw(ptr %1642, ptr @_ZTI14TokenException, ptr @_ZN14TokenExceptionD2Ev) #8
          to label %1665 unwind label %1651

1647:                                             ; preds = %1641
  %1648 = landingpad { ptr, i32 }
          cleanup
  %1649 = extractvalue { ptr, i32 } %1648, 0
  store ptr %1649, ptr %6, align 8
  %1650 = extractvalue { ptr, i32 } %1648, 1
  store i32 %1650, ptr %7, align 4
  br label %1655

1651:                                             ; preds = %1646, %1643
  %1652 = landingpad { ptr, i32 }
          cleanup
  %1653 = extractvalue { ptr, i32 } %1652, 0
  store ptr %1653, ptr %6, align 8
  %1654 = extractvalue { ptr, i32 } %1652, 1
  store i32 %1654, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #7
  br label %1655

1655:                                             ; preds = %1651, %1647
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %229) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %228) #7
  %1656 = load i1, ptr %230, align 1
  br i1 %1656, label %1657, label %1658

1657:                                             ; preds = %1655
  call void @__cxa_free_exception(ptr %1642) #7
  br label %1658

1658:                                             ; preds = %1657, %1655
  br label %1660

1659:                                             ; preds = %1614, %1315, %1075, %993, %509, %250
  ret void

1660:                                             ; preds = %1658, %1640, %1622, %1376, %1356, %1324, %1149, %1134, %1122, %1027, %1012, %1000, %600, %516, %284, %266, %254
  %1661 = load ptr, ptr %6, align 8
  %1662 = load i32, ptr %7, align 4
  %1663 = insertvalue { ptr, i32 } poison, ptr %1661, 0
  %1664 = insertvalue { ptr, i32 } %1663, i32 %1662, 1
  resume { ptr, i32 } %1664

1665:                                             ; preds = %1646, %1628, %1567, %1538, %1451, %1364, %1334, %1189, %1133, %1011, %910, %729, %688, %643, %564, %401, %358, %322, %283
  unreachable
}

declare noundef i32 @_ZNK5Token20getKeyphraseCategoryEv(ptr noundef nonnull align 8 dereferenceable(44)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232), i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

declare void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8, ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) #4

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

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

declare void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129), ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

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

declare void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129), ptr noundef nonnull align 8 dereferenceable(24)) #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL25tokenIsComparisonOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) #5

declare void @_ZNK14FetlangManager21getComparisonOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.ComparisonOperator) align 8, ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) #5

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

declare void @_ZN7Grammar11setReversedEb(ptr noundef nonnull align 8 dereferenceable(129), i1 noundef zeroext) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15tokenIsOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) #5

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

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

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

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

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

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

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

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

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

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


; 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.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.SyntaxTree::Node" = type { ptr, %class.Token, %"class.std::vector.8" }
%class.Token = type <{ i32, [4 x i8], %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SyntaxTree::Node, std::allocator<SyntaxTree::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.5" = type { i8 }
%class.Operator = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::set", %"class.std::map.62" }
%"class.std::set" = type { %"class.std::_Rb_tree.42" }
%"class.std::_Rb_tree.42" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.62" = type { %"class.std::_Rb_tree.63" }
%"class.std::_Rb_tree.63" = type { %"struct.std::_Rb_tree<FetType, std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>, std::_Select1st<std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>>, std::less<FetType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<FetType, std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>, std::_Select1st<std::pair<const FetType, std::map<FetType, std::__cxx11::basic_string<char>>>>, std::less<FetType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.Grammar = type <{ %"class.std::__cxx11::basic_string", %"class.std::set.68", %"class.std::set.68", i8, [7 x i8] }>
%"class.std::set.68" = type { %"class.std::_Rb_tree.69" }
%"class.std::_Rb_tree.69" = type { %"struct.std::_Rb_tree<Grammar::OperandType, Grammar::OperandType, std::_Identity<Grammar::OperandType>, std::less<Grammar::OperandType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Grammar::OperandType, Grammar::OperandType, std::_Identity<Grammar::OperandType>, std::less<Grammar::OperandType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl" }
%"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl" = type { %"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Grammar::OperandType, std::allocator<Grammar::OperandType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.76" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.ComparisonOperator = type { %class.Operator }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl" }
%"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl" = type { %"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Token, std::allocator<Token>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@manager = external local_unnamed_addr constant ptr, align 8
@_ZTI14TokenException = external constant ptr
@.str.15 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [71 x i8], align 1

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

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

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

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

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

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

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

declare noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3

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

declare void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) local_unnamed_addr #3

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

declare void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #4 align 2

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef nonnull align 8 dereferenceable(129), ptr, ptr noundef nonnull align 8 dereferenceable(136), ptr, ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

declare noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3

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

declare void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.SyntaxTree::Node", align 8
  %5 = alloca %class.Token, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.5", align 1
  %9 = alloca %"class.SyntaxTree::Node", align 8
  %10 = alloca %class.Token, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.5", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.5", align 1
  %16 = alloca %class.Operator, align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.5", align 1
  %20 = alloca %class.Grammar, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.5", align 1
  %23 = alloca %"class.std::vector.74", align 8
  %24 = alloca [2 x i32], align 4
  %25 = alloca %"class.std::allocator.76", align 1
  %26 = alloca %"class.std::vector.74", align 8
  %27 = alloca [3 x i32], align 4
  %28 = alloca %"class.std::allocator.76", align 1
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.SyntaxTree::Node", align 8
  %37 = alloca %class.Token, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.5", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.5", align 1
  %42 = alloca %class.ComparisonOperator, align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.5", align 1
  %46 = alloca %class.Grammar, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.5", align 1
  %49 = alloca %"class.std::vector.74", align 8
  %50 = alloca [1 x i32], align 4
  %51 = alloca %"class.std::allocator.76", align 1
  %52 = alloca %"class.std::vector.74", align 8
  %53 = alloca [1 x i32], align 4
  %54 = alloca %"class.std::allocator.76", align 1
  %55 = alloca %"class.std::vector.74", align 8
  %56 = alloca [1 x i32], align 4
  %57 = alloca %"class.std::allocator.76", align 1
  %58 = alloca %"class.std::vector.74", align 8
  %59 = alloca [1 x i32], align 4
  %60 = alloca %"class.std::allocator.76", align 1
  %61 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.5", align 1
  %66 = alloca %"class.SyntaxTree::Node", align 8
  %67 = alloca %class.Token, align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.5", align 1
  %72 = alloca %class.Grammar, align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator.5", align 1
  %75 = alloca %"class.std::vector.74", align 8
  %76 = alloca [2 x i32], align 4
  %77 = alloca %"class.std::allocator.76", align 1
  %78 = alloca %"class.std::vector.74", align 8
  %79 = alloca [3 x i32], align 4
  %80 = alloca %"class.std::allocator.76", align 1
  %81 = alloca %class.Operator, align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.5", align 1
  %86 = alloca %class.Grammar, align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.5", align 1
  %89 = alloca %"class.std::vector.74", align 8
  %90 = alloca [2 x i32], align 4
  %91 = alloca %"class.std::allocator.76", align 1
  %92 = alloca %"class.std::vector.74", align 8
  %93 = alloca [4 x i32], align 16
  %94 = alloca %"class.std::allocator.76", align 1
  %95 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator.5", align 1
  %98 = alloca %class.Operator, align 8
  %99 = alloca %"class.std::__cxx11::basic_string", align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %101 = alloca %"class.std::vector", align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %103 = alloca %class.Token, align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator.5", align 1
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::__cxx11::basic_string", align 8
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca %"class.std::allocator.5", align 1
  %111 = alloca %class.Grammar, align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator.5", align 1
  %114 = alloca %"class.std::vector.74", align 8
  %115 = alloca [2 x i32], align 4
  %116 = alloca %"class.std::allocator.76", align 1
  %117 = alloca %"class.std::vector.74", align 8
  %118 = alloca [1 x i32], align 4
  %119 = alloca %"class.std::allocator.76", align 1
  %120 = alloca %class.Operator, align 8
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %123 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %124 = alloca %"class.std::vector", align 8
  %125 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %126 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %127 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::allocator.5", align 1
  %133 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %134 = alloca %"class.std::__cxx11::basic_string", align 8
  %135 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %136 = alloca %"class.std::__cxx11::basic_string", align 8
  %137 = alloca %"class.std::allocator.5", align 1
  %138 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca %"class.std::allocator.5", align 1
  %141 = alloca %class.Token, align 8
  %142 = alloca %"class.std::__cxx11::basic_string", align 8
  %143 = alloca %"class.std::allocator.5", align 1
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator.5", align 1
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.std::allocator.5", align 1
  %148 = getelementptr inbounds i8, ptr %0, i64 48
  %149 = tail call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %150 = tail call noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %149)
  %cond = icmp eq i32 %150, 1
  br i1 %cond, label %151, label %850

151:                                              ; preds = %2
  %152 = tail call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %153 = tail call noundef i32 @_ZNK5Token20getKeyphraseCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %152)
  switch i32 %153, label %841 [
    i32 0, label %154
    i32 1, label %704
  ]

154:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  %155 = tail call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(44) %155)
  %156 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.15)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br i1 %156, label %157, label %168

157:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %4) #6
  %158 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %5, ptr noundef nonnull align 8 dereferenceable(44) %158)
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %4, ptr noundef nonnull %5)
          to label %159 unwind label %163

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 8 dereferenceable(80) %4)
          to label %161 unwind label %165

161:                                              ; preds = %159
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %4) #6
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %4) #6
  %162 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  br label %859

163:                                              ; preds = %157
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %167

165:                                              ; preds = %159
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %4) #6
  br label %167

167:                                              ; preds = %165, %163
  %.pn380 = phi { ptr, i32 } [ %166, %165 ], [ %164, %163 ]
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %4) #6
  br label %860

168:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  %169 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(44) %169)
  %170 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.16)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br i1 %170, label %171, label %294

171:                                              ; preds = %168
  %172 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %173 = call noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %172)
  %174 = call noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %173)
  %175 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef 4)
  br i1 %175, label %185, label %176

176:                                              ; preds = %171
  %177 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %178 unwind label %.thread

178:                                              ; preds = %176
  %179 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %177, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(44) %179)
          to label %180 unwind label %182

180:                                              ; preds = %178
  invoke void @__cxa_throw(ptr nonnull %177, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %182

.thread:                                          ; preds = %176
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br label %184

182:                                              ; preds = %178, %180
  %.0204 = phi i1 [ false, %180 ], [ true, %178 ]
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  br i1 %.0204, label %184, label %860

184:                                              ; preds = %.thread, %182
  %.pn356393 = phi { ptr, i32 } [ %181, %.thread ], [ %183, %182 ]
  call void @__cxa_free_exception(ptr %177) #6
  br label %860

185:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #6
  %186 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %10, ptr noundef nonnull align 8 dereferenceable(44) %186)
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull %10)
          to label %187 unwind label %201

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %189 unwind label %203

189:                                              ; preds = %187
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #6
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #6
  %190 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %191 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %192 = call noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %191)
  br i1 %192, label %210, label %193

193:                                              ; preds = %189
  %194 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %195 = call noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %194)
  br i1 %195, label %210, label %196

196:                                              ; preds = %193
  %197 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %198 unwind label %.thread394

198:                                              ; preds = %196
  %199 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %197, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(44) %199)
          to label %200 unwind label %207

200:                                              ; preds = %198
  invoke void @__cxa_throw(ptr nonnull %197, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %207

201:                                              ; preds = %185
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %187
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #6
  br label %205

205:                                              ; preds = %203, %201
  %.pn358 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #6
  br label %860

.thread394:                                       ; preds = %196
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %209

207:                                              ; preds = %198, %200
  %.0212 = phi i1 [ false, %200 ], [ true, %198 ]
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br i1 %.0212, label %209, label %860

209:                                              ; preds = %.thread394, %207
  %.pn360397 = phi { ptr, i32 } [ %206, %.thread394 ], [ %208, %207 ]
  call void @__cxa_free_exception(ptr %197) #6
  br label %860

210:                                              ; preds = %193, %189
  %.sroa.099.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %211 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  %212 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(44) %212)
  %213 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.19)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br i1 %213, label %214, label %223

214:                                              ; preds = %210
  %215 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %216 unwind label %.thread398

216:                                              ; preds = %214
  %217 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %215, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(44) %217)
          to label %218 unwind label %220

218:                                              ; preds = %216
  invoke void @__cxa_throw(ptr nonnull %215, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %220

.thread398:                                       ; preds = %214
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %222

220:                                              ; preds = %216, %218
  %.0214 = phi i1 [ false, %218 ], [ true, %216 ]
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br i1 %.0214, label %222, label %860

222:                                              ; preds = %.thread398, %220
  %.pn375401 = phi { ptr, i32 } [ %219, %.thread398 ], [ %221, %220 ]
  call void @__cxa_free_exception(ptr %215) #6
  br label %860

223:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %16) #6
  %224 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  %225 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(44) %225)
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.Operator) align 8 %16, ptr noundef nonnull align 8 dereferenceable(380) %224, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %226 unwind label %244

226:                                              ; preds = %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  %227 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %228 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %229 = invoke noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %228)
          to label %230 unwind label %246

230:                                              ; preds = %226
  br i1 %229, label %252, label %231

231:                                              ; preds = %230
  %232 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %233 = invoke noundef zeroext i1 @_ZL23tokenIsObjectivePronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %232)
          to label %234 unwind label %246

234:                                              ; preds = %231
  br i1 %233, label %252, label %235

235:                                              ; preds = %234
  %236 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %237 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %236)
          to label %238 unwind label %246

238:                                              ; preds = %235
  %239 = icmp eq i32 %237, 3
  br i1 %239, label %252, label %240

240:                                              ; preds = %238
  %241 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %242 unwind label %.thread402

242:                                              ; preds = %240
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %241, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %243 unwind label %249

243:                                              ; preds = %242
  invoke void @__cxa_throw(ptr nonnull %241, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %249

244:                                              ; preds = %223
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %293

246:                                              ; preds = %235, %231, %226
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %292

.thread402:                                       ; preds = %240
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br label %251

249:                                              ; preds = %242, %243
  %.0216 = phi i1 [ false, %243 ], [ true, %242 ]
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br i1 %.0216, label %251, label %292

251:                                              ; preds = %.thread402, %249
  %.pn362405 = phi { ptr, i32 } [ %248, %.thread402 ], [ %250, %249 ]
  call void @__cxa_free_exception(ptr %241) #6
  br label %292

252:                                              ; preds = %238, %234, %230
  %.sroa.094.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %253 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %254 unwind label %273

254:                                              ; preds = %252
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %20, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %255 unwind label %275

255:                                              ; preds = %254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  store i32 0, ptr %24, align 4, !tbaa !9
  %256 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 1, ptr %256, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr nonnull %24, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %257 unwind label %278

257:                                              ; preds = %255
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %20, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %258 unwind label %280

258:                                              ; preds = %257
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %27) #6
  store i32 0, ptr %27, align 4, !tbaa !9
  %259 = getelementptr inbounds i8, ptr %27, i64 4
  store i32 1, ptr %259, align 4, !tbaa !9
  %260 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 3, ptr %260, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr nonnull %27, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %261 unwind label %283

261:                                              ; preds = %258
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %20, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %262 unwind label %285

262:                                              ; preds = %261
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(129) %20, ptr %.sroa.099.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %16, ptr %.sroa.094.0.copyload, ptr noundef nonnull align 8 dereferenceable(80) %188)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %262, %272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  %263 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %263, ptr %29, align 8
  %264 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  br i1 %264, label %265, label %.critedge

265:                                              ; preds = %.preheader
  %266 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %267 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %266)
          to label %268 unwind label %288

268:                                              ; preds = %265
  %269 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %267)
          to label %270 unwind label %288

270:                                              ; preds = %268
  %271 = icmp slt i32 %174, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br i1 %271, label %272, label %.loopexit

272:                                              ; preds = %270
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(80) %188)
          to label %.preheader unwind label %.loopexit480, !llvm.loop !11

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

275:                                              ; preds = %254
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %277

277:                                              ; preds = %275, %273
  %.pn364 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %291

278:                                              ; preds = %255
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %282

280:                                              ; preds = %257
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  br label %282

282:                                              ; preds = %280, %278
  %.pn366 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  br label %290

283:                                              ; preds = %258
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %261
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  br label %287

287:                                              ; preds = %285, %283
  %.pn368 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  br label %290

.loopexit480:                                     ; preds = %272
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %290

.loopexit.split-lp:                               ; preds = %262
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %290

288:                                              ; preds = %268, %265
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %290

.critedge:                                        ; preds = %.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %.loopexit

.loopexit:                                        ; preds = %270, %.critedge
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %20) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %20) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %16) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %16) #6
  br label %859

290:                                              ; preds = %.loopexit480, %.loopexit.split-lp, %288, %287, %282
  %.pn370 = phi { ptr, i32 } [ %289, %288 ], [ %.pn368, %287 ], [ %.pn366, %282 ], [ %lpad.loopexit, %.loopexit480 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %20) #6
  br label %291

291:                                              ; preds = %290, %277
  %.pn370.pn = phi { ptr, i32 } [ %.pn370, %290 ], [ %.pn364, %277 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %20) #6
  br label %292

292:                                              ; preds = %249, %251, %291, %246
  %.pn370.pn.pn = phi { ptr, i32 } [ %.pn370.pn, %291 ], [ %.pn362405, %251 ], [ %250, %249 ], [ %247, %246 ]
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %16) #6
  br label %293

293:                                              ; preds = %292, %244
  %.pn370.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn, %292 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %16) #6
  br label %860

294:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  %295 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(44) %295)
  %296 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.22)
  br i1 %296, label %.critedge388.thread, label %297

.critedge388.thread:                              ; preds = %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %304

297:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #6
  %298 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(44) %298)
          to label %299 unwind label %318

299:                                              ; preds = %297
  %300 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.23)
  br i1 %300, label %.critedge479, label %301

301:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #6
  %302 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(44) %302)
          to label %.critedge386.thread unwind label %320

.critedge386.thread:                              ; preds = %301
  %303 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.24)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br i1 %303, label %304, label %516

.critedge479:                                     ; preds = %299
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %304

304:                                              ; preds = %.critedge479, %.critedge388.thread, %.critedge386.thread
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #6
  %305 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(44) %305)
  %306 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %307 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %306)
          to label %308 unwind label %323

308:                                              ; preds = %304
  %309 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %307)
          to label %310 unwind label %323

310:                                              ; preds = %308
  %311 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef 4)
  br i1 %311, label %330, label %312

312:                                              ; preds = %310
  %313 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull @.str.25, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %314 unwind label %.thread409

314:                                              ; preds = %312
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.26)
          to label %315 unwind label %.thread413

315:                                              ; preds = %314
  %316 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %313, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(44) %316)
          to label %317 unwind label %327

317:                                              ; preds = %315
  invoke void @__cxa_throw(ptr nonnull %313, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %327

318:                                              ; preds = %297
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %322

320:                                              ; preds = %301
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %322

322:                                              ; preds = %318, %320
  %.pn272 = phi { ptr, i32 } [ %321, %320 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %860

323:                                              ; preds = %308, %304
  %324 = landingpad { ptr, i32 }
          cleanup
  br label %515

.thread409:                                       ; preds = %312
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br label %329

.thread413:                                       ; preds = %314
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br label %329

327:                                              ; preds = %315, %317
  %.0228 = phi i1 [ false, %317 ], [ true, %315 ]
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br i1 %.0228, label %329, label %515

329:                                              ; preds = %.thread413, %.thread409, %327
  %.pn314.pn412 = phi { ptr, i32 } [ %325, %.thread409 ], [ %328, %327 ], [ %326, %.thread413 ]
  call void @__cxa_free_exception(ptr %313) #6
  br label %515

330:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %36) #6
  %331 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %37, ptr noundef nonnull align 8 dereferenceable(44) %331)
          to label %332 unwind label %345

332:                                              ; preds = %330
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %36, ptr noundef nonnull %37)
          to label %333 unwind label %347

333:                                              ; preds = %332
  %334 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 8 dereferenceable(80) %36)
          to label %335 unwind label %349

335:                                              ; preds = %333
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %36) #6
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %36) #6
  %336 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %337 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %338 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %337)
          to label %339 unwind label %353

339:                                              ; preds = %335
  %.not = icmp eq i32 %338, 4
  br i1 %.not, label %359, label %340

340:                                              ; preds = %339
  %341 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %342 unwind label %.thread416

342:                                              ; preds = %340
  %343 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %341, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(44) %343)
          to label %344 unwind label %356

344:                                              ; preds = %342
  invoke void @__cxa_throw(ptr nonnull %341, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %356

345:                                              ; preds = %330
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %352

347:                                              ; preds = %332
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %351

349:                                              ; preds = %333
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %36) #6
  br label %351

351:                                              ; preds = %349, %347
  %.pn317 = phi { ptr, i32 } [ %350, %349 ], [ %348, %347 ]
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #6
  br label %352

352:                                              ; preds = %351, %345
  %.pn317.pn = phi { ptr, i32 } [ %.pn317, %351 ], [ %346, %345 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %36) #6
  br label %515

353:                                              ; preds = %335
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %515

.thread416:                                       ; preds = %340
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br label %358

356:                                              ; preds = %342, %344
  %.0231 = phi i1 [ false, %344 ], [ true, %342 ]
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br i1 %.0231, label %358, label %515

358:                                              ; preds = %.thread416, %356
  %.pn352419 = phi { ptr, i32 } [ %355, %.thread416 ], [ %357, %356 ]
  call void @__cxa_free_exception(ptr %341) #6
  br label %515

359:                                              ; preds = %339
  %.sroa.072.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %360 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %361 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %362 = invoke noundef zeroext i1 @_ZL25tokenIsComparisonOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %361)
          to label %363 unwind label %369

363:                                              ; preds = %359
  br i1 %362, label %375, label %364

364:                                              ; preds = %363
  %365 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %366 unwind label %.thread420

366:                                              ; preds = %364
  %367 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %365, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(44) %367)
          to label %368 unwind label %372

368:                                              ; preds = %366
  invoke void @__cxa_throw(ptr nonnull %365, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %372

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

.thread420:                                       ; preds = %364
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  br label %374

372:                                              ; preds = %366, %368
  %.0233 = phi i1 [ false, %368 ], [ true, %366 ]
  %373 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  br i1 %.0233, label %374, label %515

374:                                              ; preds = %.thread420, %372
  %.pn320423 = phi { ptr, i32 } [ %371, %.thread420 ], [ %373, %372 ]
  call void @__cxa_free_exception(ptr %365) #6
  br label %515

375:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %42) #6
  %376 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  %377 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(44) %377)
          to label %378 unwind label %393

378:                                              ; preds = %375
  invoke void @_ZNK14FetlangManager21getComparisonOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.ComparisonOperator) align 8 %42, ptr noundef nonnull align 8 dereferenceable(380) %376, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %379 unwind label %395

379:                                              ; preds = %378
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  %380 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %381 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %382 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %381)
          to label %383 unwind label %398

383:                                              ; preds = %379
  %.not324 = icmp eq i32 %382, 4
  br i1 %.not324, label %404, label %384

384:                                              ; preds = %383
  %385 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %386 = invoke noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %385)
          to label %387 unwind label %398

387:                                              ; preds = %384
  br i1 %386, label %404, label %388

388:                                              ; preds = %387
  %389 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %390 unwind label %.thread424

390:                                              ; preds = %388
  %391 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %389, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(44) %391)
          to label %392 unwind label %401

392:                                              ; preds = %390
  invoke void @__cxa_throw(ptr nonnull %389, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %401

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

395:                                              ; preds = %378
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %397

397:                                              ; preds = %395, %393
  %.pn322 = phi { ptr, i32 } [ %396, %395 ], [ %394, %393 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  br label %514

398:                                              ; preds = %384, %379
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %513

.thread424:                                       ; preds = %388
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  br label %403

401:                                              ; preds = %390, %392
  %.0237 = phi i1 [ false, %392 ], [ true, %390 ]
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  br i1 %.0237, label %403, label %513

403:                                              ; preds = %.thread424, %401
  %.pn325427 = phi { ptr, i32 } [ %400, %.thread424 ], [ %402, %401 ]
  call void @__cxa_free_exception(ptr %389) #6
  br label %513

404:                                              ; preds = %387, %383
  %.sroa.067.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %405 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %406 unwind label %426

406:                                              ; preds = %404
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %46, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %407 unwind label %428

407:                                              ; preds = %406
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #6
  store i32 0, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr nonnull %50, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %408 unwind label %431

408:                                              ; preds = %407
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %46, ptr noundef nonnull align 8 dereferenceable(24) %49)
          to label %409 unwind label %433

409:                                              ; preds = %408
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #6
  store i32 0, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr nonnull %53, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %410 unwind label %436

410:                                              ; preds = %409
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %46, ptr noundef nonnull align 8 dereferenceable(24) %52)
          to label %411 unwind label %438

411:                                              ; preds = %410
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #6
  store i32 1, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr nonnull %56, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %412 unwind label %441

412:                                              ; preds = %411
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %46, ptr noundef nonnull align 8 dereferenceable(24) %55)
          to label %413 unwind label %443

413:                                              ; preds = %412
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #6
  store i32 2, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr nonnull %59, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %414 unwind label %446

414:                                              ; preds = %413
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %46, ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %415 unwind label %448

415:                                              ; preds = %414
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #6
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(129) %46, ptr %.sroa.072.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %42, ptr %.sroa.067.0.copyload, ptr noundef nonnull align 8 dereferenceable(80) %334)
          to label %.preheader482 unwind label %.loopexit.split-lp485

.preheader482:                                    ; preds = %415, %425
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  %416 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %416, ptr %61, align 8
  %417 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  br i1 %417, label %418, label %.critedge2

418:                                              ; preds = %.preheader482
  %419 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %420 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %419)
          to label %421 unwind label %451

421:                                              ; preds = %418
  %422 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %420)
          to label %423 unwind label %451

423:                                              ; preds = %421
  %424 = icmp slt i32 %309, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  br i1 %424, label %425, label %.loopexit483

425:                                              ; preds = %423
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(80) %334)
          to label %.preheader482 unwind label %.loopexit484, !llvm.loop !13

426:                                              ; preds = %404
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %430

428:                                              ; preds = %406
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %430

430:                                              ; preds = %428, %426
  %.pn327 = phi { ptr, i32 } [ %429, %428 ], [ %427, %426 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  br label %512

431:                                              ; preds = %407
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %435

433:                                              ; preds = %408
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #6
  br label %435

435:                                              ; preds = %433, %431
  %.pn329 = phi { ptr, i32 } [ %434, %433 ], [ %432, %431 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #6
  br label %511

436:                                              ; preds = %409
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %440

438:                                              ; preds = %410
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #6
  br label %440

440:                                              ; preds = %438, %436
  %.pn331 = phi { ptr, i32 } [ %439, %438 ], [ %437, %436 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #6
  br label %511

441:                                              ; preds = %411
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %445

443:                                              ; preds = %412
  %444 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #6
  br label %445

445:                                              ; preds = %443, %441
  %.pn333 = phi { ptr, i32 } [ %444, %443 ], [ %442, %441 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #6
  br label %511

446:                                              ; preds = %413
  %447 = landingpad { ptr, i32 }
          cleanup
  br label %450

448:                                              ; preds = %414
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #6
  br label %450

450:                                              ; preds = %448, %446
  %.pn335 = phi { ptr, i32 } [ %449, %448 ], [ %447, %446 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #6
  br label %511

.loopexit484:                                     ; preds = %425
  %lpad.loopexit486 = landingpad { ptr, i32 }
          cleanup
  br label %511

.loopexit.split-lp485:                            ; preds = %415
  %lpad.loopexit.split-lp487 = landingpad { ptr, i32 }
          cleanup
  br label %511

451:                                              ; preds = %421, %418
  %452 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  br label %511

.critedge2:                                       ; preds = %.preheader482
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  br label %.loopexit483

.loopexit483:                                     ; preds = %423, %.critedge2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #6
  %453 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %453, ptr %62, align 8
  %454 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %62) #6
  br i1 %454, label %455, label %.critedge390.thread

.critedge390.thread:                              ; preds = %.loopexit483
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  br label %.loopexit481

455:                                              ; preds = %.loopexit483
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #6
  %456 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(44) %456)
          to label %457 unwind label %472

457:                                              ; preds = %455
  %458 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.31)
  br i1 %458, label %459, label %.critedge390.thread430

.critedge390.thread430:                           ; preds = %457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  br label %.loopexit481

459:                                              ; preds = %457
  %460 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %461 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %460)
          to label %462 unwind label %474

462:                                              ; preds = %459
  %463 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %461)
          to label %.critedge390 unwind label %474

.critedge390:                                     ; preds = %462
  %464 = icmp eq i32 %309, %463
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  br i1 %464, label %465, label %.loopexit481

465:                                              ; preds = %.critedge390
  %466 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.22)
  br i1 %466, label %467, label %481

467:                                              ; preds = %465
  %468 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %469 unwind label %.thread432

469:                                              ; preds = %467
  %470 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %468, ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(44) %470)
          to label %471 unwind label %478

471:                                              ; preds = %469
  invoke void @__cxa_throw(ptr nonnull %468, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %478

472:                                              ; preds = %455
  %473 = landingpad { ptr, i32 }
          cleanup
  br label %476

474:                                              ; preds = %462, %459
  %475 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %476

476:                                              ; preds = %472, %474
  %.pn337 = phi { ptr, i32 } [ %475, %474 ], [ %473, %472 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  br label %511

.thread432:                                       ; preds = %467
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #6
  br label %480

478:                                              ; preds = %469, %471
  %.0241 = phi i1 [ false, %471 ], [ true, %469 ]
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #6
  br i1 %.0241, label %480, label %511

480:                                              ; preds = %.thread432, %478
  %.pn344435 = phi { ptr, i32 } [ %477, %.thread432 ], [ %479, %478 ]
  call void @__cxa_free_exception(ptr %468) #6
  br label %511

481:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %66) #6
  %482 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN5TokenC2ERKS_(ptr noundef nonnull align 8 dereferenceable(44) %67, ptr noundef nonnull align 8 dereferenceable(44) %482)
          to label %483 unwind label %499

483:                                              ; preds = %481
  invoke void @_ZN10SyntaxTree4NodeC1E5Token(ptr noundef nonnull align 8 dereferenceable(80) %66, ptr noundef nonnull %67)
          to label %484 unwind label %501

484:                                              ; preds = %483
  %485 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN10SyntaxTree4Node8addChildERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 8 dereferenceable(80) %66)
          to label %486 unwind label %503

486:                                              ; preds = %484
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %66) #6
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %67) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %66) #6
  %487 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  br label %488

488:                                              ; preds = %498, %486
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #6
  %489 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %489, ptr %68, align 8
  %490 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %68) #6
  br i1 %490, label %491, label %.critedge4

491:                                              ; preds = %488
  %492 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %493 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %492)
          to label %494 unwind label %507

494:                                              ; preds = %491
  %495 = invoke noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef %493)
          to label %496 unwind label %507

496:                                              ; preds = %494
  %497 = icmp slt i32 %309, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  br i1 %497, label %498, label %.loopexit481

498:                                              ; preds = %496
  invoke void @_ZN6Parser10formBranchERN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(80) %485)
          to label %488 unwind label %509, !llvm.loop !14

499:                                              ; preds = %481
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %506

501:                                              ; preds = %483
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %505

503:                                              ; preds = %484
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SyntaxTree4NodeD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %66) #6
  br label %505

505:                                              ; preds = %503, %501
  %.pn339 = phi { ptr, i32 } [ %504, %503 ], [ %502, %501 ]
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %67) #6
  br label %506

506:                                              ; preds = %505, %499
  %.pn339.pn = phi { ptr, i32 } [ %.pn339, %505 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %66) #6
  br label %511

507:                                              ; preds = %494, %491
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  br label %511

509:                                              ; preds = %498
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %511

.critedge4:                                       ; preds = %488
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #6
  br label %.loopexit481

.loopexit481:                                     ; preds = %496, %.critedge390.thread430, %.critedge390.thread, %.critedge4, %.critedge390
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %46) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %46) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %42) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %859

511:                                              ; preds = %.loopexit484, %.loopexit.split-lp485, %506, %507, %509, %478, %480, %476, %451, %450, %445, %440, %435
  %.pn346 = phi { ptr, i32 } [ %.pn344435, %480 ], [ %479, %478 ], [ %.pn337, %476 ], [ %452, %451 ], [ %.pn335, %450 ], [ %.pn333, %445 ], [ %.pn331, %440 ], [ %.pn329, %435 ], [ %510, %509 ], [ %508, %507 ], [ %.pn339.pn, %506 ], [ %lpad.loopexit486, %.loopexit484 ], [ %lpad.loopexit.split-lp487, %.loopexit.split-lp485 ]
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %46) #6
  br label %512

512:                                              ; preds = %511, %430
  %.pn346.pn = phi { ptr, i32 } [ %.pn346, %511 ], [ %.pn327, %430 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %46) #6
  br label %513

513:                                              ; preds = %401, %403, %512, %398
  %.pn346.pn.pn = phi { ptr, i32 } [ %.pn346.pn, %512 ], [ %.pn325427, %403 ], [ %402, %401 ], [ %399, %398 ]
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %42) #6
  br label %514

514:                                              ; preds = %513, %397
  %.pn346.pn.pn.pn = phi { ptr, i32 } [ %.pn346.pn.pn, %513 ], [ %.pn322, %397 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %42) #6
  br label %515

515:                                              ; preds = %352, %353, %358, %356, %372, %374, %514, %369, %327, %329, %323
  %.pn352.pn.pn = phi { ptr, i32 } [ %.pn314.pn412, %329 ], [ %328, %327 ], [ %324, %323 ], [ %.pn352419, %358 ], [ %357, %356 ], [ %354, %353 ], [ %.pn317.pn, %352 ], [ %.pn346.pn.pn.pn, %514 ], [ %.pn320423, %374 ], [ %373, %372 ], [ %370, %369 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %860

516:                                              ; preds = %.critedge386.thread
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #6
  %517 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(44) %517)
  %518 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull @.str.33)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #6
  br i1 %518, label %519, label %576

519:                                              ; preds = %516
  %520 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef 3)
  br i1 %520, label %529, label %521

521:                                              ; preds = %519
  %522 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %523 unwind label %.thread436

523:                                              ; preds = %521
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %522, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %524 unwind label %526

524:                                              ; preds = %523
  invoke void @__cxa_throw(ptr nonnull %522, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %526

.thread436:                                       ; preds = %521
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #6
  br label %528

526:                                              ; preds = %523, %524
  %.0243 = phi i1 [ false, %524 ], [ true, %523 ]
  %527 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #6
  br i1 %.0243, label %528, label %860

528:                                              ; preds = %.thread436, %526
  %.pn300439 = phi { ptr, i32 } [ %525, %.thread436 ], [ %527, %526 ]
  call void @__cxa_free_exception(ptr %522) #6
  br label %860

529:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %73) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %530 unwind label %549

530:                                              ; preds = %529
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %72, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %531 unwind label %551

531:                                              ; preds = %530
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #6
  invoke void @_ZN7Grammar11setReversedEb(ptr noundef nonnull align 8 dereferenceable(129) %72, i1 noundef zeroext true)
          to label %532 unwind label %554

532:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #6
  store i32 1, ptr %76, align 4, !tbaa !9
  %533 = getelementptr inbounds i8, ptr %76, i64 4
  store i32 0, ptr %533, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr nonnull %76, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %534 unwind label %556

534:                                              ; preds = %532
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %72, ptr noundef nonnull align 8 dereferenceable(24) %75)
          to label %535 unwind label %558

535:                                              ; preds = %534
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %79) #6
  store i32 1, ptr %79, align 4, !tbaa !9
  %536 = getelementptr inbounds i8, ptr %79, i64 4
  store i32 0, ptr %536, align 4, !tbaa !9
  %537 = getelementptr inbounds i8, ptr %79, i64 8
  store i32 2, ptr %537, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr nonnull %79, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %538 unwind label %561

538:                                              ; preds = %535
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %72, ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %539 unwind label %563

539:                                              ; preds = %538
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #6
  %540 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %.sroa.042.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %541 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %81) #6
  %542 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #6
  %543 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(44) %543)
          to label %544 unwind label %566

544:                                              ; preds = %539
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.Operator) align 8 %81, ptr noundef nonnull align 8 dereferenceable(380) %542, ptr noundef nonnull align 8 dereferenceable(32) %82)
          to label %545 unwind label %568

545:                                              ; preds = %544
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #6
  %546 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %.sroa.039.0.copyload = load ptr, ptr %148, align 8, !tbaa !5
  %547 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(129) %72, ptr %.sroa.042.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %81, ptr %.sroa.039.0.copyload, ptr noundef nonnull align 8 dereferenceable(80) %1)
          to label %548 unwind label %571

548:                                              ; preds = %545
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %81) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %81) #6
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %72) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %72) #6
  br label %859

549:                                              ; preds = %529
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %553

551:                                              ; preds = %530
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  br label %553

553:                                              ; preds = %551, %549
  %.pn302 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %73) #6
  br label %575

554:                                              ; preds = %531
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %574

556:                                              ; preds = %532
  %557 = landingpad { ptr, i32 }
          cleanup
  br label %560

558:                                              ; preds = %534
  %559 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  br label %560

560:                                              ; preds = %558, %556
  %.pn304 = phi { ptr, i32 } [ %559, %558 ], [ %557, %556 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #6
  br label %574

561:                                              ; preds = %535
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %565

563:                                              ; preds = %538
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #6
  br label %565

565:                                              ; preds = %563, %561
  %.pn306 = phi { ptr, i32 } [ %564, %563 ], [ %562, %561 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #6
  br label %574

566:                                              ; preds = %539
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %570

568:                                              ; preds = %544
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #6
  br label %570

570:                                              ; preds = %568, %566
  %.pn308 = phi { ptr, i32 } [ %569, %568 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #6
  br label %573

571:                                              ; preds = %545
  %572 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %81) #6
  br label %573

573:                                              ; preds = %571, %570
  %.pn310 = phi { ptr, i32 } [ %572, %571 ], [ %.pn308, %570 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %81) #6
  br label %574

574:                                              ; preds = %573, %565, %560, %554
  %.pn310.pn = phi { ptr, i32 } [ %.pn310, %573 ], [ %.pn306, %565 ], [ %.pn304, %560 ], [ %555, %554 ]
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %72) #6
  br label %575

575:                                              ; preds = %574, %553
  %.pn310.pn.pn = phi { ptr, i32 } [ %.pn310.pn, %574 ], [ %.pn302, %553 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %72) #6
  br label %860

576:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #6
  %577 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  call void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, ptr noundef nonnull align 8 dereferenceable(44) %577)
  %578 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull @.str.35)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #6
  br i1 %578, label %579, label %688

579:                                              ; preds = %576
  %580 = call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef 2)
  br i1 %580, label %589, label %581

581:                                              ; preds = %579
  %582 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %84) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull @.str.36, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %583 unwind label %.thread440

583:                                              ; preds = %581
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(72) %582, ptr noundef nonnull align 8 dereferenceable(32) %84)
          to label %584 unwind label %586

584:                                              ; preds = %583
  invoke void @__cxa_throw(ptr nonnull %582, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %586

.thread440:                                       ; preds = %581
  %585 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  br label %588

586:                                              ; preds = %583, %584
  %.0245 = phi i1 [ false, %584 ], [ true, %583 ]
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %84) #6
  br i1 %.0245, label %588, label %860

588:                                              ; preds = %.thread440, %586
  %.pn278443 = phi { ptr, i32 } [ %585, %.thread440 ], [ %587, %586 ]
  call void @__cxa_free_exception(ptr %582) #6
  br label %860

589:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %86) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %88) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %590 unwind label %609

590:                                              ; preds = %589
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %86, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %591 unwind label %611

591:                                              ; preds = %590
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #6
  store i32 1, ptr %90, align 4, !tbaa !9
  %592 = getelementptr inbounds i8, ptr %90, i64 4
  store i32 0, ptr %592, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr nonnull %90, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %593 unwind label %614

593:                                              ; preds = %591
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %86, ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %594 unwind label %616

594:                                              ; preds = %593
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %92) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #6
  store <4 x i32> <i32 1, i32 0, i32 2, i32 3>, ptr %93, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %94) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr nonnull %93, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %595 unwind label %619

595:                                              ; preds = %594
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %86, ptr noundef nonnull align 8 dereferenceable(24) %92)
          to label %596 unwind label %621

596:                                              ; preds = %595
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %92) #6
  %597 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #6
  %598 = load i64, ptr %148, align 8, !tbaa !5
  store i64 %598, ptr %95, align 8, !tbaa !5
  %599 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  %600 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %601 = inttoptr i64 %598 to ptr
  %602 = invoke noundef zeroext i1 @_ZL15tokenIsOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %600)
          to label %603 unwind label %624

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

604:                                              ; preds = %603
  %605 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull @.str.37, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %606 unwind label %.thread444

606:                                              ; preds = %604
  %607 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %605, ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(44) %607)
          to label %608 unwind label %627

608:                                              ; preds = %606
  invoke void @__cxa_throw(ptr nonnull %605, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %627

609:                                              ; preds = %589
  %610 = landingpad { ptr, i32 }
          cleanup
  br label %613

611:                                              ; preds = %590
  %612 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  br label %613

613:                                              ; preds = %611, %609
  %.pn280 = phi { ptr, i32 } [ %612, %611 ], [ %610, %609 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %88) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #6
  br label %687

614:                                              ; preds = %591
  %615 = landingpad { ptr, i32 }
          cleanup
  br label %618

616:                                              ; preds = %593
  %617 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #6
  br label %618

618:                                              ; preds = %616, %614
  %.pn282 = phi { ptr, i32 } [ %617, %616 ], [ %615, %614 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %89) #6
  br label %686

619:                                              ; preds = %594
  %620 = landingpad { ptr, i32 }
          cleanup
  br label %623

621:                                              ; preds = %595
  %622 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #6
  br label %623

623:                                              ; preds = %621, %619
  %.pn284 = phi { ptr, i32 } [ %622, %621 ], [ %620, %619 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %92) #6
  br label %686

624:                                              ; preds = %596
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %685

.thread444:                                       ; preds = %604
  %626 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  br label %629

627:                                              ; preds = %606, %608
  %.0235 = phi i1 [ false, %608 ], [ true, %606 ]
  %628 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  br i1 %.0235, label %629, label %685

629:                                              ; preds = %.thread444, %627
  %.pn286447 = phi { ptr, i32 } [ %626, %.thread444 ], [ %628, %627 ]
  call void @__cxa_free_exception(ptr %605) #6
  br label %685

630:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %98) #6
  %631 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #6
  %632 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %99, ptr noundef nonnull align 8 dereferenceable(44) %632)
          to label %633 unwind label %655

633:                                              ; preds = %630
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.Operator) align 8 %98, ptr noundef nonnull align 8 dereferenceable(380) %631, ptr noundef nonnull align 8 dereferenceable(32) %99)
          to label %634 unwind label %657

634:                                              ; preds = %633
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #6
  %635 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #6
  call void @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %101) #6
  call void @_ZNSt6vectorI5TokenSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #6
  %636 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %636, ptr %102, align 8
  %637 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %102) #6
  br i1 %637, label %638, label %.critedge6

638:                                              ; preds = %634
  %639 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %640 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %639)
          to label %641 unwind label %660

641:                                              ; preds = %638
  %642 = icmp eq i32 %640, 3
  br i1 %642, label %.critedge8, label %643

643:                                              ; preds = %641
  %644 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %645 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %644)
          to label %646 unwind label %660

646:                                              ; preds = %643
  %647 = icmp eq i32 %645, 4
  br i1 %647, label %.critedge8, label %648

648:                                              ; preds = %646
  %649 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %650 = invoke noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44) %649)
          to label %651 unwind label %660

651:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  br i1 %650, label %652, label %662

.critedge8:                                       ; preds = %641, %646
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  br label %652

652:                                              ; preds = %.critedge8, %651
  %653 = load i64, ptr %148, align 8, !tbaa !5
  store i64 %653, ptr %100, align 8, !tbaa !5
  %654 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  br label %679

655:                                              ; preds = %630
  %656 = landingpad { ptr, i32 }
          cleanup
  br label %659

657:                                              ; preds = %633
  %658 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #6
  br label %659

659:                                              ; preds = %657, %655
  %.pn288 = phi { ptr, i32 } [ %658, %657 ], [ %656, %655 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #6
  br label %684

660:                                              ; preds = %648, %643, %638
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  br label %683

.critedge6:                                       ; preds = %634
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #6
  br label %662

662:                                              ; preds = %.critedge6, %651
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %103) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %104) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %663 unwind label %671

663:                                              ; preds = %662
  %664 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %95) #6
  %665 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %664)
          to label %666 unwind label %673

666:                                              ; preds = %663
  invoke void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44) %103, ptr noundef nonnull align 8 dereferenceable(32) %104, i32 noundef %665)
          to label %667 unwind label %673

667:                                              ; preds = %666
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #6
  invoke void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44) %103, i32 noundef 3)
          to label %668 unwind label %676

668:                                              ; preds = %667
  invoke void @_ZNSt6vectorI5TokenSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(44) %103)
          to label %669 unwind label %676

669:                                              ; preds = %668
  %670 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  store ptr %670, ptr %100, align 8, !tbaa !5
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %103) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #6
  %.sroa.025.0.copyload.pre = load ptr, ptr %95, align 8, !tbaa !5
  br label %679

671:                                              ; preds = %662
  %672 = landingpad { ptr, i32 }
          cleanup
  br label %675

673:                                              ; preds = %666, %663
  %674 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  br label %675

675:                                              ; preds = %673, %671
  %.pn290 = phi { ptr, i32 } [ %674, %673 ], [ %672, %671 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %104) #6
  br label %678

676:                                              ; preds = %668, %667
  %677 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %103) #6
  br label %678

678:                                              ; preds = %676, %675
  %.pn292 = phi { ptr, i32 } [ %677, %676 ], [ %.pn290, %675 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #6
  br label %683

679:                                              ; preds = %669, %652
  %.sroa.025.0.copyload = phi ptr [ %.sroa.025.0.copyload.pre, %669 ], [ %601, %652 ]
  %.sroa.024.0.copyload = load ptr, ptr %100, align 8, !tbaa !5
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(129) %86, ptr %.sroa.025.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %98, ptr %.sroa.024.0.copyload, ptr noundef nonnull align 8 dereferenceable(80) %1)
          to label %680 unwind label %681

680:                                              ; preds = %679
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %98) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %98) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #6
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %86) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %86) #6
  br label %859

681:                                              ; preds = %679
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %683

683:                                              ; preds = %681, %678, %660
  %.pn294 = phi { ptr, i32 } [ %682, %681 ], [ %.pn292, %678 ], [ %661, %660 ]
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %101) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %98) #6
  br label %684

684:                                              ; preds = %683, %659
  %.pn294.pn = phi { ptr, i32 } [ %.pn294, %683 ], [ %.pn288, %659 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %98) #6
  br label %685

685:                                              ; preds = %627, %629, %684, %624
  %.pn294.pn.pn = phi { ptr, i32 } [ %.pn294.pn, %684 ], [ %.pn286447, %629 ], [ %628, %627 ], [ %625, %624 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #6
  br label %686

686:                                              ; preds = %685, %623, %618
  %.pn294.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn, %685 ], [ %.pn284, %623 ], [ %.pn282, %618 ]
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %86) #6
  br label %687

687:                                              ; preds = %686, %613
  %.pn294.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn.pn, %686 ], [ %.pn280, %613 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %86) #6
  br label %860

688:                                              ; preds = %576
  %689 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %106) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %108) #6
  %690 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %108, ptr noundef nonnull align 8 dereferenceable(44) %690)
          to label %691 unwind label %.thread448

691:                                              ; preds = %688
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %107, ptr noundef nonnull @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %108)
          to label %692 unwind label %.thread452

692:                                              ; preds = %691
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %106, ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull @.str.25)
          to label %693 unwind label %698

693:                                              ; preds = %692
  %694 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %689, ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(44) %694)
          to label %695 unwind label %700

695:                                              ; preds = %693
  invoke void @__cxa_throw(ptr nonnull %689, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %700

.thread448:                                       ; preds = %688
  %696 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  br label %703

.thread452:                                       ; preds = %691
  %697 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  br label %703

698:                                              ; preds = %692
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %702

700:                                              ; preds = %695, %693
  %.0223 = phi i1 [ false, %695 ], [ true, %693 ]
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #6
  br label %702

702:                                              ; preds = %698, %700
  %.1224 = phi i1 [ %.0223, %700 ], [ true, %698 ]
  %.pn274 = phi { ptr, i32 } [ %701, %700 ], [ %699, %698 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %108) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %106) #6
  br i1 %.1224, label %703, label %860

703:                                              ; preds = %.thread452, %.thread448, %702
  %.pn274.pn.pn451 = phi { ptr, i32 } [ %696, %.thread448 ], [ %.pn274, %702 ], [ %697, %.thread452 ]
  call void @__cxa_free_exception(ptr %689) #6
  br label %860

704:                                              ; preds = %151
  %705 = tail call noundef zeroext i1 @_ZNK6Parser22nextTokensAreAvailableEi(ptr noundef nonnull align 8 dereferenceable(232) %0, i32 noundef 1)
  br i1 %705, label %715, label %706

706:                                              ; preds = %704
  %707 = tail call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %708 unwind label %.thread455

708:                                              ; preds = %706
  %709 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %707, ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(44) %709)
          to label %710 unwind label %712

710:                                              ; preds = %708
  invoke void @__cxa_throw(ptr nonnull %707, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %712

.thread455:                                       ; preds = %706
  %711 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #6
  br label %714

712:                                              ; preds = %708, %710
  %.0221 = phi i1 [ false, %710 ], [ true, %708 ]
  %713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109) #6
  br i1 %.0221, label %714, label %860

714:                                              ; preds = %.thread455, %712
  %.pn248458 = phi { ptr, i32 } [ %711, %.thread455 ], [ %713, %712 ]
  call void @__cxa_free_exception(ptr %707) #6
  br label %860

715:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %111) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %112) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %113) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.41, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %716 unwind label %757

716:                                              ; preds = %715
  invoke void @_ZN7GrammarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(129) %111, ptr noundef nonnull align 8 dereferenceable(32) %112)
          to label %717 unwind label %759

717:                                              ; preds = %716
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %114) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %115) #6
  store i32 1, ptr %115, align 4, !tbaa !9
  %718 = getelementptr inbounds i8, ptr %115, i64 4
  store i32 0, ptr %718, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %116) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr nonnull %115, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %719 unwind label %762

719:                                              ; preds = %717
  invoke void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %111, ptr noundef nonnull align 8 dereferenceable(24) %114)
          to label %720 unwind label %764

720:                                              ; preds = %719
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %114) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %117) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %118) #6
  store i32 4, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %119) #6
  call void @_ZNSaIN7Grammar11OperandTypeEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  invoke void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr nonnull %118, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %721 unwind label %767

721:                                              ; preds = %720
  invoke void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129) %111, ptr noundef nonnull align 8 dereferenceable(24) %117)
          to label %722 unwind label %769

722:                                              ; preds = %721
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #6
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %118) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %117) #6
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %120) #6
  %723 = load ptr, ptr @manager, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %121) #6
  %724 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %121, ptr noundef nonnull align 8 dereferenceable(44) %724)
          to label %725 unwind label %772

725:                                              ; preds = %722
  invoke void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.Operator) align 8 %120, ptr noundef nonnull align 8 dereferenceable(380) %723, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %726 unwind label %774

726:                                              ; preds = %725
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #6
  %727 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #6
  %728 = load i64, ptr %148, align 8, !tbaa !5
  store i64 %728, ptr %122, align 8, !tbaa !5
  %729 = call ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEppEi(ptr noundef nonnull align 8 dereferenceable(8) %148, i32 noundef 0) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %123) #6
  call void @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %124) #6
  call void @_ZNSt6vectorI5TokenSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %125) #6
  %730 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %730, ptr %125, align 8
  %731 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %125) #6
  %732 = inttoptr i64 %728 to ptr
  br i1 %731, label %733, label %.critedge10

733:                                              ; preds = %726
  %734 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  %735 = invoke noundef i32 @_ZNK5Token11getCategoryEv(ptr noundef nonnull align 8 dereferenceable(44) %734)
          to label %736 unwind label %777

736:                                              ; preds = %733
  %737 = icmp eq i32 %735, 2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #6
  br i1 %737, label %738, label %816

738:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %126) #6
  %739 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  store ptr %739, ptr %126, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #6
  %740 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  store ptr %740, ptr %127, align 8
  %741 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP5TokenSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #6
  br i1 %741, label %742, label %804

742:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %128) #6
  %743 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef nonnull align 8 dereferenceable(44) %743)
          to label %744 unwind label %779

744:                                              ; preds = %742
  %745 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull @.str.42)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #6
  br i1 %745, label %746, label %787

746:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %129) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %130) #6
  %747 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  store ptr %747, ptr %130, align 8
  %748 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %130) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %129, ptr noundef nonnull align 8 dereferenceable(44) %748)
          to label %749 unwind label %781

749:                                              ; preds = %746
  %750 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull @.str.43)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %129) #6
  br i1 %750, label %751, label %813

751:                                              ; preds = %749
  %752 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %131) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %132) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %753 unwind label %.thread459

753:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #6
  %754 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  store ptr %754, ptr %133, align 8
  %755 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %133) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %752, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(44) %755)
          to label %756 unwind label %784

756:                                              ; preds = %753
  invoke void @__cxa_throw(ptr nonnull %752, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %784

757:                                              ; preds = %715
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %761

759:                                              ; preds = %716
  %760 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  br label %761

761:                                              ; preds = %759, %757
  %.pn250 = phi { ptr, i32 } [ %760, %759 ], [ %758, %757 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %112) #6
  br label %840

762:                                              ; preds = %717
  %763 = landingpad { ptr, i32 }
          cleanup
  br label %766

764:                                              ; preds = %719
  %765 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #6
  br label %766

766:                                              ; preds = %764, %762
  %.pn252 = phi { ptr, i32 } [ %765, %764 ], [ %763, %762 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %114) #6
  br label %839

767:                                              ; preds = %720
  %768 = landingpad { ptr, i32 }
          cleanup
  br label %771

769:                                              ; preds = %721
  %770 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN7Grammar11OperandTypeESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #6
  br label %771

771:                                              ; preds = %769, %767
  %.pn254 = phi { ptr, i32 } [ %770, %769 ], [ %768, %767 ]
  call void @_ZNSt15__new_allocatorIN7Grammar11OperandTypeEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %118) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %117) #6
  br label %839

772:                                              ; preds = %722
  %773 = landingpad { ptr, i32 }
          cleanup
  br label %776

774:                                              ; preds = %725
  %775 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #6
  br label %776

776:                                              ; preds = %774, %772
  %.pn256 = phi { ptr, i32 } [ %775, %774 ], [ %773, %772 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %121) #6
  br label %838

777:                                              ; preds = %733
  %778 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #6
  br label %837

779:                                              ; preds = %742
  %780 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %128) #6
  br label %837

781:                                              ; preds = %746
  %782 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %129) #6
  br label %837

.thread459:                                       ; preds = %751
  %783 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #6
  br label %786

784:                                              ; preds = %753, %756
  %.0210 = phi i1 [ false, %756 ], [ true, %753 ]
  %785 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %131) #6
  br i1 %.0210, label %786, label %837

786:                                              ; preds = %.thread459, %784
  %.pn266462 = phi { ptr, i32 } [ %783, %.thread459 ], [ %785, %784 ]
  call void @__cxa_free_exception(ptr %752) #6
  br label %837

787:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %134) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %135) #6
  %788 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  store ptr %788, ptr %135, align 8
  %789 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %135) #6
  invoke void @_ZNK5Token8getValueB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %134, ptr noundef nonnull align 8 dereferenceable(44) %789)
          to label %790 unwind label %798

790:                                              ; preds = %787
  %791 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull @.str.45)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %134) #6
  br i1 %791, label %792, label %813

792:                                              ; preds = %790
  %793 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %136) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %137) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %137)
          to label %794 unwind label %.thread463

794:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %138) #6
  %795 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 1) #6
  store ptr %795, ptr %138, align 8
  %796 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %793, ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef nonnull align 8 dereferenceable(44) %796)
          to label %797 unwind label %801

797:                                              ; preds = %794
  invoke void @__cxa_throw(ptr nonnull %793, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %801

798:                                              ; preds = %787
  %799 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %134) #6
  br label %837

.thread463:                                       ; preds = %792
  %800 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #6
  br label %803

801:                                              ; preds = %794, %797
  %.0208 = phi i1 [ false, %797 ], [ true, %794 ]
  %802 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %138) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %137) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %137) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #6
  br i1 %.0208, label %803, label %837

803:                                              ; preds = %.thread463, %801
  %.pn264466 = phi { ptr, i32 } [ %800, %.thread463 ], [ %802, %801 ]
  call void @__cxa_free_exception(ptr %793) #6
  br label %837

804:                                              ; preds = %738
  %805 = call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %139) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %140) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef nonnull @.str.47, ptr noundef nonnull align 1 dereferenceable(1) %140)
          to label %806 unwind label %.thread467

806:                                              ; preds = %804
  %807 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %805, ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef nonnull align 8 dereferenceable(44) %807)
          to label %808 unwind label %810

808:                                              ; preds = %806
  invoke void @__cxa_throw(ptr nonnull %805, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %810

.thread467:                                       ; preds = %804
  %809 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %139) #6
  br label %812

810:                                              ; preds = %806, %808
  %.0206 = phi i1 [ false, %808 ], [ true, %806 ]
  %811 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %140) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %140) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %139) #6
  br i1 %.0206, label %812, label %837

812:                                              ; preds = %.thread467, %810
  %.pn262470 = phi { ptr, i32 } [ %809, %.thread467 ], [ %811, %810 ]
  call void @__cxa_free_exception(ptr %805) #6
  br label %837

813:                                              ; preds = %749, %790
  %814 = load i64, ptr %148, align 8, !tbaa !5
  store i64 %814, ptr %123, align 8, !tbaa !5
  %815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %148, i64 noundef 2) #6
  br label %833

.critedge10:                                      ; preds = %726
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #6
  br label %816

816:                                              ; preds = %.critedge10, %736
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %141) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %142) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %143) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull @.str.42, ptr noundef nonnull align 1 dereferenceable(1) %143)
          to label %817 unwind label %825

817:                                              ; preds = %816
  %818 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %122) #6
  %819 = invoke noundef i32 @_ZNK5Token7getLineEv(ptr noundef nonnull align 8 dereferenceable(44) %818)
          to label %820 unwind label %827

820:                                              ; preds = %817
  invoke void @_ZN5TokenC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(44) %141, ptr noundef nonnull align 8 dereferenceable(32) %142, i32 noundef %819)
          to label %821 unwind label %827

821:                                              ; preds = %820
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %142) #6
  invoke void @_ZN5Token11setCategoryENS_13TokenCategoryE(ptr noundef nonnull align 8 dereferenceable(44) %141, i32 noundef 2)
          to label %822 unwind label %830

822:                                              ; preds = %821
  invoke void @_ZNSt6vectorI5TokenSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(44) %141)
          to label %823 unwind label %830

823:                                              ; preds = %822
  %824 = call ptr @_ZNSt6vectorI5TokenSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #6
  store ptr %824, ptr %123, align 8, !tbaa !5
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %141) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %141) #6
  %.sroa.012.0.copyload.pre = load ptr, ptr %122, align 8, !tbaa !5
  br label %833

825:                                              ; preds = %816
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %829

827:                                              ; preds = %820, %817
  %828 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #6
  br label %829

829:                                              ; preds = %827, %825
  %.pn258 = phi { ptr, i32 } [ %828, %827 ], [ %826, %825 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %143) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %142) #6
  br label %832

830:                                              ; preds = %822, %821
  %831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5TokenD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %141) #6
  br label %832

832:                                              ; preds = %830, %829
  %.pn260 = phi { ptr, i32 } [ %831, %830 ], [ %.pn258, %829 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %141) #6
  br label %837

833:                                              ; preds = %823, %813
  %.sroa.012.0.copyload = phi ptr [ %.sroa.012.0.copyload.pre, %823 ], [ %732, %813 ]
  %.sroa.0.0.copyload = load ptr, ptr %123, align 8, !tbaa !5
  invoke void @_ZN6Parser14parseOperationERK7GrammarN9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS5_SaIS5_EEEERK8OperatorSA_RN10SyntaxTree4NodeE(ptr noundef nonnull align 8 dereferenceable(232) %0, ptr noundef nonnull align 8 dereferenceable(129) %111, ptr %.sroa.012.0.copyload, ptr noundef nonnull align 8 dereferenceable(136) %120, ptr %.sroa.0.0.copyload, ptr noundef nonnull align 8 dereferenceable(80) %1)
          to label %834 unwind label %835

834:                                              ; preds = %833
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %124) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %120) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %120) #6
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %111) #6
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %111) #6
  br label %859

835:                                              ; preds = %833
  %836 = landingpad { ptr, i32 }
          cleanup
  br label %837

837:                                              ; preds = %810, %812, %801, %803, %784, %786, %835, %832, %798, %781, %779, %777
  %.pn266.pn = phi { ptr, i32 } [ %.pn266462, %786 ], [ %785, %784 ], [ %836, %835 ], [ %782, %781 ], [ %.pn264466, %803 ], [ %802, %801 ], [ %799, %798 ], [ %780, %779 ], [ %.pn262470, %812 ], [ %811, %810 ], [ %.pn260, %832 ], [ %778, %777 ]
  call void @_ZNSt6vectorI5TokenSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %124) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #6
  call void @_ZN8OperatorD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %120) #6
  br label %838

838:                                              ; preds = %837, %776
  %.pn266.pn.pn = phi { ptr, i32 } [ %.pn266.pn, %837 ], [ %.pn256, %776 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %120) #6
  br label %839

839:                                              ; preds = %838, %771, %766
  %.pn266.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn, %838 ], [ %.pn254, %771 ], [ %.pn252, %766 ]
  call void @_ZN7GrammarD2Ev(ptr noundef nonnull align 8 dereferenceable(129) %111) #6
  br label %840

840:                                              ; preds = %839, %761
  %.pn266.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn266.pn.pn.pn, %839 ], [ %.pn250, %761 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %111) #6
  br label %860

841:                                              ; preds = %151
  %842 = tail call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %144) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %145) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull @.str.48, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %843 unwind label %.thread471

843:                                              ; preds = %841
  %844 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %842, ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(44) %844)
          to label %845 unwind label %847

845:                                              ; preds = %843
  invoke void @__cxa_throw(ptr nonnull %842, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %847

.thread471:                                       ; preds = %841
  %846 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #6
  br label %849

847:                                              ; preds = %843, %845
  %.0117 = phi i1 [ false, %845 ], [ true, %843 ]
  %848 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %144) #6
  br i1 %.0117, label %849, label %860

849:                                              ; preds = %.thread471, %847
  %.pn382474 = phi { ptr, i32 } [ %846, %.thread471 ], [ %848, %847 ]
  call void @__cxa_free_exception(ptr %842) #6
  br label %860

850:                                              ; preds = %2
  %851 = tail call ptr @__cxa_allocate_exception(i64 72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %146) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %147) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %852 unwind label %.thread475

852:                                              ; preds = %850
  %853 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP5TokenSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #6
  invoke void @_ZN14TokenExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERK5Token(ptr noundef nonnull align 8 dereferenceable(72) %851, ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(44) %853)
          to label %854 unwind label %856

854:                                              ; preds = %852
  invoke void @__cxa_throw(ptr nonnull %851, ptr nonnull @_ZTI14TokenException, ptr nonnull @_ZN14TokenExceptionD2Ev) #7
          to label %861 unwind label %856

.thread475:                                       ; preds = %850
  %855 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #6
  br label %858

856:                                              ; preds = %852, %854
  %.0 = phi i1 [ false, %854 ], [ true, %852 ]
  %857 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %147) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %147) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %146) #6
  br i1 %.0, label %858, label %860

858:                                              ; preds = %.thread475, %856
  %.pn478 = phi { ptr, i32 } [ %855, %.thread475 ], [ %857, %856 ]
  call void @__cxa_free_exception(ptr %851) #6
  br label %860

859:                                              ; preds = %834, %680, %548, %.loopexit481, %.loopexit, %161
  ret void

860:                                              ; preds = %184, %182, %293, %222, %220, %207, %209, %205, %856, %858, %847, %849, %712, %714, %702, %703, %586, %588, %526, %528, %840, %687, %575, %515, %322, %167
  %.pn382.pn = phi { ptr, i32 } [ %.pn382474, %849 ], [ %848, %847 ], [ %.pn266.pn.pn.pn.pn, %840 ], [ %.pn248458, %714 ], [ %713, %712 ], [ %.pn380, %167 ], [ %.pn352.pn.pn, %515 ], [ %.pn310.pn.pn, %575 ], [ %.pn300439, %528 ], [ %527, %526 ], [ %.pn294.pn.pn.pn.pn, %687 ], [ %.pn278443, %588 ], [ %587, %586 ], [ %.pn274.pn.pn451, %703 ], [ %.pn274, %702 ], [ %.pn272, %322 ], [ %.pn478, %858 ], [ %857, %856 ], [ %.pn356393, %184 ], [ %183, %182 ], [ %.pn360397, %209 ], [ %208, %207 ], [ %.pn358, %205 ], [ %.pn375401, %222 ], [ %221, %220 ], [ %.pn370.pn.pn.pn, %293 ]
  resume { ptr, i32 } %.pn382.pn

861:                                              ; preds = %854, %845, %808, %797, %756, %710, %695, %608, %584, %524, %471, %392, %368, %344, %317, %243, %218, %200, %180
  unreachable
}

declare noundef i32 @_ZNK5Token20getKeyphraseCategoryEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN6Parser13getLineIndentEi(ptr noundef nonnull align 8 dereferenceable(232), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL17tokenIsIdentifierRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4

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

declare void @_ZNK14FetlangManager11getOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.Operator) align 8, ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

declare void @_ZN7Grammar26addAllowedLeftwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

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

declare void @_ZN7Grammar27addAllowedRightwardOperandsERKSt6vectorINS_11OperandTypeESaIS1_EE(ptr noundef nonnull align 8 dereferenceable(129), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL25tokenIsComparisonOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4

declare void @_ZNK14FetlangManager21getComparisonOperatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.ComparisonOperator) align 8, ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL14tokenIsPronounRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4

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

declare void @_ZN7Grammar11setReversedEb(ptr noundef nonnull align 8 dereferenceable(129), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15tokenIsOperatorRK5Token(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI5TokenSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #4 align 2

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

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

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

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

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

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass