; LLVM IR from jzimmerman/langcc :: src (datacc)

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

%"struct.langcc::rc_ptr.0" = type { ptr, ptr }
%"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] }
%"struct.langcc::Option::_T.69" = type { i32, [24 x i8] }
%"struct.langcc::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::rc_ptr.78" = type { ptr, ptr }
%"struct.langcc::rc_ptr.1" = type { ptr, ptr }
%"struct.langcc::rc_ptr.81" = type { ptr, ptr }
%"struct.langcc::Option::_T.72" = type { i32, [16 x i8] }
%"struct.langcc::Option::_T.77" = type { i32, [16 x i8] }
%"struct.langcc::rc_ptr.82" = type { ptr, ptr }
%"struct.langcc::rc_ptr.83" = type { ptr, ptr }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"class.std::allocator" = type { i8 }
%"struct.langcc::Option::_T.88" = type { i32, [32 x i8] }
%"struct.langcc::rc_ptr.89" = type { ptr, ptr }
%"struct.langcc::Option::_T.90" = type { i32, [8 x i8] }
%"struct.lang::data::Node::Expr::Id::_T" = type { %"struct.lang::data::Node::Expr::_T.base", i8, %"struct.langcc::rc_ptr.1" }
%"struct.lang::data::Node::Expr::_T.base" = type <{ %"struct.lang::data::Node::_T", i32 }>
%"struct.lang::data::Node::_T" = type { ptr, %"struct.langcc::hash_obj", %"struct.langcc::enable_rc_from_this_poly", i32, i64, %"struct.langcc::TokenBounds", i8, i64, %"struct.langcc::ParserAttrMask", %"struct.langcc::ParserLookahead" }
%"struct.langcc::hash_obj" = type { %"struct.langcc::Option::_T" }
%"struct.langcc::Option::_T" = type { i32, [32 x i8] }
%"struct.langcc::enable_rc_from_this_poly" = type { ptr, ptr }
%"struct.langcc::TokenBounds" = type { i32, i32 }
%"struct.langcc::ParserAttrMask" = type { [16 x i8] }
%"struct.langcc::ParserLookahead" = type { [8 x i16] }
%"struct.std::pair.70" = type <{ %"struct.langcc::rc_ptr.0", i8, [7 x i8] }>
%"struct.langcc::DataCompileContext" = type { %"struct.langcc::CppGenContext", %"struct.langcc::rc_ptr.23", %"struct.langcc::rc_ptr.24", %"struct.langcc::rc_ptr.25", %"struct.langcc::rc_ptr.26", %"struct.langcc::rc_ptr.27", %"struct.langcc::rc_ptr.27", %"struct.langcc::rc_ptr.0" }
%"struct.langcc::CppGenContext" = type { %"struct.langcc::rc_ptr.10", %"struct.langcc::rc_ptr.11", %"struct.langcc::rc_ptr.12", %"struct.langcc::rc_ptr.12", %"struct.langcc::Set" }
%"struct.langcc::rc_ptr.10" = type { ptr, ptr }
%"struct.langcc::rc_ptr.11" = type { ptr, ptr }
%"struct.langcc::rc_ptr.12" = type { ptr, ptr }
%"struct.langcc::Set" = type { %"struct.langcc::enable_rc_from_this.13", %"class.std::unordered_map", %"struct.langcc::Vec.19", %"struct.langcc::Vec.21" }
%"struct.langcc::enable_rc_from_this.13" = type { ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.langcc::Vec.19" = type { %"struct.langcc::enable_rc_from_this.20", ptr, ptr, i64, i64, i64, i64 }
%"struct.langcc::enable_rc_from_this.20" = type { ptr, ptr }
%"struct.langcc::Vec.21" = type { %"struct.langcc::enable_rc_from_this.22", ptr, ptr, i64, i64, i64, i64 }
%"struct.langcc::enable_rc_from_this.22" = type { ptr, ptr }
%"struct.langcc::rc_ptr.23" = type { ptr, ptr }
%"struct.langcc::rc_ptr.24" = type { ptr, ptr }
%"struct.langcc::rc_ptr.25" = type { ptr, ptr }
%"struct.langcc::rc_ptr.26" = type { ptr, ptr }
%"struct.langcc::rc_ptr.27" = type { ptr, ptr }
%"struct.lang::data::Node::Expr::App::_T" = type { %"struct.lang::data::Node::Expr::_T.base", %"struct.langcc::rc_ptr.46", %"struct.langcc::rc_ptr.85" }
%"struct.langcc::rc_ptr.85" = type { ptr, ptr }
%"struct.lang::data::Node::Expr::Int_::_T" = type { %"struct.lang::data::Node::Expr::_T.base", %"struct.langcc::StrSlice" }
%"struct.langcc::StrSlice" = type { %"struct.langcc::rc_ptr.7", i64, i64 }
%"struct.langcc::rc_ptr.7" = type { ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.0") align 8, ptr noundef) #0

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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: inlinehint mustprogress uwtable
declare dso_local void @_ZNK6langcc8StrSlice13to_std_stringB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc10ns_resolveERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_RNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.69") align 4, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(376)) #0

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(376), ptr noundef, ptr noundef) #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.78") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(264)) #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc19resolve_builtin_cppERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.0") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %3) #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.langcc::rc_ptr.1", align 8
  %10 = alloca %"struct.langcc::rc_ptr.81", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"struct.langcc::rc_ptr.0", align 8
  %14 = alloca %"struct.langcc::rc_ptr.1", align 8
  %15 = alloca %"struct.langcc::Option::_T.69", align 4
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca %"struct.langcc::Option::_T.72", align 4
  %19 = alloca %"struct.langcc::Option::_T.77", align 4
  %20 = alloca i32, align 4
  %21 = alloca %"struct.langcc::Option::_T.72", align 4
  %22 = alloca %"struct.langcc::Option::_T.77", align 4
  %23 = alloca %"struct.langcc::rc_ptr.0", align 8
  %24 = alloca %"struct.langcc::rc_ptr.81", align 8
  %25 = alloca %"struct.langcc::rc_ptr.0", align 8
  %26 = alloca %"struct.langcc::rc_ptr.78", align 8
  %27 = alloca %"struct.langcc::rc_ptr.82", align 8
  %28 = alloca %"struct.langcc::rc_ptr.83", align 8
  %29 = alloca %"struct.langcc::rc_ptr.76", align 8
  %30 = alloca %"struct.langcc::rc_ptr.46", align 8
  %31 = alloca i8, align 1
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"struct.langcc::rc_ptr.46", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"struct.langcc::rc_ptr.76", align 8
  %39 = alloca %"struct.langcc::rc_ptr.46", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"struct.langcc::Option::_T.88", align 4
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"struct.langcc::rc_ptr.89", align 8
  %46 = alloca i64, align 8
  %47 = alloca %"struct.langcc::Option::_T.90", align 4
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca %"struct.langcc::rc_ptr.46", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %55 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %56 = call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %55)
  br i1 %56, label %57, label %201

57:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #9
  %58 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8 %10, ptr noundef nonnull align 8 dereferenceable(140) %58)
  %59 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %60 unwind label %88

60:                                               ; preds = %57
  %61 = getelementptr inbounds %"struct.lang::data::Node::Expr::Id::_T", ptr %59, i32 0, i32 2
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %62 unwind label %88

62:                                               ; preds = %60
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %63 unwind label %92

63:                                               ; preds = %62
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %13, ptr noundef %14)
          to label %64 unwind label %96

64:                                               ; preds = %63
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.start.p0(i64 28, ptr %15) #9
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6langcc10ns_resolveERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_RNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.69") align 4 %15, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(376) %66)
          to label %67 unwind label %100

67:                                               ; preds = %64
  %68 = invoke noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28) %15)
          to label %69 unwind label %104

69:                                               ; preds = %67
  br i1 %68, label %70, label %143

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %71 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %15)
          to label %72 unwind label %108

72:                                               ; preds = %70
  %73 = getelementptr inbounds %"struct.std::pair.70", ptr %71, i32 0, i32 0
  store ptr %73, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  %74 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %15)
          to label %75 unwind label %112

75:                                               ; preds = %72
  %76 = getelementptr inbounds %"struct.std::pair.70", ptr %74, i32 0, i32 1
  %77 = load i8, ptr %76, align 8, !tbaa !9, !range !13, !noundef !14
  %78 = trunc i8 %77 to i1
  %79 = zext i1 %78 to i8
  store i8 %79, ptr %17, align 1, !tbaa !15
  %80 = load i8, ptr %17, align 1, !tbaa !15, !range !13, !noundef !14
  %81 = trunc i8 %80 to i1
  br i1 %81, label %82, label %125

82:                                               ; preds = %75
  %83 = load ptr, ptr %16, align 8, !tbaa !5
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.72") align 4 %18)
          to label %85 unwind label %112

85:                                               ; preds = %82
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %19)
          to label %86 unwind label %116

86:                                               ; preds = %85
  invoke void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(376) %84, ptr noundef %18, ptr noundef %19)
          to label %87 unwind label %120

87:                                               ; preds = %86
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %19) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %18) #9
  store i32 1, ptr %20, align 4
  br label %140

88:                                               ; preds = %60, %57
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %11, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  br label %200

92:                                               ; preds = %62
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %11, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %12, align 4
  br label %199

96:                                               ; preds = %63
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %11, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %199

100:                                              ; preds = %64
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %11, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %12, align 4
  br label %198

104:                                              ; preds = %67
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %11, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %12, align 4
  br label %197

108:                                              ; preds = %70
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %11, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %12, align 4
  br label %142

112:                                              ; preds = %125, %82, %72
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %11, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %12, align 4
  br label %141

116:                                              ; preds = %85
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %11, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %12, align 4
  br label %124

120:                                              ; preds = %86
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %11, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %12, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %19) #9
  br label %124

124:                                              ; preds = %120, %116
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %18) #9
  br label %141

125:                                              ; preds = %75
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.72") align 4 %21)
          to label %128 unwind label %112

128:                                              ; preds = %125
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %22)
          to label %129 unwind label %131

129:                                              ; preds = %128
  invoke void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(16) %126, ptr noundef nonnull align 8 dereferenceable(376) %127, ptr noundef %21, ptr noundef %22)
          to label %130 unwind label %135

130:                                              ; preds = %129
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %22) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %21) #9
  store i32 1, ptr %20, align 4
  br label %140

131:                                              ; preds = %128
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %11, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %12, align 4
  br label %139

135:                                              ; preds = %129
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %11, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %12, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %22) #9
  br label %139

139:                                              ; preds = %135, %131
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %21) #9
  br label %141

140:                                              ; preds = %130, %87
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %196

141:                                              ; preds = %139, %124, %112
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  br label %142

142:                                              ; preds = %141, %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %197

143:                                              ; preds = %69
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %144 unwind label %158

144:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #9
  %145 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %146 unwind label %162

146:                                              ; preds = %144
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8 %24, ptr noundef nonnull align 8 dereferenceable(140) %145)
          to label %147 unwind label %162

147:                                              ; preds = %146
  %148 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %149 unwind label %166

149:                                              ; preds = %147
  %150 = getelementptr inbounds %"struct.lang::data::Node::Expr::Id::_T", ptr %148, i32 0, i32 1
  %151 = load i8, ptr %150, align 4, !tbaa !16, !range !13, !noundef !14
  %152 = trunc i8 %151 to i1
  %153 = xor i1 %152, true
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br i1 %153, label %154, label %180

154:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  invoke void @_ZN6langcc19resolve_builtin_cppERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %155 unwind label %171

155:                                              ; preds = %154
  %156 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %157 unwind label %175

157:                                              ; preds = %155
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  br label %180

158:                                              ; preds = %143
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %11, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %12, align 4
  br label %195

162:                                              ; preds = %146, %144
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %11, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %12, align 4
  br label %170

166:                                              ; preds = %147
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %11, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  br label %170

170:                                              ; preds = %166, %162
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br label %194

171:                                              ; preds = %154
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %11, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %12, align 4
  br label %179

175:                                              ; preds = %155
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %11, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  br label %179

179:                                              ; preds = %175, %171
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  br label %194

180:                                              ; preds = %157, %149
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #9
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %181, i32 0, i32 0
  invoke void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.78") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(264) %182)
          to label %183 unwind label %185

183:                                              ; preds = %180
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Expr2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %184 unwind label %189

184:                                              ; preds = %183
  store i32 1, ptr %20, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  br label %196

185:                                              ; preds = %180
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %11, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %12, align 4
  br label %193

189:                                              ; preds = %183
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %11, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %193

193:                                              ; preds = %189, %185
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #9
  br label %194

194:                                              ; preds = %193, %179, %170
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  br label %195

195:                                              ; preds = %194, %158
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  br label %197

196:                                              ; preds = %184, %140
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %15) #9
  call void @llvm.lifetime.end.p0(i64 28, ptr %15) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  br label %443

197:                                              ; preds = %195, %142, %104
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %15) #9
  br label %198

198:                                              ; preds = %197, %100
  call void @llvm.lifetime.end.p0(i64 28, ptr %15) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #9
  br label %199

199:                                              ; preds = %198, %96, %92
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  br label %200

200:                                              ; preds = %199, %88
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  br label %444

201:                                              ; preds = %4
  %202 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %203 = call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140) %202)
  br i1 %203, label %204, label %378

204:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  %205 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.82") align 8 %27, ptr noundef nonnull align 8 dereferenceable(140) %205)
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  %206 = load ptr, ptr %8, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %207, i32 0, i32 1
  %209 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %208)
          to label %210 unwind label %241

210:                                              ; preds = %204
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE16make_lex_builderEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.83") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %209)
          to label %211 unwind label %241

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #9
  %212 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %213 unwind label %245

213:                                              ; preds = %211
  %214 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %212, i32 0, i32 1
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %214)
          to label %215 unwind label %245

215:                                              ; preds = %213
  %216 = load ptr, ptr %7, align 8, !tbaa !5
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %29, ptr noundef %30, ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull align 8 dereferenceable(376) %217)
          to label %218 unwind label %249

218:                                              ; preds = %215
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %219, i32 0, i32 0
  %221 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %220, i32 0, i32 1
  %222 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %221)
          to label %223 unwind label %253

223:                                              ; preds = %218
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJA2_cEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSB_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 1 dereferenceable(2) @.str.43)
          to label %224 unwind label %253

224:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  store i8 1, ptr %31, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %225 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %226 unwind label %257

226:                                              ; preds = %224
  %227 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %225, i32 0, i32 2
  %228 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
          to label %229 unwind label %257

229:                                              ; preds = %226
  store ptr %228, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = invoke noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64) %230)
          to label %232 unwind label %261

232:                                              ; preds = %229
  store ptr %231, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %233 = load ptr, ptr %32, align 8, !tbaa !5
  %234 = invoke noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(64) %233)
          to label %235 unwind label %265

235:                                              ; preds = %232
  store ptr %234, ptr %34, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %310, %235
  %237 = load ptr, ptr %33, align 8, !tbaa !5
  %238 = load ptr, ptr %34, align 8, !tbaa !5
  %239 = icmp ne ptr %237, %238
  br i1 %239, label %269, label %240

240:                                              ; preds = %236
  store i32 2, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %331

241:                                              ; preds = %210, %204
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %11, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %12, align 4
  br label %377

245:                                              ; preds = %213, %211
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %11, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %12, align 4
  br label %376

249:                                              ; preds = %215
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %11, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #9
  br label %376

253:                                              ; preds = %223, %218
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %11, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %12, align 4
  br label %375

257:                                              ; preds = %226, %224
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %11, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %12, align 4
  br label %330

261:                                              ; preds = %229
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %11, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %12, align 4
  br label %329

265:                                              ; preds = %232
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %11, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %12, align 4
  br label %328

269:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #9
  %270 = load ptr, ptr %33, align 8, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %270)
          to label %271 unwind label %282

271:                                              ; preds = %269
  %272 = load i8, ptr %31, align 1, !tbaa !15, !range !13, !noundef !14
  %273 = trunc i8 %272 to i1
  br i1 %273, label %299, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %276, i32 0, i32 1
  %278 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %279 unwind label %286

279:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %280 unwind label %290

280:                                              ; preds = %279
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %278, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %36)
          to label %281 unwind label %294

281:                                              ; preds = %280
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %299

282:                                              ; preds = %269
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %11, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %12, align 4
  br label %327

286:                                              ; preds = %274
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %11, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %12, align 4
  br label %326

290:                                              ; preds = %279
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %11, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %12, align 4
  br label %298

294:                                              ; preds = %280
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %11, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %298

298:                                              ; preds = %294, %290
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %326

299:                                              ; preds = %281, %271
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %300 unwind label %313

300:                                              ; preds = %299
  %301 = load ptr, ptr %7, align 8, !tbaa !5
  %302 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %38, ptr noundef %39, ptr noundef nonnull align 8 dereferenceable(16) %301, ptr noundef nonnull align 8 dereferenceable(376) %302)
          to label %303 unwind label %317

303:                                              ; preds = %300
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %304, i32 0, i32 0
  %306 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %305, i32 0, i32 1
  %307 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %306)
          to label %308 unwind label %321

308:                                              ; preds = %303
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSA_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %309 unwind label %321

309:                                              ; preds = %308
  store i8 0, ptr %31, align 1, !tbaa !15
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #9
  br label %310

310:                                              ; preds = %309
  %311 = load ptr, ptr %33, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.langcc::rc_ptr.46", ptr %311, i32 1
  store ptr %312, ptr %33, align 8, !tbaa !5
  br label %236

313:                                              ; preds = %299
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %11, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %12, align 4
  br label %325

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %11, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %325

321:                                              ; preds = %308, %303
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %11, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #9
  br label %325

325:                                              ; preds = %321, %317, %313
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #9
  br label %326

326:                                              ; preds = %325, %298, %286
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  br label %327

327:                                              ; preds = %326, %282
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #9
  br label %328

328:                                              ; preds = %327, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %329

329:                                              ; preds = %328, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %330

330:                                              ; preds = %329, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %374

331:                                              ; preds = %240
  %332 = load ptr, ptr %8, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %332, i32 0, i32 0
  %334 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %333, i32 0, i32 1
  %335 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %334)
          to label %336 unwind label %347

336:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %337 unwind label %351

337:                                              ; preds = %336
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %335, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %40)
          to label %338 unwind label %355

338:                                              ; preds = %337
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %339, i32 0, i32 0
  %341 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %340, i32 0, i32 1
  %342 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %341)
          to label %343 unwind label %347

343:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %344 unwind label %360

344:                                              ; preds = %343
  invoke void @_ZN6langcc4SomeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.88") align 4 %42, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %345 unwind label %364

345:                                              ; preds = %344
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE8qq_innerENS_6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERNS_6rc_ptrINS_9LexOutputEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %342, ptr noundef %42, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %346 unwind label %368

346:                                              ; preds = %345
  call void @_ZN6langcc6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(36) %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  store i32 1, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #9
  call void @_ZN6langcc6rc_ptrINS_9LexOutputEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %443

347:                                              ; preds = %338, %331
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %11, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %12, align 4
  br label %374

351:                                              ; preds = %336
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %11, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %12, align 4
  br label %359

355:                                              ; preds = %337
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %11, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %359

359:                                              ; preds = %355, %351
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  br label %374

360:                                              ; preds = %343
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %11, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %12, align 4
  br label %373

364:                                              ; preds = %344
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %11, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %12, align 4
  br label %372

368:                                              ; preds = %345
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %11, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %12, align 4
  call void @_ZN6langcc6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(36) %42) #9
  br label %372

372:                                              ; preds = %368, %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %373

373:                                              ; preds = %372, %360
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %374

374:                                              ; preds = %373, %359, %347, %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  br label %375

375:                                              ; preds = %374, %253
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  br label %376

376:                                              ; preds = %375, %249, %245
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #9
  call void @_ZN6langcc6rc_ptrINS_9LexOutputEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  br label %377

377:                                              ; preds = %376, %241
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %444

378:                                              ; preds = %201
  %379 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %380 = call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T7is_Int_Ev(ptr noundef nonnull align 8 dereferenceable(140) %379)
  br i1 %380, label %381, label %425

381:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #9
  %382 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T7as_Int_Ev(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.89") align 8 %45, ptr noundef nonnull align 8 dereferenceable(140) %382)
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %47) #9
  %383 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %384 unwind label %396

384:                                              ; preds = %381
  %385 = getelementptr inbounds %"struct.lang::data::Node::Expr::Int_::_T", ptr %383, i32 0, i32 1
  invoke void @_ZNK6langcc8StrSlice13to_std_stringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %385)
          to label %386 unwind label %396

386:                                              ; preds = %384
  invoke void @_ZN6langcc13string_to_intENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.90") align 4 %47, ptr noundef %48)
          to label %387 unwind label %400

387:                                              ; preds = %386
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc6Option2_TIlE7as_someEv(ptr noundef nonnull align 4 dereferenceable(12) %47)
          to label %389 unwind label %404

389:                                              ; preds = %387
  %390 = load i64, ptr %388, align 8, !tbaa !32
  call void @_ZN6langcc6Option2_TIlED2Ev(ptr noundef nonnull align 4 dereferenceable(12) %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #9
  store i64 %390, ptr %46, align 8, !tbaa !32
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %391, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %393 unwind label %410

393:                                              ; preds = %389
  invoke void @_ZN6langcc7fmt_strIJlEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS6_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %394 unwind label %414

394:                                              ; preds = %393
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef nonnull align 8 dereferenceable(264) %392, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %395 unwind label %418

395:                                              ; preds = %394
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  store i32 1, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  br label %443

396:                                              ; preds = %384, %381
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %11, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %12, align 4
  br label %409

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

404:                                              ; preds = %387
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %11, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %12, align 4
  call void @_ZN6langcc6Option2_TIlED2Ev(ptr noundef nonnull align 4 dereferenceable(12) %47) #9
  br label %408

408:                                              ; preds = %404, %400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %409

409:                                              ; preds = %408, %396
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #9
  br label %424

410:                                              ; preds = %389
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %11, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %12, align 4
  br label %423

414:                                              ; preds = %393
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %11, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %12, align 4
  br label %422

418:                                              ; preds = %394
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %11, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %422

422:                                              ; preds = %418, %414
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %423

423:                                              ; preds = %422, %410
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  br label %424

424:                                              ; preds = %423, %409
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  br label %444

425:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %426 unwind label %429

426:                                              ; preds = %425
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %427 unwind label %433

427:                                              ; preds = %426
  invoke void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef %54) #10
          to label %428 unwind label %437

428:                                              ; preds = %427
  unreachable

429:                                              ; preds = %425
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %11, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %12, align 4
  br label %442

433:                                              ; preds = %426
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %11, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %12, align 4
  br label %441

437:                                              ; preds = %427
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %11, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %12, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  br label %441

441:                                              ; preds = %437, %433
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %442

442:                                              ; preds = %441, %429
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  br label %444

443:                                              ; preds = %395, %346, %196
  ret void

444:                                              ; preds = %442, %424, %377, %200
  %445 = load ptr, ptr %11, align 8
  %446 = load i32, ptr %12, align 4
  %447 = insertvalue { ptr, i32 } poison, ptr %445, 0
  %448 = insertvalue { ptr, i32 } %447, i32 %446, 1
  resume { ptr, i32 } %448
}

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140)) #6

declare void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8, ptr noundef nonnull align 8 dereferenceable(140)) #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.72") align 4) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.77") align 4) #0

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

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140)) #6

declare void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.82") align 8, ptr noundef nonnull align 8 dereferenceable(140)) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE16make_lex_builderEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.83") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJA2_cEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSB_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSA_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE8qq_innerENS_6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERNS_6rc_ptrINS_9LexOutputEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4SomeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.88") align 4, ptr noundef nonnull align 8 dereferenceable(32)) #0

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

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

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T7is_Int_Ev(ptr noundef nonnull align 8 dereferenceable(140)) #6

declare void @_ZN4lang4data4Node4Expr2_T7as_Int_Ev(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.89") align 8, ptr noundef nonnull align 8 dereferenceable(140)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13string_to_intENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.90") align 4, ptr noundef) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc6Option2_TIlE7as_someEv(ptr noundef nonnull align 4 dereferenceable(12)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext7qq_exprIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress noreturn uwtable
declare dso_local void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 = { 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 #4 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { alwaysinline 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { 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, !12, i64 16}
!10 = !{!"_ZTSSt4pairIN6langcc6rc_ptrINS0_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbE", !11, i64 0, !12, i64 16}
!11 = !{!"_ZTSN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE", !6, i64 0, !6, i64 8}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!12, !12, i64 0}
!16 = !{!17, !12, i64 140}
!17 = !{!"_ZTSN4lang4data4Node4Expr2Id2_TE", !18, i64 0, !12, i64 140, !31, i64 144}
!18 = !{!"_ZTSN4lang4data4Node4Expr2_TE", !19, i64 0, !30, i64 136}
!19 = !{!"_ZTSN4lang4data4Node2_TE", !20, i64 8, !23, i64 48, !24, i64 64, !25, i64 72, !26, i64 80, !12, i64 88, !25, i64 96, !28, i64 104, !29, i64 120}
!20 = !{!"_ZTSN6langcc8hash_objE", !21, i64 0}
!21 = !{!"_ZTSN6langcc6Option2_TINS_7HashValEEE", !22, i64 0, !7, i64 4}
!22 = !{!"_ZTSN6langcc6Option2_WE", !7, i64 0}
!23 = !{!"_ZTSN6langcc24enable_rc_from_this_polyE", !6, i64 0, !6, i64 8}
!24 = !{!"_ZTSN4lang4data4Node2_WE", !7, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!"_ZTSN6langcc11TokenBoundsE", !27, i64 0, !27, i64 4}
!27 = !{!"int", !7, i64 0}
!28 = !{!"_ZTSN6langcc14ParserAttrMaskE", !7, i64 0}
!29 = !{!"_ZTSN6langcc15ParserLookaheadE", !7, i64 0}
!30 = !{!"_ZTSN4lang4data4Node4Expr2_WE", !7, i64 0}
!31 = !{!"_ZTSN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEE", !6, i64 0, !6, i64 8}
!32 = !{!25, !25, i64 0}


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

%"struct.langcc::rc_ptr.0" = type { ptr, ptr }
%"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] }
%"struct.langcc::Option::_T.69" = type { i32, [24 x i8] }
%"struct.langcc::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::rc_ptr.78" = type { ptr, ptr }
%"struct.langcc::rc_ptr.1" = type { ptr, ptr }
%"struct.langcc::rc_ptr.81" = type { ptr, ptr }
%"struct.langcc::Option::_T.72" = type { i32, [16 x i8] }
%"struct.langcc::Option::_T.77" = type { i32, [16 x i8] }
%"struct.langcc::rc_ptr.82" = type { ptr, ptr }
%"struct.langcc::rc_ptr.83" = type { ptr, ptr }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"class.std::allocator" = type { i8 }
%"struct.langcc::Option::_T.88" = type { i32, [32 x i8] }
%"struct.langcc::rc_ptr.89" = type { ptr, ptr }
%"struct.langcc::Option::_T.90" = type { i32, [8 x i8] }

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.0") align 8, ptr noundef) local_unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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: inlinehint mustprogress uwtable
declare dso_local void @_ZNK6langcc8StrSlice13to_std_stringB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc10ns_resolveERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_RNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.69") align 4, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(376)) local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, i32 noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(376), ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.78") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(264)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc19resolve_builtin_cppERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.0") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %3) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.langcc::rc_ptr.1", align 8
  %6 = alloca %"struct.langcc::rc_ptr.81", align 8
  %7 = alloca %"struct.langcc::rc_ptr.0", align 8
  %8 = alloca %"struct.langcc::rc_ptr.1", align 8
  %9 = alloca %"struct.langcc::Option::_T.69", align 4
  %10 = alloca %"struct.langcc::Option::_T.72", align 4
  %11 = alloca %"struct.langcc::Option::_T.77", align 4
  %12 = alloca %"struct.langcc::Option::_T.72", align 4
  %13 = alloca %"struct.langcc::Option::_T.77", align 4
  %14 = alloca %"struct.langcc::rc_ptr.0", align 8
  %15 = alloca %"struct.langcc::rc_ptr.81", align 8
  %16 = alloca %"struct.langcc::rc_ptr.0", align 8
  %17 = alloca %"struct.langcc::rc_ptr.78", align 8
  %18 = alloca %"struct.langcc::rc_ptr.82", align 8
  %19 = alloca %"struct.langcc::rc_ptr.83", align 8
  %20 = alloca %"struct.langcc::rc_ptr.76", align 8
  %21 = alloca %"struct.langcc::rc_ptr.46", align 8
  %22 = alloca %"struct.langcc::rc_ptr.46", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"struct.langcc::rc_ptr.76", align 8
  %26 = alloca %"struct.langcc::rc_ptr.46", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"struct.langcc::Option::_T.88", align 4
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"struct.langcc::rc_ptr.89", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"struct.langcc::Option::_T.90", align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"struct.langcc::rc_ptr.46", align 8
  %42 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %43 = tail call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %42)
  br i1 %43, label %44, label %119

44:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #9
  %45 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.81") align 8 %6, ptr noundef nonnull align 8 dereferenceable(140) %45)
  %46 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %47 = getelementptr inbounds i8, ptr %46, i64 144
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %48 unwind label %65

48:                                               ; preds = %44
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %49 unwind label %67

49:                                               ; preds = %48
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %7, ptr noundef nonnull %8)
          to label %50 unwind label %69

50:                                               ; preds = %49
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %9) #9
  invoke void @_ZN6langcc10ns_resolveERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_RNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.69") align 4 %9, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(376) %3)
          to label %51 unwind label %71

51:                                               ; preds = %50
  %52 = call noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28) %9)
  br i1 %52, label %53, label %91

53:                                               ; preds = %51
  %54 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %9)
          to label %55 unwind label %73

55:                                               ; preds = %53
  %56 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %9)
          to label %57 unwind label %75

57:                                               ; preds = %55
  %58 = getelementptr inbounds i8, ptr %56, i64 16
  %59 = load i8, ptr %58, align 8, !tbaa !5, !range !12, !noundef !13
  %60 = trunc nuw i8 %59 to i1
  br i1 %60, label %61, label %82

61:                                               ; preds = %57
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.72") align 4 %10)
          to label %62 unwind label %75

62:                                               ; preds = %61
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.77") align 4 %11)
          to label %63 unwind label %77

63:                                               ; preds = %62
  invoke void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(376) %3, ptr noundef nonnull %10, ptr noundef nonnull %11)
          to label %64 unwind label %79

64:                                               ; preds = %63
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %11) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %10) #9
  br label %114

65:                                               ; preds = %44
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  br label %118

67:                                               ; preds = %48
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %117

69:                                               ; preds = %49
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  br label %117

71:                                               ; preds = %50
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %116

73:                                               ; preds = %53
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %115

75:                                               ; preds = %82, %61, %55
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %115

77:                                               ; preds = %62
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %81

79:                                               ; preds = %63
  %80 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %11) #9
  br label %81

81:                                               ; preds = %79, %77
  %.pn89 = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %10) #9
  br label %115

82:                                               ; preds = %57
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.72") align 4 %12)
          to label %83 unwind label %75

83:                                               ; preds = %82
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.77") align 4 %13)
          to label %84 unwind label %86

84:                                               ; preds = %83
  invoke void @_ZN6langcc14lower_name_cppENS_7LowerTyERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextENS_6Option2_TISA_EENSG_INS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(376) %3, ptr noundef nonnull %12, ptr noundef nonnull %13)
          to label %85 unwind label %88

85:                                               ; preds = %84
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %13) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %12) #9
  br label %114

86:                                               ; preds = %83
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %90

88:                                               ; preds = %84
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %13) #9
  br label %90

90:                                               ; preds = %88, %86
  %.pn87 = phi { ptr, i32 } [ %89, %88 ], [ %87, %86 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %12) #9
  br label %115

91:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %92 unwind label %102

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %93 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.81") align 8 %15, ptr noundef nonnull align 8 dereferenceable(140) %93)
          to label %94 unwind label %104

94:                                               ; preds = %92
  %95 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %96 = getelementptr inbounds i8, ptr %95, i64 140
  %97 = load i8, ptr %96, align 4, !tbaa !14, !range !12, !noundef !13
  %98 = trunc nuw i8 %97 to i1
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br i1 %98, label %108, label %99

99:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  invoke void @_ZN6langcc19resolve_builtin_cppERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %100 unwind label %106

100:                                              ; preds = %99
  %101 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %16)
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  br label %108

102:                                              ; preds = %91
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %113

104:                                              ; preds = %92
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %112

106:                                              ; preds = %99
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  br label %112

108:                                              ; preds = %100, %94
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #9
  invoke void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.78") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(264) %3)
          to label %109 unwind label %110

109:                                              ; preds = %108
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Expr2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %17)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  br label %114

110:                                              ; preds = %108
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  br label %112

112:                                              ; preds = %110, %106, %104
  %.pn84 = phi { ptr, i32 } [ %111, %110 ], [ %107, %106 ], [ %105, %104 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %113

113:                                              ; preds = %112, %102
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %112 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  br label %115

114:                                              ; preds = %64, %85, %109
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %9) #9
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %9) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  br label %239

115:                                              ; preds = %73, %90, %81, %75, %113
  %.pn89.pn.pn.pn = phi { ptr, i32 } [ %.pn84.pn, %113 ], [ %74, %73 ], [ %.pn89, %81 ], [ %76, %75 ], [ %.pn87, %90 ]
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %9) #9
  br label %116

116:                                              ; preds = %115, %71
  %.pn89.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn, %115 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %9) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  br label %117

117:                                              ; preds = %116, %69, %67
  %.pn89.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn, %116 ], [ %70, %69 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  br label %118

118:                                              ; preds = %117, %65
  %.pn89.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn.pn, %117 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  br label %240

119:                                              ; preds = %4
  %120 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %121 = tail call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140) %120)
  br i1 %121, label %122, label %195

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #9
  %123 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.82") align 8 %18, ptr noundef nonnull align 8 dereferenceable(140) %123)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  %124 = getelementptr inbounds i8, ptr %3, i64 16
  %125 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE16make_lex_builderEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.83") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %126 unwind label %146

126:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  %127 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %18)
  %128 = getelementptr inbounds i8, ptr %127, i64 144
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %128)
          to label %129 unwind label %148

129:                                              ; preds = %126
  invoke void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %20, ptr noundef nonnull %21, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %3)
          to label %130 unwind label %150

130:                                              ; preds = %129
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  %131 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJA2_cEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSB_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(2) @.str.43)
          to label %132 unwind label %152

132:                                              ; preds = %130
  %133 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %18)
  %134 = getelementptr inbounds i8, ptr %133, i64 160
  %135 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %134)
  %136 = invoke noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64) %135)
          to label %137 unwind label %154

137:                                              ; preds = %132
  %138 = call noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(64) %135)
  %.not98 = icmp eq ptr %136, %138
  br i1 %.not98, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %137
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %136)
          to label %139 unwind label %.loopexit.split-lp

139:                                              ; preds = %.lr.ph.preheader
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %140 unwind label %.loopexit.split-lp113

140:                                              ; preds = %139
  invoke void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %25, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %3)
          to label %141 unwind label %.loopexit.split-lp118

141:                                              ; preds = %140
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  %142 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSA_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %143 unwind label %.loopexit.split-lp123

143:                                              ; preds = %141
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  %144 = getelementptr inbounds i8, ptr %136, i64 16
  %.not.peel = icmp eq ptr %144, %138
  br i1 %.not.peel, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %166, %143, %137
  %145 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %173 unwind label %179

146:                                              ; preds = %122
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %194

148:                                              ; preds = %126
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %193

150:                                              ; preds = %129
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  br label %193

152:                                              ; preds = %130
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %192

154:                                              ; preds = %132
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %192

.lr.ph:                                           ; preds = %143, %166
  %.027100 = phi ptr [ %167, %166 ], [ %144, %143 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %.027100)
          to label %156 unwind label %.loopexit

156:                                              ; preds = %.lr.ph
  %157 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %158 unwind label %159

158:                                              ; preds = %156
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %23)
          to label %162 unwind label %160

.loopexit:                                        ; preds = %.lr.ph
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %172

.loopexit.split-lp:                               ; preds = %.lr.ph.preheader
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %172

159:                                              ; preds = %156
  %lpad.loopexit104 = landingpad { ptr, i32 }
          cleanup
  br label %161

160:                                              ; preds = %158
  %lpad.loopexit109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %161

161:                                              ; preds = %160, %159
  %.pn73 = phi { ptr, i32 } [ %lpad.loopexit109, %160 ], [ %lpad.loopexit104, %159 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  br label %171

162:                                              ; preds = %158
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %163 unwind label %.loopexit112

163:                                              ; preds = %162
  invoke void @_ZN6langcc21data_type_expr_to_cppENS_6rc_ptrIN4lang4data4Node4Expr2_TEEERKNS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %25, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %3)
          to label %164 unwind label %.loopexit117

164:                                              ; preds = %163
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  %165 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSA_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %166 unwind label %.loopexit122

166:                                              ; preds = %164
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  %167 = getelementptr inbounds i8, ptr %.027100, i64 16
  %.not = icmp eq ptr %167, %138
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !30

.loopexit112:                                     ; preds = %162
  %lpad.loopexit114 = landingpad { ptr, i32 }
          cleanup
  br label %170

.loopexit.split-lp113:                            ; preds = %139
  %lpad.loopexit.split-lp115 = landingpad { ptr, i32 }
          cleanup
  br label %170

.loopexit117:                                     ; preds = %163
  %lpad.loopexit119 = landingpad { ptr, i32 }
          cleanup
  br label %168

.loopexit.split-lp118:                            ; preds = %140
  %lpad.loopexit.split-lp120 = landingpad { ptr, i32 }
          cleanup
  br label %168

168:                                              ; preds = %.loopexit.split-lp118, %.loopexit117
  %lpad.phi121 = phi { ptr, i32 } [ %lpad.loopexit119, %.loopexit117 ], [ %lpad.loopexit.split-lp120, %.loopexit.split-lp118 ]
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %170

.loopexit122:                                     ; preds = %164
  %lpad.loopexit124 = landingpad { ptr, i32 }
          cleanup
  br label %169

.loopexit.split-lp123:                            ; preds = %141
  %lpad.loopexit.split-lp125 = landingpad { ptr, i32 }
          cleanup
  br label %169

169:                                              ; preds = %.loopexit.split-lp123, %.loopexit122
  %lpad.phi126 = phi { ptr, i32 } [ %lpad.loopexit124, %.loopexit122 ], [ %lpad.loopexit.split-lp125, %.loopexit.split-lp123 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  br label %170

170:                                              ; preds = %.loopexit112, %.loopexit.split-lp113, %169, %168
  %.pn75 = phi { ptr, i32 } [ %lpad.phi126, %169 ], [ %lpad.phi121, %168 ], [ %lpad.loopexit114, %.loopexit112 ], [ %lpad.loopexit.split-lp115, %.loopexit.split-lp113 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  br label %171

171:                                              ; preds = %170, %161
  %.pn75.pn = phi { ptr, i32 } [ %.pn75, %170 ], [ %.pn73, %161 ]
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %172

172:                                              ; preds = %.loopexit, %.loopexit.split-lp, %171
  %.pn75.pn.pn = phi { ptr, i32 } [ %.pn75.pn, %171 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  br label %192

173:                                              ; preds = %._crit_edge
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32) %145, ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %27)
          to label %174 unwind label %181

174:                                              ; preds = %173
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  %175 = call noundef ptr @_ZN6langcc6rc_ptrINS_8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS3_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS6_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %124)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %176 unwind label %184

176:                                              ; preds = %174
  invoke void @_ZN6langcc4SomeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.88") align 4 %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %177 unwind label %186

177:                                              ; preds = %176
  invoke void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE8qq_innerENS_6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERNS_6rc_ptrINS_9LexOutputEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull %29, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %178 unwind label %188

178:                                              ; preds = %177
  call void @_ZN6langcc6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(36) %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  call void @_ZN6langcc6rc_ptrINS_9LexOutputEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  br label %239

179:                                              ; preds = %._crit_edge
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %183

181:                                              ; preds = %173
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %183

183:                                              ; preds = %181, %179
  %.pn68 = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  br label %192

184:                                              ; preds = %174
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %191

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

188:                                              ; preds = %177
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(36) %29) #9
  br label %190

190:                                              ; preds = %188, %186
  %.pn70 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %191

191:                                              ; preds = %190, %184
  %.pn70.pn = phi { ptr, i32 } [ %.pn70, %190 ], [ %185, %184 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  br label %192

192:                                              ; preds = %183, %191, %172, %154, %152
  %.pn75.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %153, %152 ], [ %.pn70.pn, %191 ], [ %.pn68, %183 ], [ %.pn75.pn.pn, %172 ], [ %155, %154 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %193

193:                                              ; preds = %192, %150, %148
  %.pn75.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn75.pn.pn.pn.pn.pn, %192 ], [ %151, %150 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  call void @_ZN6langcc6rc_ptrINS_9LexOutputEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  br label %194

194:                                              ; preds = %193, %146
  %.pn75.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn75.pn.pn.pn.pn.pn.pn, %193 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #9
  br label %240

195:                                              ; preds = %119
  %196 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %197 = tail call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T7is_Int_Ev(ptr noundef nonnull align 8 dereferenceable(140) %196)
  br i1 %197, label %198, label %227

198:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #9
  %199 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN4lang4data4Node4Expr2_T7as_Int_Ev(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.89") align 8 %32, ptr noundef nonnull align 8 dereferenceable(140) %199)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %34) #9
  %200 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  %201 = getelementptr inbounds i8, ptr %200, i64 144
  invoke void @_ZNK6langcc8StrSlice13to_std_stringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %201)
          to label %202 unwind label %210

202:                                              ; preds = %198
  invoke void @_ZN6langcc13string_to_intENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.90") align 4 %34, ptr noundef nonnull %35)
          to label %203 unwind label %212

203:                                              ; preds = %202
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc6Option2_TIlE7as_someEv(ptr noundef nonnull align 4 dereferenceable(12) %34)
          to label %205 unwind label %214

205:                                              ; preds = %203
  %206 = load i64, ptr %204, align 8, !tbaa !32
  call void @_ZN6langcc6Option2_TIlED2Ev(ptr noundef nonnull align 4 dereferenceable(12) %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %34) #9
  store i64 %206, ptr %33, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %207 unwind label %218

207:                                              ; preds = %205
  invoke void @_ZN6langcc7fmt_strIJlEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS6_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %208 unwind label %220

208:                                              ; preds = %207
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %0, ptr noundef nonnull align 8 dereferenceable(264) %3, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %209 unwind label %222

209:                                              ; preds = %208
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #9
  br label %239

210:                                              ; preds = %198
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %217

212:                                              ; preds = %202
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %216

214:                                              ; preds = %203
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TIlED2Ev(ptr noundef nonnull align 4 dereferenceable(12) %34) #9
  br label %216

216:                                              ; preds = %214, %212
  %.pn61 = phi { ptr, i32 } [ %215, %214 ], [ %213, %212 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %217

217:                                              ; preds = %216, %210
  %.pn61.pn = phi { ptr, i32 } [ %.pn61, %216 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %34) #9
  br label %226

218:                                              ; preds = %205
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %225

220:                                              ; preds = %207
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %224

222:                                              ; preds = %208
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %224

224:                                              ; preds = %222, %220
  %.pn64 = phi { ptr, i32 } [ %223, %222 ], [ %221, %220 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  br label %225

225:                                              ; preds = %224, %218
  %.pn64.pn = phi { ptr, i32 } [ %.pn64, %224 ], [ %219, %218 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %226

226:                                              ; preds = %225, %217
  %.pn64.pn.pn = phi { ptr, i32 } [ %.pn64.pn, %225 ], [ %.pn61.pn, %217 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr4Int_2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #9
  br label %240

227:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %228 unwind label %231

228:                                              ; preds = %227
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %229 unwind label %233

229:                                              ; preds = %228
  invoke void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull %41) #10
          to label %230 unwind label %235

230:                                              ; preds = %229
  unreachable

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

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

235:                                              ; preds = %229
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  br label %237

237:                                              ; preds = %235, %233
  %.pn = phi { ptr, i32 } [ %236, %235 ], [ %234, %233 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %238

238:                                              ; preds = %237, %231
  %.pn.pn = phi { ptr, i32 } [ %.pn, %237 ], [ %232, %231 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  br label %240

239:                                              ; preds = %209, %178, %114
  ret void

240:                                              ; preds = %238, %226, %194, %118
  %.pn89.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn.pn.pn, %118 ], [ %.pn75.pn.pn.pn.pn.pn.pn.pn, %194 ], [ %.pn64.pn.pn, %226 ], [ %.pn.pn, %238 ]
  resume { ptr, i32 } %.pn89.pn.pn.pn.pn.pn.pn.pn
}

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

declare void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8, ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.72") align 4) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.77") align 4) local_unnamed_addr #0

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

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

declare void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.82") align 8, ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE16make_lex_builderEv(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.83") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJA2_cEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSB_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE11qq_args_accIJEEEvRNS_6rc_ptrINS_9LexOutputEEERKNSA_IS4_EEDpRKT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8QuoteEnvIN4lang2cc4Node2_TEXadL_ZNS2_6parser16action_by_vertexElNS_15ParserLookaheadEEEXadL_ZNS5_15vertex_dfa_stepEllNS_14ParserAttrMaskEEEE8qq_innerENS_6Option2_TINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERNS_6rc_ptrINS_9LexOutputEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc4SomeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.88") align 4, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

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

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

declare noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T7is_Int_Ev(ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

declare void @_ZN4lang4data4Node4Expr2_T7as_Int_Ev(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.89") align 8, ptr noundef nonnull align 8 dereferenceable(140)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13string_to_intENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.90") align 4, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc6Option2_TIlE7as_someEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext7qq_exprIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind noalias writable sret(%"struct.langcc::rc_ptr.76") align 8, ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress noreturn uwtable
declare dso_local void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 = { 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 #4 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { alwaysinline 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress noreturn uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { 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, !11, i64 16}
!6 = !{!"_ZTSSt4pairIN6langcc6rc_ptrINS0_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbE", !7, i64 0, !11, i64 16}
!7 = !{!"_ZTSN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE", !8, i64 0, !8, i64 8}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"bool", !9, i64 0}
!12 = !{i8 0, i8 2}
!13 = !{}
!14 = !{!15, !11, i64 140}
!15 = !{!"_ZTSN4lang4data4Node4Expr2Id2_TE", !16, i64 0, !11, i64 140, !29, i64 144}
!16 = !{!"_ZTSN4lang4data4Node4Expr2_TE", !17, i64 0, !28, i64 136}
!17 = !{!"_ZTSN4lang4data4Node2_TE", !18, i64 8, !21, i64 48, !22, i64 64, !23, i64 72, !24, i64 80, !11, i64 88, !23, i64 96, !26, i64 104, !27, i64 120}
!18 = !{!"_ZTSN6langcc8hash_objE", !19, i64 0}
!19 = !{!"_ZTSN6langcc6Option2_TINS_7HashValEEE", !20, i64 0, !9, i64 4}
!20 = !{!"_ZTSN6langcc6Option2_WE", !9, i64 0}
!21 = !{!"_ZTSN6langcc24enable_rc_from_this_polyE", !8, i64 0, !8, i64 8}
!22 = !{!"_ZTSN4lang4data4Node2_WE", !9, i64 0}
!23 = !{!"long", !9, i64 0}
!24 = !{!"_ZTSN6langcc11TokenBoundsE", !25, i64 0, !25, i64 4}
!25 = !{!"int", !9, i64 0}
!26 = !{!"_ZTSN6langcc14ParserAttrMaskE", !9, i64 0}
!27 = !{!"_ZTSN6langcc15ParserLookaheadE", !9, i64 0}
!28 = !{!"_ZTSN4lang4data4Node4Expr2_WE", !9, i64 0}
!29 = !{!"_ZTSN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEE", !8, i64 0, !8, i64 8}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.peeled.count", i32 1}
!32 = !{!23, !23, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopFullUnrollPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass