; 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 }
%"struct.langcc::Option::_T.69" = type { i32, [24 x i8] }
%"struct.langcc::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::HashVal" = type { [32 x i8] }
%"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 }
%"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.117" = type { i32, [16 x i8] }
%"struct.langcc::rc_ptr.1" = type { ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator.73" = type { i8 }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"struct.langcc::rc_ptr.12" = type { ptr, ptr }
%"struct.langcc::rc_ptr.118" = type { ptr, ptr }
%"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::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 }

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #4 align 2

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

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

; Function Attrs: inlinehint mustprogress noreturn uwtable
declare dso_local void @_ZN6langcc2AXEv() #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::HashVal") align 1, ptr noundef nonnull align 8 dereferenceable(16)) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6langcc7HashValeqERKS0_(ptr noundef nonnull align 1 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(32)) #5 align 2

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 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 #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef, ptr noundef, i1 noundef zeroext) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.117") align 4 %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %11, ptr noundef nonnull align 8 dereferenceable(376) %12) #0 personality ptr @__gxx_personality_v0 {
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"struct.langcc::rc_ptr.1", align 8
  %28 = alloca %"struct.langcc::rc_ptr.81", align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca %"struct.langcc::rc_ptr.0", align 8
  %32 = alloca %"struct.langcc::rc_ptr.1", align 8
  %33 = alloca %"struct.langcc::Option::_T.69", align 4
  %34 = alloca ptr, align 8
  %35 = alloca i8, align 1
  %36 = alloca %"struct.langcc::rc_ptr.0", align 8
  %37 = alloca %"struct.langcc::rc_ptr.0", align 8
  %38 = alloca i8, align 1
  %39 = alloca %"struct.langcc::rc_ptr.0", align 8
  %40 = alloca %"struct.langcc::rc_ptr.0", align 8
  %41 = alloca %"struct.langcc::rc_ptr.76", align 8
  %42 = alloca %"struct.langcc::rc_ptr.0", align 8
  %43 = alloca %"struct.langcc::rc_ptr.76", align 8
  %44 = alloca %"struct.langcc::Option::_T.72", align 4
  %45 = alloca %"struct.langcc::Option::_T.77", align 4
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"struct.langcc::rc_ptr.0", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"struct.langcc::rc_ptr.76", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"struct.langcc::rc_ptr.0", align 8
  %54 = alloca %"struct.langcc::rc_ptr.81", align 8
  %55 = alloca %"struct.langcc::rc_ptr.0", align 8
  %56 = alloca %"struct.langcc::rc_ptr.82", align 8
  %57 = alloca %"struct.langcc::rc_ptr.0", align 8
  %58 = alloca %"struct.langcc::rc_ptr.1", align 8
  %59 = alloca %"struct.langcc::rc_ptr.81", align 8
  %60 = alloca %"struct.langcc::HashVal", align 1
  %61 = alloca %"struct.langcc::HashVal", align 1
  %62 = alloca %"struct.langcc::rc_ptr.0", align 8
  %63 = alloca %"class.std::vector", align 8
  %64 = alloca %"class.std::initializer_list", align 8
  %65 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %66 = alloca ptr, align 8
  %67 = alloca %"class.std::allocator", align 1
  %68 = alloca i1, align 1
  %69 = alloca %"class.std::allocator.73", align 1
  %70 = alloca %"struct.langcc::rc_ptr.46", align 8
  %71 = alloca %"struct.langcc::rc_ptr.76", align 8
  %72 = alloca %"struct.langcc::rc_ptr.46", align 8
  %73 = alloca i1, align 1
  %74 = alloca %"struct.langcc::Option::_T.117", align 4
  %75 = alloca %"struct.langcc::rc_ptr.76", align 8
  %76 = alloca %"struct.langcc::rc_ptr.0", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::allocator", align 1
  %79 = alloca %"struct.langcc::rc_ptr.76", align 8
  %80 = alloca %"struct.langcc::rc_ptr.0", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::allocator", align 1
  %83 = alloca %"struct.langcc::rc_ptr.12", align 8
  %84 = alloca %"struct.langcc::Option::_T.117", align 4
  %85 = alloca %"struct.langcc::rc_ptr.0", align 8
  %86 = alloca %"struct.langcc::rc_ptr.0", align 8
  %87 = alloca %"struct.langcc::rc_ptr.118", align 8
  %88 = alloca %"struct.langcc::rc_ptr.76", align 8
  %89 = alloca %"struct.langcc::rc_ptr.76", align 8
  %90 = alloca %"struct.langcc::rc_ptr.46", align 8
  %91 = alloca %"struct.langcc::rc_ptr.76", align 8
  %92 = alloca %"struct.langcc::rc_ptr.76", align 8
  %93 = alloca %"struct.langcc::HashVal", align 1
  %94 = alloca %"struct.langcc::HashVal", align 1
  %95 = alloca %"struct.langcc::rc_ptr.0", align 8
  %96 = alloca %"class.std::vector", align 8
  %97 = alloca %"class.std::initializer_list", align 8
  %98 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"class.std::allocator", align 1
  %101 = alloca i1, align 1
  %102 = alloca %"class.std::allocator.73", align 1
  %103 = alloca %"struct.langcc::rc_ptr.46", align 8
  %104 = alloca %"struct.langcc::rc_ptr.76", align 8
  %105 = alloca %"struct.langcc::rc_ptr.46", align 8
  %106 = alloca i1, align 1
  %107 = alloca %"struct.langcc::Option::_T.117", align 4
  %108 = alloca %"struct.langcc::rc_ptr.76", align 8
  %109 = alloca %"struct.langcc::rc_ptr.0", align 8
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.std::allocator", align 1
  %112 = alloca %"struct.langcc::rc_ptr.12", align 8
  %113 = alloca %"struct.langcc::Option::_T.117", align 4
  %114 = alloca %"struct.langcc::rc_ptr.0", align 8
  %115 = alloca %"struct.langcc::rc_ptr.0", align 8
  %116 = alloca %"struct.langcc::rc_ptr.118", align 8
  %117 = alloca %"struct.langcc::rc_ptr.76", align 8
  %118 = alloca %"struct.langcc::rc_ptr.76", align 8
  %119 = alloca %"struct.langcc::rc_ptr.46", align 8
  %120 = alloca %"struct.langcc::rc_ptr.76", align 8
  %121 = alloca %"struct.langcc::rc_ptr.76", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::allocator", align 1
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"class.std::allocator", align 1
  %127 = alloca %"struct.langcc::rc_ptr.46", align 8
  store ptr %0, ptr %14, align 8
  store i32 %1, ptr %15, align 4, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !9
  store ptr %3, ptr %17, align 8, !tbaa !9
  store ptr %4, ptr %18, align 8, !tbaa !9
  store ptr %5, ptr %19, align 8, !tbaa !9
  store ptr %6, ptr %20, align 8, !tbaa !9
  store ptr %7, ptr %21, align 8, !tbaa !9
  store ptr %8, ptr %22, align 8, !tbaa !9
  store ptr %9, ptr %23, align 8, !tbaa !9
  store ptr %10, ptr %24, align 8, !tbaa !9
  store i32 %11, ptr %25, align 4, !tbaa !11
  store ptr %12, ptr %26, align 8, !tbaa !9
  %128 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %129 = call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %128)
  br i1 %129, label %130, label %345

130:                                              ; preds = %13
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  %131 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8 %28, ptr noundef nonnull align 8 dereferenceable(140) %131)
  %132 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %133 unwind label %192

133:                                              ; preds = %130
  %134 = getelementptr inbounds %"struct.lang::data::Node::Expr::Id::_T", ptr %132, i32 0, i32 2
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %134)
          to label %135 unwind label %192

135:                                              ; preds = %133
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %136 unwind label %196

136:                                              ; preds = %135
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %31, ptr noundef %32)
          to label %137 unwind label %200

137:                                              ; preds = %136
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @llvm.lifetime.start.p0(i64 28, ptr %33) #9
  %138 = load ptr, ptr %23, align 8, !tbaa !9
  %139 = load ptr, ptr %26, align 8, !tbaa !9
  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 %33, ptr noundef nonnull align 8 dereferenceable(16) %138, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(376) %139)
          to label %140 unwind label %204

140:                                              ; preds = %137
  %141 = invoke noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28) %33)
          to label %142 unwind label %208

142:                                              ; preds = %140
  br i1 %141, label %143, label %317

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %144 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %33)
          to label %145 unwind label %212

145:                                              ; preds = %143
  %146 = getelementptr inbounds %"struct.std::pair.70", ptr %144, i32 0, i32 0
  store ptr %146, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  %147 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %33)
          to label %148 unwind label %216

148:                                              ; preds = %145
  %149 = getelementptr inbounds %"struct.std::pair.70", ptr %147, i32 0, i32 1
  %150 = load i8, ptr %149, align 8, !tbaa !13, !range !17, !noundef !18
  %151 = trunc i8 %150 to i1
  %152 = zext i1 %151 to i8
  store i8 %152, ptr %35, align 1, !tbaa !19
  %153 = load i8, ptr %35, align 1, !tbaa !19, !range !17, !noundef !18
  %154 = trunc i8 %153 to i1
  br i1 %154, label %155, label %312

155:                                              ; preds = %148
  %156 = load i32, ptr %15, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %157 unwind label %216

157:                                              ; preds = %155
  %158 = load ptr, ptr %34, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %159 unwind label %220

159:                                              ; preds = %157
  %160 = load i32, ptr %25, align 4, !tbaa !11
  %161 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef %156, ptr noundef %36, ptr noundef %37, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %160, ptr noundef nonnull align 8 dereferenceable(376) %161)
          to label %162 unwind label %224

162:                                              ; preds = %159
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #9
  %163 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %164 unwind label %229

164:                                              ; preds = %162
  %165 = load ptr, ptr %34, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %166 unwind label %233

166:                                              ; preds = %164
  %167 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %163, ptr noundef %39, ptr noundef %40)
          to label %168 unwind label %237

168:                                              ; preds = %166
  %169 = xor i1 %167, true
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  %170 = zext i1 %169 to i8
  store i8 %170, ptr %38, align 1, !tbaa !19
  %171 = load i32, ptr %15, align 4, !tbaa !5
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %285

173:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #9
  %174 = load ptr, ptr %26, align 8, !tbaa !9
  %175 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %174, i32 0, i32 0
  %176 = load ptr, ptr %19, align 8, !tbaa !9
  %177 = load ptr, ptr %24, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %178 unwind label %242

178:                                              ; preds = %173
  %179 = load ptr, ptr %34, align 8, !tbaa !9
  %180 = load ptr, ptr %26, align 8, !tbaa !9
  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 %44)
          to label %181 unwind label %246

181:                                              ; preds = %178
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %45)
          to label %182 unwind label %250

182:                                              ; preds = %181
  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 %43, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull align 8 dereferenceable(376) %180, ptr noundef %44, ptr noundef %45)
          to label %183 unwind label %254

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.51, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %184 unwind label %258

184:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #9
  %185 = load i32, ptr %15, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %186 unwind label %262

186:                                              ; preds = %184
  %187 = load i8, ptr %38, align 1, !tbaa !19, !range !17, !noundef !18
  %188 = trunc i8 %187 to i1
  invoke void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, i32 noundef %185, ptr noundef %49, i1 noundef zeroext %188)
          to label %189 unwind label %266

189:                                              ; preds = %186
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSF_ISD_EEEET_SD_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %41, ptr noundef nonnull align 8 dereferenceable(264) %175, ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef %42, ptr noundef %43, ptr noundef %46, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %190 unwind label %270

190:                                              ; preds = %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %45) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %44) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %41)
          to label %191 unwind label %280

191:                                              ; preds = %190
  store i32 1, ptr %50, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  br label %310

192:                                              ; preds = %133, %130
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %29, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  br label %344

196:                                              ; preds = %135
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %29, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %30, align 4
  br label %343

200:                                              ; preds = %136
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %29, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  br label %343

204:                                              ; preds = %137
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %29, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %30, align 4
  br label %342

208:                                              ; preds = %338, %327, %140
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %29, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %30, align 4
  br label %341

212:                                              ; preds = %143
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %29, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %30, align 4
  br label %316

216:                                              ; preds = %312, %155, %145
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %29, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %30, align 4
  br label %315

220:                                              ; preds = %157
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %29, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %30, align 4
  br label %228

224:                                              ; preds = %159
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %29, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  br label %228

228:                                              ; preds = %224, %220
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  br label %315

229:                                              ; preds = %294, %162
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %29, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %30, align 4
  br label %311

233:                                              ; preds = %164
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %29, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %30, align 4
  br label %241

237:                                              ; preds = %166
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %29, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  br label %241

241:                                              ; preds = %237, %233
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %311

242:                                              ; preds = %173
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %29, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %30, align 4
  br label %284

246:                                              ; preds = %178
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %29, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %30, align 4
  br label %279

250:                                              ; preds = %181
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %29, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %30, align 4
  br label %278

254:                                              ; preds = %182
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %29, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %30, align 4
  br label %277

258:                                              ; preds = %183
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %29, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %30, align 4
  br label %276

262:                                              ; preds = %184
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %29, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %30, align 4
  br label %275

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

270:                                              ; preds = %189
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %29, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %30, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %274

274:                                              ; preds = %270, %266
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  br label %275

275:                                              ; preds = %274, %262
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %276

276:                                              ; preds = %275, %258
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %277

277:                                              ; preds = %276, %254
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %45) #9
  br label %278

278:                                              ; preds = %277, %250
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %44) #9
  br label %279

279:                                              ; preds = %278, %246
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  br label %284

280:                                              ; preds = %190
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %29, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  br label %284

284:                                              ; preds = %280, %279, %242
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  br label %311

285:                                              ; preds = %168
  %286 = load ptr, ptr %26, align 8, !tbaa !9
  %287 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %286, i32 0, i32 0
  %288 = load ptr, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #9
  %289 = load i32, ptr %15, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %290 unwind label %296

290:                                              ; preds = %285
  %291 = load i8, ptr %38, align 1, !tbaa !19, !range !17, !noundef !18
  %292 = trunc i8 %291 to i1
  invoke void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, i32 noundef %289, ptr noundef %53, i1 noundef zeroext %292)
          to label %293 unwind label %300

293:                                              ; preds = %290
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEES8_SE_A3_cEEESE_RNS9_INS_3VecISE_EEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %51, ptr noundef nonnull align 8 dereferenceable(264) %287, ptr noundef nonnull align 8 dereferenceable(16) %288, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %294 unwind label %304

294:                                              ; preds = %293
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %295 unwind label %229

295:                                              ; preds = %294
  store i32 1, ptr %50, align 4
  br label %310

296:                                              ; preds = %285
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %29, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %30, align 4
  br label %309

300:                                              ; preds = %290
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %29, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %30, align 4
  br label %308

304:                                              ; preds = %293
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %29, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %30, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %308

308:                                              ; preds = %304, %300
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  br label %309

309:                                              ; preds = %308, %296
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  br label %311

310:                                              ; preds = %295, %191
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  br label %314

311:                                              ; preds = %309, %284, %241, %229
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  br label %315

312:                                              ; preds = %148
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %313 unwind label %216

313:                                              ; preds = %312
  store i32 1, ptr %50, align 4
  br label %314

314:                                              ; preds = %313, %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %340

315:                                              ; preds = %311, %228, %216
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %316

316:                                              ; preds = %315, %212
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %341

317:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #9
  %318 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %319 unwind label %329

319:                                              ; preds = %317
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8 %54, ptr noundef nonnull align 8 dereferenceable(140) %318)
          to label %320 unwind label %329

320:                                              ; preds = %319
  %321 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
          to label %322 unwind label %333

322:                                              ; preds = %320
  %323 = getelementptr inbounds %"struct.lang::data::Node::Expr::Id::_T", ptr %321, i32 0, i32 1
  %324 = load i8, ptr %323, align 4, !tbaa !20, !range !17, !noundef !18
  %325 = trunc i8 %324 to i1
  %326 = xor i1 %325, true
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #9
  br i1 %326, label %327, label %338

327:                                              ; preds = %322
  invoke void @_ZN6langcc19resolve_builtin_cppERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %55, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %328 unwind label %208

328:                                              ; preds = %327
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #9
  br label %338

329:                                              ; preds = %319, %317
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %29, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %30, align 4
  br label %337

333:                                              ; preds = %320
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %29, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  br label %337

337:                                              ; preds = %333, %329
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #9
  br label %341

338:                                              ; preds = %328, %322
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %339 unwind label %208

339:                                              ; preds = %338
  store i32 1, ptr %50, align 4
  br label %340

340:                                              ; preds = %339, %314
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %33) #9
  call void @llvm.lifetime.end.p0(i64 28, ptr %33) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %977

341:                                              ; preds = %337, %316, %208
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %33) #9
  br label %342

342:                                              ; preds = %341, %204
  call void @llvm.lifetime.end.p0(i64 28, ptr %33) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  br label %343

343:                                              ; preds = %342, %200, %196
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  br label %344

344:                                              ; preds = %343, %192
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %978

345:                                              ; preds = %13
  %346 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %347 = call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140) %346)
  br i1 %347, label %348, label %959

348:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #9
  %349 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.82") align 8 %56, ptr noundef nonnull align 8 dereferenceable(140) %349)
  %350 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %351 unwind label %364

351:                                              ; preds = %348
  %352 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %350, i32 0, i32 1
  %353 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %352)
          to label %354 unwind label %364

354:                                              ; preds = %351
  %355 = invoke noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %353)
          to label %356 unwind label %364

356:                                              ; preds = %354
  br i1 %355, label %370, label %357

357:                                              ; preds = %356
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
          to label %359 unwind label %364

359:                                              ; preds = %357
  %360 = load i64, ptr %358, align 8, !tbaa !36
  %361 = icmp sle i64 -1, %360
  br i1 %361, label %362, label %368

362:                                              ; preds = %359
  invoke void @_ZN6langcc9log_innerIJA44_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(44) @.str.55)
          to label %363 unwind label %364

363:                                              ; preds = %362
  br label %368

364:                                              ; preds = %368, %362, %357, %354, %351, %348
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %29, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %30, align 4
  br label %958

368:                                              ; preds = %363, %359
  invoke void @_ZN6langcc2AXEv() #10
          to label %369 unwind label %364

369:                                              ; preds = %368
  unreachable

370:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #9
  %371 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %372 unwind label %418

372:                                              ; preds = %370
  %373 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %371, i32 0, i32 1
  %374 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %373)
          to label %375 unwind label %418

375:                                              ; preds = %372
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.81") align 8 %59, ptr noundef nonnull align 8 dereferenceable(140) %374)
          to label %376 unwind label %418

376:                                              ; preds = %375
  %377 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %378 unwind label %422

378:                                              ; preds = %376
  %379 = getelementptr inbounds %"struct.lang::data::Node::Expr::Id::_T", ptr %377, i32 0, i32 2
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %379)
          to label %380 unwind label %422

380:                                              ; preds = %378
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %57, ptr noundef %58)
          to label %381 unwind label %426

381:                                              ; preds = %380
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #9
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind writable sret(%"struct.langcc::HashVal") align 1 %60, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %382 unwind label %432

382:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  store i1 true, ptr %68, align 1
  store ptr %65, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %383 unwind label %436

383:                                              ; preds = %382
  store i1 false, ptr %68, align 1
  %384 = getelementptr inbounds %"class.std::initializer_list", ptr %64, i32 0, i32 0
  store ptr %65, ptr %384, align 8, !tbaa !37
  %385 = getelementptr inbounds %"class.std::initializer_list", ptr %64, i32 0, i32 1
  store i64 1, ptr %385, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #9
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  %386 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 0
  %387 = load ptr, ptr %386, align 8
  %388 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 1
  %389 = load i64, ptr %388, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr %387, i64 %389, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %390 unwind label %440

390:                                              ; preds = %383
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %62, ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %391 unwind label %444

391:                                              ; preds = %390
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind writable sret(%"struct.langcc::HashVal") align 1 %61, ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %392 unwind label %448

392:                                              ; preds = %391
  %393 = invoke noundef zeroext i1 @_ZNK6langcc7HashValeqERKS0_(ptr noundef nonnull align 1 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(32) %61)
          to label %394 unwind label %448

394:                                              ; preds = %392
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  %395 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %65, i32 0, i32 0
  %396 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %395, i64 1
  br label %397

397:                                              ; preds = %397, %394
  %398 = phi ptr [ %396, %394 ], [ %399, %397 ]
  %399 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %398, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  %400 = icmp eq ptr %399, %395
  br i1 %400, label %401, label %397

401:                                              ; preds = %397
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  br i1 %393, label %402, label %675

402:                                              ; preds = %401
  %403 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %404 unwind label %473

404:                                              ; preds = %402
  %405 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %403, i32 0, i32 2
  %406 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %405)
          to label %407 unwind label %473

407:                                              ; preds = %404
  %408 = invoke noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %406)
          to label %409 unwind label %473

409:                                              ; preds = %407
  %410 = icmp ne i64 %408, 1
  br i1 %410, label %411, label %479

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
          to label %413 unwind label %473

413:                                              ; preds = %411
  %414 = load i64, ptr %412, align 8, !tbaa !36
  %415 = icmp sle i64 -1, %414
  br i1 %415, label %416, label %477

416:                                              ; preds = %413
  invoke void @_ZN6langcc9log_innerIJA54_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(54) @.str.56)
          to label %417 unwind label %473

417:                                              ; preds = %416
  br label %477

418:                                              ; preds = %375, %372, %370
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %29, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %30, align 4
  br label %431

422:                                              ; preds = %378, %376
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %29, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %30, align 4
  br label %430

426:                                              ; preds = %380
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %29, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #9
  br label %430

430:                                              ; preds = %426, %422
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #9
  br label %431

431:                                              ; preds = %430, %418
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #9
  br label %957

432:                                              ; preds = %381
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %29, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %30, align 4
  br label %472

436:                                              ; preds = %382
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %29, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %30, align 4
  br label %461

440:                                              ; preds = %383
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %29, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %30, align 4
  br label %453

444:                                              ; preds = %390
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %29, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %30, align 4
  br label %452

448:                                              ; preds = %392, %391
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %29, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %452

452:                                              ; preds = %448, %444
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #9
  br label %453

453:                                              ; preds = %452, %440
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  %454 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %65, i32 0, i32 0
  %455 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %454, i64 1
  br label %456

456:                                              ; preds = %456, %453
  %457 = phi ptr [ %455, %453 ], [ %458, %456 ]
  %458 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %457, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %458) #9
  %459 = icmp eq ptr %458, %454
  br i1 %459, label %460, label %456

460:                                              ; preds = %456
  br label %461

461:                                              ; preds = %460, %436
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  %462 = load i1, ptr %68, align 1
  br i1 %462, label %463, label %471

463:                                              ; preds = %461
  %464 = load ptr, ptr %66, align 8
  %465 = icmp eq ptr %65, %464
  br i1 %465, label %470, label %466

466:                                              ; preds = %466, %463
  %467 = phi ptr [ %464, %463 ], [ %468, %466 ]
  %468 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %467, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %468) #9
  %469 = icmp eq ptr %468, %65
  br i1 %469, label %470, label %466

470:                                              ; preds = %466, %463
  br label %471

471:                                              ; preds = %470, %461
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  br label %472

472:                                              ; preds = %471, %432
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  br label %956

473:                                              ; preds = %953, %930, %753, %710, %705, %701, %698, %696, %477, %416, %411, %407, %404, %402
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %29, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %30, align 4
  br label %956

477:                                              ; preds = %417, %413
  invoke void @_ZN6langcc2AXEv() #10
          to label %478 unwind label %473

478:                                              ; preds = %477
  unreachable

479:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #9
  %480 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %481 unwind label %506

481:                                              ; preds = %479
  %482 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %480, i32 0, i32 2
  %483 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %482)
          to label %484 unwind label %506

484:                                              ; preds = %481
  %485 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64) %483, i64 noundef 0)
          to label %486 unwind label %506

486:                                              ; preds = %484
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(16) %485)
          to label %487 unwind label %506

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %488 unwind label %510

488:                                              ; preds = %487
  %489 = load ptr, ptr %23, align 8, !tbaa !9
  %490 = load ptr, ptr %26, align 8, !tbaa !9
  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 %71, ptr noundef %72, ptr noundef nonnull align 8 dereferenceable(16) %489, ptr noundef nonnull align 8 dereferenceable(376) %490)
          to label %491 unwind label %514

491:                                              ; preds = %488
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  store i1 false, ptr %73, align 1
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %492 unwind label %518

492:                                              ; preds = %491
  %493 = load i32, ptr %15, align 4, !tbaa !5
  %494 = icmp eq i32 %493, 0
  br i1 %494, label %495, label %546

495:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 20, ptr %74) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #9
  %496 = load ptr, ptr %26, align 8, !tbaa !9
  %497 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %496, i32 0, i32 0
  %498 = load ptr, ptr %19, align 8, !tbaa !9
  %499 = load ptr, ptr %24, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 8 dereferenceable(16) %499)
          to label %500 unwind label %522

500:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %501 unwind label %526

501:                                              ; preds = %500
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA29_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA5_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %75, ptr noundef nonnull align 8 dereferenceable(264) %497, ptr noundef nonnull align 8 dereferenceable(16) %498, ptr noundef %76, ptr noundef @.str.57, ptr noundef %77, ptr noundef nonnull align 1 dereferenceable(29) @.str.59, ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 1 dereferenceable(5) @.str.60)
          to label %502 unwind label %530

502:                                              ; preds = %501
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %74, ptr noundef nonnull align 8 dereferenceable(16) %75)
          to label %503 unwind label %534

503:                                              ; preds = %502
  %504 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %0, ptr noundef nonnull align 4 dereferenceable(20) %74)
          to label %505 unwind label %538

505:                                              ; preds = %503
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %74) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %74) #9
  br label %546

506:                                              ; preds = %486, %484, %481, %479
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %29, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %30, align 4
  br label %674

510:                                              ; preds = %487
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %29, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %30, align 4
  br label %673

514:                                              ; preds = %488
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %29, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  br label %673

518:                                              ; preds = %491
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %29, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %30, align 4
  br label %672

522:                                              ; preds = %495
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %29, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %30, align 4
  br label %545

526:                                              ; preds = %500
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %29, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %30, align 4
  br label %544

530:                                              ; preds = %501
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %29, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %30, align 4
  br label %543

534:                                              ; preds = %502
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %29, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %30, align 4
  br label %542

538:                                              ; preds = %503
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %29, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %30, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %74) #9
  br label %542

542:                                              ; preds = %538, %534
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #9
  br label %543

543:                                              ; preds = %542, %530
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #9
  br label %544

544:                                              ; preds = %543, %526
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #9
  br label %545

545:                                              ; preds = %544, %522
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %74) #9
  br label %671

546:                                              ; preds = %505, %492
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #9
  %547 = load ptr, ptr %26, align 8, !tbaa !9
  %548 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %547, i32 0, i32 0
  %549 = load ptr, ptr %19, align 8, !tbaa !9
  %550 = load ptr, ptr %24, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(16) %550)
          to label %551 unwind label %582

551:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef @.str.62, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %552 unwind label %586

552:                                              ; preds = %551
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA2_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEERNS5_INS_3VecISA_EEEENS5_INSB_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SK_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %79, ptr noundef nonnull align 8 dereferenceable(264) %548, ptr noundef nonnull align 8 dereferenceable(16) %549, ptr noundef %80, ptr noundef @.str.61, ptr noundef %81, ptr noundef nonnull align 1 dereferenceable(2) @.str.63)
          to label %553 unwind label %590

553:                                              ; preds = %552
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #9
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %83)
          to label %554 unwind label %595

554:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 20, ptr %84) #9
  %555 = load i32, ptr %15, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %556 unwind label %599

556:                                              ; preds = %554
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %557 unwind label %603

557:                                              ; preds = %556
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %558 unwind label %607

558:                                              ; preds = %557
  %559 = load ptr, ptr %26, align 8, !tbaa !9
  %560 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %559, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A2_cEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %88, ptr noundef nonnull align 8 dereferenceable(264) %560, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(16) @.str.64, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %561 unwind label %611

561:                                              ; preds = %558
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %562 unwind label %615

562:                                              ; preds = %561
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %563 unwind label %619

563:                                              ; preds = %562
  %564 = load ptr, ptr %23, align 8, !tbaa !9
  %565 = load ptr, ptr %24, align 8, !tbaa !9
  %566 = load i32, ptr %25, align 4, !tbaa !11
  %567 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %84, i32 noundef %555, ptr noundef %85, ptr noundef %86, ptr noundef %87, ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef %88, ptr noundef %89, ptr noundef %90, ptr noundef nonnull align 8 dereferenceable(16) %564, ptr noundef nonnull align 8 dereferenceable(16) %565, i32 noundef %566, ptr noundef nonnull align 8 dereferenceable(376) %567)
          to label %568 unwind label %623

568:                                              ; preds = %563
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #9
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  %569 = load i32, ptr %15, align 4, !tbaa !5
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %645

571:                                              ; preds = %568
  %572 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %573 unwind label %632

573:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #9
  %574 = load ptr, ptr %26, align 8, !tbaa !9
  %575 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %574, i32 0, i32 0
  %576 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %0)
          to label %577 unwind label %636

577:                                              ; preds = %573
  %578 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %84)
          to label %579 unwind label %636

579:                                              ; preds = %577
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA13_cS8_A3_cEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %91, ptr noundef nonnull align 8 dereferenceable(264) %575, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 8 dereferenceable(16) %576, ptr noundef nonnull align 1 dereferenceable(13) @.str.66, ptr noundef nonnull align 8 dereferenceable(16) %578, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %580 unwind label %636

580:                                              ; preds = %579
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %572, ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %581 unwind label %640

581:                                              ; preds = %580
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #9
  br label %645

582:                                              ; preds = %546
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %29, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %30, align 4
  br label %668

586:                                              ; preds = %551
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %29, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %30, align 4
  br label %594

590:                                              ; preds = %552
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %29, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %30, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %594

594:                                              ; preds = %590, %586
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #9
  br label %668

595:                                              ; preds = %553
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %29, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %30, align 4
  br label %667

599:                                              ; preds = %554
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %29, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %30, align 4
  br label %666

603:                                              ; preds = %556
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %29, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %30, align 4
  br label %631

607:                                              ; preds = %557
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %29, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %30, align 4
  br label %630

611:                                              ; preds = %558
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %29, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %30, align 4
  br label %629

615:                                              ; preds = %561
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %29, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %30, align 4
  br label %628

619:                                              ; preds = %562
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %29, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %30, align 4
  br label %627

623:                                              ; preds = %563
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %29, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  br label %627

627:                                              ; preds = %623, %619
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  br label %628

628:                                              ; preds = %627, %615
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #9
  br label %629

629:                                              ; preds = %628, %611
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  br label %630

630:                                              ; preds = %629, %607
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #9
  br label %631

631:                                              ; preds = %630, %603
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  br label %666

632:                                              ; preds = %571
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %29, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %30, align 4
  br label %665

636:                                              ; preds = %579, %577, %573
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %29, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %30, align 4
  br label %644

640:                                              ; preds = %580
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %29, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  br label %644

644:                                              ; preds = %640, %636
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #9
  br label %665

645:                                              ; preds = %581, %568
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #9
  %646 = load ptr, ptr %26, align 8, !tbaa !9
  %647 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %646, i32 0, i32 0
  %648 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %649 unwind label %656

649:                                              ; preds = %645
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA6_cNS_6rc_ptrIN4lang2cc4Node2_TEEES3_S9_S2_S9_A13_cS9_S3_NS_3VecIS9_EEA2_cEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %92, ptr noundef nonnull align 8 dereferenceable(264) %647, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(6) @.str.67, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 1 dereferenceable(6) @.str.68, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 1 dereferenceable(5) @.str.69, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(13) @.str.70, ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 1 dereferenceable(6) @.str.71, ptr noundef nonnull align 8 dereferenceable(64) %648, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %650 unwind label %656

650:                                              ; preds = %649
  %651 = load ptr, ptr %19, align 8, !tbaa !9
  %652 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %651)
          to label %653 unwind label %660

653:                                              ; preds = %650
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %652, ptr noundef nonnull align 8 dereferenceable(16) %92)
          to label %654 unwind label %660

654:                                              ; preds = %653
  store i1 true, ptr %73, align 1
  store i32 1, ptr %50, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %84) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %84) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  %655 = load i1, ptr %73, align 1
  br i1 %655, label %670, label %669

656:                                              ; preds = %649, %645
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %29, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %30, align 4
  br label %664

660:                                              ; preds = %653, %650
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %29, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  br label %664

664:                                              ; preds = %660, %656
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #9
  br label %665

665:                                              ; preds = %664, %644, %632
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %84) #9
  br label %666

666:                                              ; preds = %665, %631, %599
  call void @llvm.lifetime.end.p0(i64 20, ptr %84) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #9
  br label %667

667:                                              ; preds = %666, %595
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  br label %668

668:                                              ; preds = %667, %594, %582
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  br label %671

669:                                              ; preds = %654
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %670

670:                                              ; preds = %669, %654
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #9
  br label %955

671:                                              ; preds = %668, %545
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %672

672:                                              ; preds = %671, %518
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #9
  br label %673

673:                                              ; preds = %672, %514, %510
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #9
  br label %674

674:                                              ; preds = %673, %506
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #9
  br label %956

675:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #9
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind writable sret(%"struct.langcc::HashVal") align 1 %93, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %676 unwind label %712

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %96) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %98) #9
  store i1 true, ptr %101, align 1
  store ptr %98, ptr %99, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %677 unwind label %716

677:                                              ; preds = %676
  store i1 false, ptr %101, align 1
  %678 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 0
  store ptr %98, ptr %678, align 8, !tbaa !37
  %679 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 1
  store i64 1, ptr %679, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #9
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  %680 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 0
  %681 = load ptr, ptr %680, align 8
  %682 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 1
  %683 = load i64, ptr %682, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr %681, i64 %683, ptr noundef nonnull align 1 dereferenceable(1) %102)
          to label %684 unwind label %720

684:                                              ; preds = %677
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %95, ptr noundef nonnull align 8 dereferenceable(24) %96)
          to label %685 unwind label %724

685:                                              ; preds = %684
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind writable sret(%"struct.langcc::HashVal") align 1 %94, ptr noundef nonnull align 8 dereferenceable(16) %95)
          to label %686 unwind label %728

686:                                              ; preds = %685
  %687 = invoke noundef zeroext i1 @_ZNK6langcc7HashValeqERKS0_(ptr noundef nonnull align 1 dereferenceable(32) %93, ptr noundef nonnull align 1 dereferenceable(32) %94)
          to label %688 unwind label %728

688:                                              ; preds = %686
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #9
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  %689 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %98, i32 0, i32 0
  %690 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %689, i64 1
  br label %691

691:                                              ; preds = %691, %688
  %692 = phi ptr [ %690, %688 ], [ %693, %691 ]
  %693 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %692, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %693) #9
  %694 = icmp eq ptr %693, %689
  br i1 %694, label %695, label %691

695:                                              ; preds = %691
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #9
  br i1 %687, label %696, label %930

696:                                              ; preds = %695
  %697 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %698 unwind label %473

698:                                              ; preds = %696
  %699 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %697, i32 0, i32 2
  %700 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %699)
          to label %701 unwind label %473

701:                                              ; preds = %698
  %702 = invoke noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %700)
          to label %703 unwind label %473

703:                                              ; preds = %701
  %704 = icmp ne i64 %702, 1
  br i1 %704, label %705, label %755

705:                                              ; preds = %703
  %706 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
          to label %707 unwind label %473

707:                                              ; preds = %705
  %708 = load i64, ptr %706, align 8, !tbaa !36
  %709 = icmp sle i64 -1, %708
  br i1 %709, label %710, label %753

710:                                              ; preds = %707
  invoke void @_ZN6langcc9log_innerIJA57_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(57) @.str.73)
          to label %711 unwind label %473

711:                                              ; preds = %710
  br label %753

712:                                              ; preds = %675
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %29, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %30, align 4
  br label %752

716:                                              ; preds = %676
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %29, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %30, align 4
  br label %741

720:                                              ; preds = %677
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %29, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %30, align 4
  br label %733

724:                                              ; preds = %684
  %725 = landingpad { ptr, i32 }
          cleanup
  %726 = extractvalue { ptr, i32 } %725, 0
  store ptr %726, ptr %29, align 8
  %727 = extractvalue { ptr, i32 } %725, 1
  store i32 %727, ptr %30, align 4
  br label %732

728:                                              ; preds = %686, %685
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %29, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #9
  br label %732

732:                                              ; preds = %728, %724
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #9
  br label %733

733:                                              ; preds = %732, %720
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %102) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #9
  %734 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %98, i32 0, i32 0
  %735 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %734, i64 1
  br label %736

736:                                              ; preds = %736, %733
  %737 = phi ptr [ %735, %733 ], [ %738, %736 ]
  %738 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %737, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %738) #9
  %739 = icmp eq ptr %738, %734
  br i1 %739, label %740, label %736

740:                                              ; preds = %736
  br label %741

741:                                              ; preds = %740, %716
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  %742 = load i1, ptr %101, align 1
  br i1 %742, label %743, label %751

743:                                              ; preds = %741
  %744 = load ptr, ptr %99, align 8
  %745 = icmp eq ptr %98, %744
  br i1 %745, label %750, label %746

746:                                              ; preds = %746, %743
  %747 = phi ptr [ %744, %743 ], [ %748, %746 ]
  %748 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %747, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %748) #9
  %749 = icmp eq ptr %748, %98
  br i1 %749, label %750, label %746

750:                                              ; preds = %746, %743
  br label %751

751:                                              ; preds = %750, %741
  call void @llvm.lifetime.end.p0(i64 32, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #9
  br label %752

752:                                              ; preds = %751, %712
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #9
  br label %956

753:                                              ; preds = %711, %707
  invoke void @_ZN6langcc2AXEv() #10
          to label %754 unwind label %473

754:                                              ; preds = %753
  unreachable

755:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #9
  %756 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %757 unwind label %782

757:                                              ; preds = %755
  %758 = getelementptr inbounds %"struct.lang::data::Node::Expr::App::_T", ptr %756, i32 0, i32 2
  %759 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %758)
          to label %760 unwind label %782

760:                                              ; preds = %757
  %761 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64) %759, i64 noundef 0)
          to label %762 unwind label %782

762:                                              ; preds = %760
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull align 8 dereferenceable(16) %761)
          to label %763 unwind label %782

763:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %764 unwind label %786

764:                                              ; preds = %763
  %765 = load ptr, ptr %23, align 8, !tbaa !9
  %766 = load ptr, ptr %26, align 8, !tbaa !9
  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 %104, ptr noundef %105, ptr noundef nonnull align 8 dereferenceable(16) %765, ptr noundef nonnull align 8 dereferenceable(376) %766)
          to label %767 unwind label %790

767:                                              ; preds = %764
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  store i1 false, ptr %106, align 1
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %768 unwind label %794

768:                                              ; preds = %767
  %769 = load i32, ptr %15, align 4, !tbaa !5
  %770 = icmp eq i32 %769, 0
  br i1 %770, label %771, label %822

771:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 20, ptr %107) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #9
  %772 = load ptr, ptr %26, align 8, !tbaa !9
  %773 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %772, i32 0, i32 0
  %774 = load ptr, ptr %19, align 8, !tbaa !9
  %775 = load ptr, ptr %24, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 8 dereferenceable(16) %775)
          to label %776 unwind label %798

776:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %777 unwind label %802

777:                                              ; preds = %776
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA14_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA4_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %108, ptr noundef nonnull align 8 dereferenceable(264) %773, ptr noundef nonnull align 8 dereferenceable(16) %774, ptr noundef %109, ptr noundef @.str.57, ptr noundef %110, ptr noundef nonnull align 1 dereferenceable(14) @.str.74, ptr noundef nonnull align 8 dereferenceable(16) %104, ptr noundef nonnull align 1 dereferenceable(4) @.str.75)
          to label %778 unwind label %806

778:                                              ; preds = %777
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %107, ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %779 unwind label %810

779:                                              ; preds = %778
  %780 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %0, ptr noundef nonnull align 4 dereferenceable(20) %107)
          to label %781 unwind label %814

781:                                              ; preds = %779
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %107) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %107) #9
  br label %822

782:                                              ; preds = %762, %760, %757, %755
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %29, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %30, align 4
  br label %929

786:                                              ; preds = %763
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %29, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %30, align 4
  br label %928

790:                                              ; preds = %764
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %29, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #9
  br label %928

794:                                              ; preds = %767
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %29, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %30, align 4
  br label %927

798:                                              ; preds = %771
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %29, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %30, align 4
  br label %821

802:                                              ; preds = %776
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %29, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %30, align 4
  br label %820

806:                                              ; preds = %777
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %29, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %30, align 4
  br label %819

810:                                              ; preds = %778
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %29, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %30, align 4
  br label %818

814:                                              ; preds = %779
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %29, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %30, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %107) #9
  br label %818

818:                                              ; preds = %814, %810
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #9
  br label %819

819:                                              ; preds = %818, %806
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  br label %820

820:                                              ; preds = %819, %802
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %111) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #9
  br label %821

821:                                              ; preds = %820, %798
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %107) #9
  br label %926

822:                                              ; preds = %781, %768
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #9
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %112)
          to label %823 unwind label %851

823:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 20, ptr %113) #9
  %824 = load i32, ptr %15, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %825 unwind label %855

825:                                              ; preds = %823
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %826 unwind label %859

826:                                              ; preds = %825
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %827 unwind label %863

827:                                              ; preds = %826
  %828 = load ptr, ptr %26, align 8, !tbaa !9
  %829 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %828, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA11_cEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %117, ptr noundef nonnull align 8 dereferenceable(264) %829, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(11) @.str.76)
          to label %830 unwind label %867

830:                                              ; preds = %827
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %831 unwind label %871

831:                                              ; preds = %830
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %119, ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %832 unwind label %875

832:                                              ; preds = %831
  %833 = load ptr, ptr %23, align 8, !tbaa !9
  %834 = load ptr, ptr %24, align 8, !tbaa !9
  %835 = load i32, ptr %25, align 4, !tbaa !11
  %836 = load ptr, ptr %26, align 8, !tbaa !9
  invoke void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %113, i32 noundef %824, ptr noundef %114, ptr noundef %115, ptr noundef %116, ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef %117, ptr noundef %118, ptr noundef %119, ptr noundef nonnull align 8 dereferenceable(16) %833, ptr noundef nonnull align 8 dereferenceable(16) %834, i32 noundef %835, ptr noundef nonnull align 8 dereferenceable(376) %836)
          to label %837 unwind label %879

837:                                              ; preds = %832
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #9
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #9
  %838 = load i32, ptr %15, align 4, !tbaa !5
  %839 = icmp eq i32 %838, 0
  br i1 %839, label %840, label %901

840:                                              ; preds = %837
  %841 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %842 unwind label %888

842:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #9
  %843 = load ptr, ptr %26, align 8, !tbaa !9
  %844 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %843, i32 0, i32 0
  %845 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %0)
          to label %846 unwind label %892

846:                                              ; preds = %842
  %847 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %113)
          to label %848 unwind label %892

848:                                              ; preds = %846
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A3_cS8_SA_EEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %120, ptr noundef nonnull align 8 dereferenceable(264) %844, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 8 dereferenceable(16) %845, ptr noundef nonnull align 1 dereferenceable(16) @.str.77, ptr noundef nonnull align 8 dereferenceable(16) %104, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(16) %847, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %849 unwind label %892

849:                                              ; preds = %848
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %841, ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %850 unwind label %896

850:                                              ; preds = %849
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #9
  br label %901

851:                                              ; preds = %822
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %29, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %30, align 4
  br label %923

855:                                              ; preds = %823
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %29, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %30, align 4
  br label %922

859:                                              ; preds = %825
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %29, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %30, align 4
  br label %887

863:                                              ; preds = %826
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %29, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %30, align 4
  br label %886

867:                                              ; preds = %827
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %29, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %30, align 4
  br label %885

871:                                              ; preds = %830
  %872 = landingpad { ptr, i32 }
          cleanup
  %873 = extractvalue { ptr, i32 } %872, 0
  store ptr %873, ptr %29, align 8
  %874 = extractvalue { ptr, i32 } %872, 1
  store i32 %874, ptr %30, align 4
  br label %884

875:                                              ; preds = %831
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %29, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %30, align 4
  br label %883

879:                                              ; preds = %832
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %29, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #9
  br label %883

883:                                              ; preds = %879, %875
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #9
  br label %884

884:                                              ; preds = %883, %871
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #9
  br label %885

885:                                              ; preds = %884, %867
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #9
  br label %886

886:                                              ; preds = %885, %863
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #9
  br label %887

887:                                              ; preds = %886, %859
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #9
  br label %922

888:                                              ; preds = %901, %840
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %29, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %30, align 4
  br label %921

892:                                              ; preds = %848, %846, %842
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %29, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %30, align 4
  br label %900

896:                                              ; preds = %849
  %897 = landingpad { ptr, i32 }
          cleanup
  %898 = extractvalue { ptr, i32 } %897, 0
  store ptr %898, ptr %29, align 8
  %899 = extractvalue { ptr, i32 } %897, 1
  store i32 %899, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #9
  br label %900

900:                                              ; preds = %896, %892
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #9
  br label %921

901:                                              ; preds = %850, %837
  %902 = load ptr, ptr %19, align 8, !tbaa !9
  %903 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %902)
          to label %904 unwind label %888

904:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #9
  %905 = load ptr, ptr %26, align 8, !tbaa !9
  %906 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %905, i32 0, i32 0
  %907 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %908 unwind label %912

908:                                              ; preds = %904
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cS2_NS_6rc_ptrIN4lang2cc4Node2_TEEEA14_cNS_3VecIS8_EEA2_cEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %121, ptr noundef nonnull align 8 dereferenceable(264) %906, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(5) @.str.79, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(14) @.str.80, ptr noundef nonnull align 8 dereferenceable(64) %907, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %909 unwind label %912

909:                                              ; preds = %908
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %903, ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %910 unwind label %916

910:                                              ; preds = %909
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #9
  store i1 true, ptr %106, align 1
  store i32 1, ptr %50, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %113) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %113) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #9
  %911 = load i1, ptr %106, align 1
  br i1 %911, label %925, label %924

912:                                              ; preds = %908, %904
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %29, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %30, align 4
  br label %920

916:                                              ; preds = %909
  %917 = landingpad { ptr, i32 }
          cleanup
  %918 = extractvalue { ptr, i32 } %917, 0
  store ptr %918, ptr %29, align 8
  %919 = extractvalue { ptr, i32 } %917, 1
  store i32 %919, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #9
  br label %920

920:                                              ; preds = %916, %912
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #9
  br label %921

921:                                              ; preds = %920, %900, %888
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %113) #9
  br label %922

922:                                              ; preds = %921, %887, %855
  call void @llvm.lifetime.end.p0(i64 20, ptr %113) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #9
  br label %923

923:                                              ; preds = %922, %851
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #9
  br label %926

924:                                              ; preds = %910
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %925

925:                                              ; preds = %924, %910
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #9
  br label %955

926:                                              ; preds = %923, %821
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %927

927:                                              ; preds = %926, %794
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #9
  br label %928

928:                                              ; preds = %927, %790, %786
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #9
  br label %929

929:                                              ; preds = %928, %782
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #9
  br label %956

930:                                              ; preds = %695
  %931 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
          to label %932 unwind label %473

932:                                              ; preds = %930
  %933 = load i64, ptr %931, align 8, !tbaa !36
  %934 = icmp sle i64 -1, %933
  br i1 %934, label %935, label %953

935:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %936 unwind label %939

936:                                              ; preds = %935
  invoke void @_ZN6langcc16name_sep_to_joinERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKS7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(32) %123)
          to label %937 unwind label %943

937:                                              ; preds = %936
  invoke void @_ZN6langcc9log_innerIJA59_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(59) @.str.81, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %938 unwind label %947

938:                                              ; preds = %937
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #9
  br label %953

939:                                              ; preds = %935
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %29, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %30, align 4
  br label %952

943:                                              ; preds = %936
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %29, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %30, align 4
  br label %951

947:                                              ; preds = %937
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %29, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %30, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #9
  br label %951

951:                                              ; preds = %947, %943
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #9
  br label %952

952:                                              ; preds = %951, %939
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #9
  br label %956

953:                                              ; preds = %938, %932
  invoke void @_ZN6langcc2AXEv() #10
          to label %954 unwind label %473

954:                                              ; preds = %953
  unreachable

955:                                              ; preds = %925, %670
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #9
  br label %977

956:                                              ; preds = %952, %929, %752, %674, %473, %472
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  br label %957

957:                                              ; preds = %956, %431
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  br label %958

958:                                              ; preds = %957, %364
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #9
  br label %978

959:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %126)
          to label %960 unwind label %963

960:                                              ; preds = %959
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %961 unwind label %967

961:                                              ; preds = %960
  invoke void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef %127) #10
          to label %962 unwind label %971

962:                                              ; preds = %961
  unreachable

963:                                              ; preds = %959
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %29, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %30, align 4
  br label %976

967:                                              ; preds = %960
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %29, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %30, align 4
  br label %975

971:                                              ; preds = %961
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %29, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %30, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #9
  br label %975

975:                                              ; preds = %971, %967
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  br label %976

976:                                              ; preds = %975, %963
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %126) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #9
  br label %978

977:                                              ; preds = %955, %340
  ret void

978:                                              ; preds = %976, %958, %344
  %979 = load ptr, ptr %29, align 8
  %980 = load i32, ptr %30, align 4
  %981 = insertvalue { ptr, i32 } poison, ptr %979, 0
  %982 = insertvalue { ptr, i32 } %981, i32 %980, 1
  resume { ptr, i32 } %982
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(376)) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376), ptr noundef, ptr noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSF_ISD_EEEET_SD_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEES8_SE_A3_cEEESE_RNS9_INS_3VecISE_EEEEDpRKT_(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(16), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA44_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(44)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA54_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(54)) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA29_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA5_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(29), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(5)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(20)) #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA2_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEERNS5_INS_3VecISA_EEEENS5_INSB_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SK_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(2)) #7 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A2_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) #7 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(16)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA13_cS8_A3_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cA6_cNS_6rc_ptrIN4lang2cc4Node2_TEEES3_S9_S2_S9_A13_cS9_S3_NS_3VecIS9_EEA2_cEEES9_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(2)) #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA57_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(57)) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA14_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA4_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(4)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA11_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(11)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A3_cS8_SA_EEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cS2_NS_6rc_ptrIN4lang2cc4Node2_TEEEA14_cNS_3VecIS8_EEA2_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(2)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA59_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(59), ptr noundef nonnull align 8 dereferenceable(32)) #0

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { 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 #4 = { 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 #5 = { 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 #6 = { 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { "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 = !{!"_ZTSN6langcc7XformTyE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN6langcc10HeaderModeE", !7, i64 0}
!13 = !{!14, !16, i64 16}
!14 = !{!"_ZTSSt4pairIN6langcc6rc_ptrINS0_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbE", !15, i64 0, !16, i64 16}
!15 = !{!"_ZTSN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEE", !10, i64 0, !10, i64 8}
!16 = !{!"bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!16, !16, i64 0}
!20 = !{!21, !16, i64 140}
!21 = !{!"_ZTSN4lang4data4Node4Expr2Id2_TE", !22, i64 0, !16, i64 140, !35, i64 144}
!22 = !{!"_ZTSN4lang4data4Node4Expr2_TE", !23, i64 0, !34, i64 136}
!23 = !{!"_ZTSN4lang4data4Node2_TE", !24, i64 8, !27, i64 48, !28, i64 64, !29, i64 72, !30, i64 80, !16, i64 88, !29, i64 96, !32, i64 104, !33, i64 120}
!24 = !{!"_ZTSN6langcc8hash_objE", !25, i64 0}
!25 = !{!"_ZTSN6langcc6Option2_TINS_7HashValEEE", !26, i64 0, !7, i64 4}
!26 = !{!"_ZTSN6langcc6Option2_WE", !7, i64 0}
!27 = !{!"_ZTSN6langcc24enable_rc_from_this_polyE", !10, i64 0, !10, i64 8}
!28 = !{!"_ZTSN4lang4data4Node2_WE", !7, i64 0}
!29 = !{!"long", !7, i64 0}
!30 = !{!"_ZTSN6langcc11TokenBoundsE", !31, i64 0, !31, i64 4}
!31 = !{!"int", !7, i64 0}
!32 = !{!"_ZTSN6langcc14ParserAttrMaskE", !7, i64 0}
!33 = !{!"_ZTSN6langcc15ParserLookaheadE", !7, i64 0}
!34 = !{!"_ZTSN4lang4data4Node4Expr2_WE", !7, i64 0}
!35 = !{!"_ZTSN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEE", !10, i64 0, !10, i64 8}
!36 = !{!29, !29, i64 0}
!37 = !{!38, !10, i64 0}
!38 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !10, i64 0, !29, i64 8}
!39 = !{!38, !29, i64 8}


; 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 }
%"struct.langcc::Option::_T.69" = type { i32, [24 x i8] }
%"struct.langcc::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::HashVal" = type { [32 x i8] }
%"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 }
%"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.117" = type { i32, [16 x i8] }
%"struct.langcc::rc_ptr.1" = type { ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.73" = type { i8 }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"struct.langcc::rc_ptr.12" = type { ptr, ptr }
%"struct.langcc::rc_ptr.118" = type { ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #4 align 2

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

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

; Function Attrs: inlinehint mustprogress noreturn uwtable
declare dso_local void @_ZN6langcc2AXEv() local_unnamed_addr #6

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::HashVal") align 1, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 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 #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.langcc::Option::_T.117") align 4 %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %11, ptr noundef nonnull align 8 dereferenceable(376) %12) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %14 = alloca %"struct.langcc::rc_ptr.1", 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.1", align 8
  %18 = alloca %"struct.langcc::Option::_T.69", align 4
  %19 = alloca %"struct.langcc::rc_ptr.0", align 8
  %20 = alloca %"struct.langcc::rc_ptr.0", align 8
  %21 = alloca %"struct.langcc::rc_ptr.0", align 8
  %22 = alloca %"struct.langcc::rc_ptr.0", align 8
  %23 = alloca %"struct.langcc::rc_ptr.76", align 8
  %24 = alloca %"struct.langcc::rc_ptr.0", align 8
  %25 = alloca %"struct.langcc::rc_ptr.76", align 8
  %26 = alloca %"struct.langcc::Option::_T.72", align 4
  %27 = alloca %"struct.langcc::Option::_T.77", align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"struct.langcc::rc_ptr.0", align 8
  %32 = alloca %"struct.langcc::rc_ptr.76", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"struct.langcc::rc_ptr.0", align 8
  %35 = alloca %"struct.langcc::rc_ptr.81", align 8
  %36 = alloca %"struct.langcc::rc_ptr.0", align 8
  %37 = alloca %"struct.langcc::rc_ptr.82", align 8
  %38 = alloca %"struct.langcc::rc_ptr.0", align 8
  %39 = alloca %"struct.langcc::rc_ptr.1", align 8
  %40 = alloca %"struct.langcc::rc_ptr.81", align 8
  %41 = alloca %"struct.langcc::HashVal", align 1
  %42 = alloca %"struct.langcc::HashVal", align 1
  %43 = alloca %"struct.langcc::rc_ptr.0", align 8
  %44 = alloca %"class.std::vector", align 8
  %45 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca %"class.std::allocator.73", align 1
  %48 = alloca %"struct.langcc::rc_ptr.46", align 8
  %49 = alloca %"struct.langcc::rc_ptr.76", align 8
  %50 = alloca %"struct.langcc::rc_ptr.46", align 8
  %51 = alloca %"struct.langcc::Option::_T.117", align 4
  %52 = alloca %"struct.langcc::rc_ptr.76", align 8
  %53 = alloca %"struct.langcc::rc_ptr.0", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator", align 1
  %56 = alloca %"struct.langcc::rc_ptr.76", align 8
  %57 = alloca %"struct.langcc::rc_ptr.0", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator", align 1
  %60 = alloca %"struct.langcc::rc_ptr.12", align 8
  %61 = alloca %"struct.langcc::Option::_T.117", align 4
  %62 = alloca %"struct.langcc::rc_ptr.0", align 8
  %63 = alloca %"struct.langcc::rc_ptr.0", align 8
  %64 = alloca %"struct.langcc::rc_ptr.118", align 8
  %65 = alloca %"struct.langcc::rc_ptr.76", align 8
  %66 = alloca %"struct.langcc::rc_ptr.76", align 8
  %67 = alloca %"struct.langcc::rc_ptr.46", align 8
  %68 = alloca %"struct.langcc::rc_ptr.76", align 8
  %69 = alloca %"struct.langcc::rc_ptr.76", align 8
  %70 = alloca %"struct.langcc::HashVal", align 1
  %71 = alloca %"struct.langcc::HashVal", align 1
  %72 = alloca %"struct.langcc::rc_ptr.0", align 8
  %73 = alloca %"class.std::vector", align 8
  %74 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %75 = alloca %"class.std::allocator", align 1
  %76 = alloca %"class.std::allocator.73", align 1
  %77 = alloca %"struct.langcc::rc_ptr.46", align 8
  %78 = alloca %"struct.langcc::rc_ptr.76", align 8
  %79 = alloca %"struct.langcc::rc_ptr.46", align 8
  %80 = alloca %"struct.langcc::Option::_T.117", align 4
  %81 = alloca %"struct.langcc::rc_ptr.76", align 8
  %82 = alloca %"struct.langcc::rc_ptr.0", align 8
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"class.std::allocator", align 1
  %85 = alloca %"struct.langcc::rc_ptr.12", align 8
  %86 = alloca %"struct.langcc::Option::_T.117", align 4
  %87 = alloca %"struct.langcc::rc_ptr.0", align 8
  %88 = alloca %"struct.langcc::rc_ptr.0", align 8
  %89 = alloca %"struct.langcc::rc_ptr.118", align 8
  %90 = alloca %"struct.langcc::rc_ptr.76", align 8
  %91 = alloca %"struct.langcc::rc_ptr.76", align 8
  %92 = alloca %"struct.langcc::rc_ptr.46", align 8
  %93 = alloca %"struct.langcc::rc_ptr.76", align 8
  %94 = alloca %"struct.langcc::rc_ptr.76", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca %"class.std::__cxx11::basic_string", align 8
  %99 = alloca %"class.std::allocator", align 1
  %100 = alloca %"struct.langcc::rc_ptr.46", align 8
  %101 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %102 = tail call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %101)
  br i1 %102, label %103, label %221

103:                                              ; preds = %13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %104 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call 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) %104)
  %105 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %106 = getelementptr inbounds i8, ptr %105, i64 144
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %106)
          to label %107 unwind label %140

107:                                              ; preds = %103
  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
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %108 unwind label %142

108:                                              ; preds = %107
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %16, ptr noundef nonnull %17)
          to label %109 unwind label %144

109:                                              ; preds = %108
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %18) #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 %18, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %110 unwind label %146

110:                                              ; preds = %109
  %111 = call noundef zeroext i1 @_ZNK6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(28) %18)
  br i1 %111, label %112, label %204

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %18)
          to label %114 unwind label %150

114:                                              ; preds = %112
  %115 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(28) %18)
          to label %116 unwind label %152

116:                                              ; preds = %114
  %117 = getelementptr inbounds i8, ptr %115, i64 16
  %118 = load i8, ptr %117, align 8, !tbaa !5, !range !12, !noundef !13
  %119 = trunc nuw i8 %118 to i1
  br i1 %119, label %120, label %203

120:                                              ; preds = %116
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %121 unwind label %152

121:                                              ; preds = %120
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %122 unwind label %154

122:                                              ; preds = %121
  invoke void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef %1, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %11, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %123 unwind label %156

123:                                              ; preds = %122
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %124 unwind label %159

124:                                              ; preds = %123
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %125 unwind label %161

125:                                              ; preds = %124
  %126 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %12, ptr noundef nonnull %21, ptr noundef nonnull %22)
          to label %127 unwind label %163

127:                                              ; preds = %125
  %128 = xor i1 %126, true
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  %129 = icmp eq i32 %1, 0
  br i1 %129, label %130, label %191

130:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %131 unwind label %166

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

132:                                              ; preds = %131
  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 %27)
          to label %133 unwind label %170

133:                                              ; preds = %132
  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 nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %25, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef nonnull align 8 dereferenceable(376) %12, ptr noundef nonnull %26, ptr noundef nonnull %27)
          to label %134 unwind label %172

134:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.51, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %135 unwind label %174

135:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %136 unwind label %176

136:                                              ; preds = %135
  invoke void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, i32 noundef 0, ptr noundef nonnull %31, i1 noundef zeroext %128)
          to label %137 unwind label %178

137:                                              ; preds = %136
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSF_ISD_EEEET_SD_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %23, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %28, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %138 unwind label %180

138:                                              ; preds = %137
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %27) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %26) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %139 unwind label %188

139:                                              ; preds = %138
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  br label %216

140:                                              ; preds = %103
  %141 = landingpad { ptr, i32 }
          cleanup
  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 label %220

142:                                              ; preds = %107
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %219

144:                                              ; preds = %108
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  br label %219

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

148:                                              ; preds = %215, %211
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %217

150:                                              ; preds = %112
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %217

152:                                              ; preds = %203, %120, %114
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %217

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

156:                                              ; preds = %122
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %158

158:                                              ; preds = %156, %154
  %.pn215 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  br label %217

159:                                              ; preds = %194, %123
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %217

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

163:                                              ; preds = %125
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %165

165:                                              ; preds = %163, %161
  %.pn217 = phi { ptr, i32 } [ %164, %163 ], [ %162, %161 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #9
  br label %217

166:                                              ; preds = %130
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %190

168:                                              ; preds = %131
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %187

170:                                              ; preds = %132
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %186

172:                                              ; preds = %133
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %185

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

176:                                              ; preds = %135
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %183

178:                                              ; preds = %136
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

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

182:                                              ; preds = %180, %178
  %.pn222 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  br label %183

183:                                              ; preds = %182, %176
  %.pn222.pn = phi { ptr, i32 } [ %.pn222, %182 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %184

184:                                              ; preds = %183, %174
  %.pn222.pn.pn = phi { ptr, i32 } [ %.pn222.pn, %183 ], [ %175, %174 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  br label %185

185:                                              ; preds = %184, %172
  %.pn222.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn, %184 ], [ %173, %172 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %27) #9
  br label %186

186:                                              ; preds = %185, %170
  %.pn222.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn, %185 ], [ %171, %170 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %26) #9
  br label %187

187:                                              ; preds = %186, %168
  %.pn222.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn.pn, %186 ], [ %169, %168 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  br label %190

188:                                              ; preds = %138
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #9
  br label %190

190:                                              ; preds = %188, %187, %166
  %.pn229 = phi { ptr, i32 } [ %189, %188 ], [ %.pn222.pn.pn.pn.pn.pn, %187 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #9
  br label %217

191:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %192 unwind label %195

192:                                              ; preds = %191
  invoke void @_ZN6langcc24xform_ty_gen_cpp_fn_nameENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, i32 noundef %1, ptr noundef nonnull %34, i1 noundef zeroext %128)
          to label %193 unwind label %197

193:                                              ; preds = %192
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEES8_SE_A3_cEEESE_RNS9_INS_3VecISE_EEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %32, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %194 unwind label %199

194:                                              ; preds = %193
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %216 unwind label %159

195:                                              ; preds = %191
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %202

197:                                              ; preds = %192
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %201

199:                                              ; preds = %193
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %201

201:                                              ; preds = %199, %197
  %.pn219 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #9
  br label %202

202:                                              ; preds = %201, %195
  %.pn219.pn = phi { ptr, i32 } [ %.pn219, %201 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  br label %217

203:                                              ; preds = %116
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %216 unwind label %152

204:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #9
  %205 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.81") align 8 %35, ptr noundef nonnull align 8 dereferenceable(140) %205)
          to label %206 unwind label %213

206:                                              ; preds = %204
  %207 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %35)
  %208 = getelementptr inbounds i8, ptr %207, i64 140
  %209 = load i8, ptr %208, align 4, !tbaa !14, !range !12, !noundef !13
  %210 = trunc nuw i8 %209 to i1
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  br i1 %210, label %215, label %211

211:                                              ; preds = %206
  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 %36, ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %212 unwind label %148

212:                                              ; preds = %211
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  br label %215

213:                                              ; preds = %204
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #9
  br label %217

215:                                              ; preds = %212, %206
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %216 unwind label %148

216:                                              ; preds = %215, %194, %139, %203
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %18) #9
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %18) #9
  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
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  br label %551

217:                                              ; preds = %150, %159, %165, %190, %202, %158, %152, %213, %148
  %.pn229.pn.pn.pn.pn = phi { ptr, i32 } [ %149, %148 ], [ %214, %213 ], [ %151, %150 ], [ %.pn215, %158 ], [ %153, %152 ], [ %.pn229, %190 ], [ %160, %159 ], [ %.pn219.pn, %202 ], [ %.pn217, %165 ]
  call void @_ZN6langcc6Option2_TISt4pairINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEbEED2Ev(ptr noundef nonnull align 4 dereferenceable(28) %18) #9
  br label %218

218:                                              ; preds = %217, %146
  %.pn229.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn229.pn.pn.pn.pn, %217 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %18) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  br label %219

219:                                              ; preds = %218, %144, %142
  %.pn229.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn229.pn.pn.pn.pn.pn, %218 ], [ %145, %144 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #9
  br label %220

220:                                              ; preds = %219, %140
  %.pn229.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn229.pn.pn.pn.pn.pn.pn, %219 ], [ %141, %140 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  br label %552

221:                                              ; preds = %13
  %222 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %223 = tail call noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T6is_AppEv(ptr noundef nonnull align 8 dereferenceable(140) %222)
  br i1 %223, label %224, label %539

224:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #9
  %225 = tail call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @_ZN4lang4data4Node4Expr2_T6as_AppEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.82") align 8 %37, ptr noundef nonnull align 8 dereferenceable(140) %225)
  %226 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %227 = getelementptr inbounds i8, ptr %226, i64 144
  %228 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
  %229 = invoke noundef zeroext i1 @_ZN4lang4data4Node4Expr2_T5is_IdEv(ptr noundef nonnull align 8 dereferenceable(140) %228)
          to label %230 unwind label %236

230:                                              ; preds = %224
  br i1 %229, label %240, label %231

231:                                              ; preds = %230
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
  %233 = load i64, ptr %232, align 8, !tbaa !30
  %234 = icmp sgt i64 %233, -2
  br i1 %234, label %235, label %238

235:                                              ; preds = %231
  invoke void @_ZN6langcc9log_innerIJA44_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(44) @.str.55)
          to label %238 unwind label %236

236:                                              ; preds = %238, %235, %224
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %538

238:                                              ; preds = %235, %231
  invoke void @_ZN6langcc2AXEv() #10
          to label %239 unwind label %236

239:                                              ; preds = %238
  unreachable

240:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #9
  %241 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %242 = getelementptr inbounds i8, ptr %241, i64 144
  %243 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %242)
  invoke void @_ZN4lang4data4Node4Expr2_T5as_IdEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.81") align 8 %40, ptr noundef nonnull align 8 dereferenceable(140) %243)
          to label %244 unwind label %265

244:                                              ; preds = %240
  %245 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
  %246 = getelementptr inbounds i8, ptr %245, i64 144
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %246)
          to label %247 unwind label %267

247:                                              ; preds = %244
  invoke void @_ZN6langcc15data_id_to_nameB5cxx11ENS_6rc_ptrIN4lang4data4Node2Id2_TEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %38, ptr noundef nonnull %39)
          to label %248 unwind label %269

248:                                              ; preds = %247
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #9
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::HashVal") align 1 %41, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %249 unwind label %273

249:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %250 unwind label %275

250:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr nonnull %45, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %251 unwind label %277

251:                                              ; preds = %250
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %43, ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %252 unwind label %279

252:                                              ; preds = %251
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::HashVal") align 1 %42, ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %253 unwind label %281

253:                                              ; preds = %252
  %254 = call noundef zeroext i1 @_ZNK6langcc7HashValeqERKS0_(ptr noundef nonnull align 1 dereferenceable(32) %41, ptr noundef nonnull align 1 dereferenceable(32) %42)
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  br i1 %254, label %255, label %394

255:                                              ; preds = %253
  %256 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %257 = getelementptr inbounds i8, ptr %256, i64 160
  %258 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %257)
  %259 = call noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %258)
  %.not186 = icmp eq i64 %259, 1
  br i1 %.not186, label %287, label %260

260:                                              ; preds = %255
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
  %262 = load i64, ptr %261, align 8, !tbaa !30
  %263 = icmp sgt i64 %262, -2
  br i1 %263, label %264, label %.invoke

264:                                              ; preds = %260
  invoke void @_ZN6langcc9log_innerIJA54_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(54) @.str.56)
          to label %.invoke unwind label %285

265:                                              ; preds = %240
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %272

267:                                              ; preds = %244
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %271

269:                                              ; preds = %247
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %271

271:                                              ; preds = %269, %267
  %.pn149 = phi { ptr, i32 } [ %270, %269 ], [ %268, %267 ]
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2Id2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #9
  br label %272

272:                                              ; preds = %271, %265
  %.pn149.pn = phi { ptr, i32 } [ %.pn149, %271 ], [ %266, %265 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #9
  br label %537

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

275:                                              ; preds = %249
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit239

277:                                              ; preds = %250
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit239.loopexit

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

281:                                              ; preds = %252
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %283

283:                                              ; preds = %281, %279
  %.pn152 = phi { ptr, i32 } [ %282, %281 ], [ %280, %279 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  br label %.loopexit239.loopexit

.loopexit239.loopexit:                            ; preds = %283, %277
  %.pn152.pn = phi { ptr, i32 } [ %.pn152, %283 ], [ %278, %277 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %.loopexit239

.loopexit239:                                     ; preds = %.loopexit239.loopexit, %275
  %.pn152.pn.pn = phi { ptr, i32 } [ %276, %275 ], [ %.pn152.pn, %.loopexit239.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  br label %284

284:                                              ; preds = %.loopexit239, %273
  %.pn152.pn.pn.pn = phi { ptr, i32 } [ %.pn152.pn.pn, %.loopexit239 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  br label %536

285:                                              ; preds = %.invoke, %410, %264
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %536

287:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #9
  %288 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %289 = getelementptr inbounds i8, ptr %288, i64 160
  %290 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %289)
  %291 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64) %290, i64 noundef 0)
          to label %292 unwind label %305

292:                                              ; preds = %287
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %291)
          to label %293 unwind label %305

293:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %294 unwind label %307

294:                                              ; preds = %293
  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 %49, ptr noundef nonnull %50, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %295 unwind label %309

295:                                              ; preds = %294
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %296 unwind label %311

296:                                              ; preds = %295
  %297 = icmp eq i32 %1, 0
  br i1 %297, label %298, label %327

298:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %299 unwind label %313

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %300 unwind label %315

300:                                              ; preds = %299
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA29_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA5_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %52, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %53, ptr noundef nonnull @.str.57, ptr noundef nonnull %54, ptr noundef nonnull align 1 dereferenceable(29) @.str.59, ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 1 dereferenceable(5) @.str.60)
          to label %301 unwind label %317

301:                                              ; preds = %300
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %51, ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %302 unwind label %319

302:                                              ; preds = %301
  %303 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %0, ptr noundef nonnull align 4 dereferenceable(20) %51)
          to label %304 unwind label %321

304:                                              ; preds = %302
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %51) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %51) #9
  br label %327

305:                                              ; preds = %292, %287
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %393

307:                                              ; preds = %293
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %392

309:                                              ; preds = %294
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #9
  br label %392

311:                                              ; preds = %295
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %391

313:                                              ; preds = %298
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %326

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

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %324

319:                                              ; preds = %301
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %323

321:                                              ; preds = %302
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %51) #9
  br label %323

323:                                              ; preds = %321, %319
  %.pn187 = phi { ptr, i32 } [ %322, %321 ], [ %320, %319 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #9
  br label %324

324:                                              ; preds = %323, %317
  %.pn187.pn = phi { ptr, i32 } [ %.pn187, %323 ], [ %318, %317 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %325

325:                                              ; preds = %324, %315
  %.pn187.pn.pn = phi { ptr, i32 } [ %.pn187.pn, %324 ], [ %316, %315 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #9
  br label %326

326:                                              ; preds = %325, %313
  %.pn187.pn.pn.pn = phi { ptr, i32 } [ %.pn187.pn.pn, %325 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %51) #9
  br label %390

327:                                              ; preds = %304, %296
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %328 unwind label %346

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull @.str.62, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %329 unwind label %348

329:                                              ; preds = %328
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA2_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEERNS5_INS_3VecISA_EEEENS5_INSB_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SK_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %56, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %57, ptr noundef nonnull @.str.61, ptr noundef nonnull %58, ptr noundef nonnull align 1 dereferenceable(2) @.str.63)
          to label %330 unwind label %350

330:                                              ; preds = %329
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #9
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %60)
          to label %331 unwind label %353

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %61) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %332 unwind label %355

332:                                              ; preds = %331
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %333 unwind label %357

333:                                              ; preds = %332
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %334 unwind label %359

334:                                              ; preds = %333
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A2_cEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %65, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(16) @.str.64, ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %335 unwind label %361

335:                                              ; preds = %334
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %7)
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %336 unwind label %363

336:                                              ; preds = %335
  invoke void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %61, i32 noundef %1, ptr noundef nonnull %62, ptr noundef nonnull %63, ptr noundef nonnull %64, ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %11, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %337 unwind label %365

337:                                              ; preds = %336
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #9
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br i1 %297, label %338, label %376

338:                                              ; preds = %337
  %339 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #9
  %340 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %0)
          to label %341 unwind label %371

341:                                              ; preds = %338
  %342 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %61)
          to label %343 unwind label %371

343:                                              ; preds = %341
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA13_cS8_A3_cEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %68, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 8 dereferenceable(16) %340, ptr noundef nonnull align 1 dereferenceable(13) @.str.66, ptr noundef nonnull align 8 dereferenceable(16) %342, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %344 unwind label %371

344:                                              ; preds = %343
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %339, ptr noundef nonnull align 8 dereferenceable(16) %68)
          to label %345 unwind label %373

345:                                              ; preds = %344
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #9
  br label %376

346:                                              ; preds = %327
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %389

348:                                              ; preds = %328
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %352

350:                                              ; preds = %329
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  br label %352

352:                                              ; preds = %350, %348
  %.pn192 = phi { ptr, i32 } [ %351, %350 ], [ %349, %348 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  br label %389

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

355:                                              ; preds = %331
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %387

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

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

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

363:                                              ; preds = %335
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %336
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #9
  br label %367

367:                                              ; preds = %365, %363
  %.pn194 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #9
  br label %368

368:                                              ; preds = %367, %361
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %367 ], [ %362, %361 ]
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #9
  br label %369

369:                                              ; preds = %368, %359
  %.pn194.pn.pn = phi { ptr, i32 } [ %.pn194.pn, %368 ], [ %360, %359 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  br label %370

370:                                              ; preds = %369, %357
  %.pn194.pn.pn.pn = phi { ptr, i32 } [ %.pn194.pn.pn, %369 ], [ %358, %357 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #9
  br label %387

371:                                              ; preds = %343, %341, %338
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %375

373:                                              ; preds = %344
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #9
  br label %375

375:                                              ; preds = %373, %371
  %.pn199 = phi { ptr, i32 } [ %374, %373 ], [ %372, %371 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #9
  br label %386

376:                                              ; preds = %345, %337
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #9
  %377 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %60)
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA6_cNS_6rc_ptrIN4lang2cc4Node2_TEEES3_S9_S2_S9_A13_cS9_S3_NS_3VecIS9_EEA2_cEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %69, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(6) @.str.67, ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 1 dereferenceable(6) @.str.68, ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 1 dereferenceable(5) @.str.69, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(13) @.str.70, ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 1 dereferenceable(6) @.str.71, ptr noundef nonnull align 8 dereferenceable(64) %377, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %378 unwind label %381

378:                                              ; preds = %376
  %379 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %379, ptr noundef nonnull align 8 dereferenceable(16) %69)
          to label %380 unwind label %383

380:                                              ; preds = %378
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %61) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %61) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #9
  br label %535

381:                                              ; preds = %376
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %385

383:                                              ; preds = %378
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  br label %385

385:                                              ; preds = %383, %381
  %.pn201 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  br label %386

386:                                              ; preds = %385, %375
  %.pn201.pn = phi { ptr, i32 } [ %.pn201, %385 ], [ %.pn199, %375 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %61) #9
  br label %387

387:                                              ; preds = %386, %370, %355
  %.pn201.pn.pn = phi { ptr, i32 } [ %.pn201.pn, %386 ], [ %.pn194.pn.pn.pn, %370 ], [ %356, %355 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %61) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  br label %388

388:                                              ; preds = %387, %353
  %.pn201.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn, %387 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #9
  br label %389

389:                                              ; preds = %388, %352, %346
  %.pn201.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn, %388 ], [ %.pn192, %352 ], [ %347, %346 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #9
  br label %390

390:                                              ; preds = %389, %326
  %.pn201.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn.pn, %389 ], [ %.pn187.pn.pn.pn, %326 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %391

391:                                              ; preds = %390, %311
  %.pn201.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn.pn.pn, %390 ], [ %312, %311 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #9
  br label %392

392:                                              ; preds = %391, %309, %307
  %.pn201.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn.pn.pn.pn, %391 ], [ %310, %309 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #9
  br label %393

393:                                              ; preds = %392, %305
  %.pn201.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn.pn.pn.pn.pn, %392 ], [ %306, %305 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #9
  br label %536

394:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #9
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::HashVal") align 1 %70, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %395 unwind label %411

395:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %73) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %396 unwind label %413

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr nonnull %74, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %397 unwind label %415

397:                                              ; preds = %396
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %72, ptr noundef nonnull align 8 dereferenceable(24) %73)
          to label %398 unwind label %417

398:                                              ; preds = %397
  invoke void @_ZN6langcc8val_hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS_7HashValERKNS_6rc_ptrINS_3VecIT_EEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::HashVal") align 1 %71, ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %399 unwind label %419

399:                                              ; preds = %398
  %400 = call noundef zeroext i1 @_ZNK6langcc7HashValeqERKS0_(ptr noundef nonnull align 1 dereferenceable(32) %70, ptr noundef nonnull align 1 dereferenceable(32) %71)
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  br i1 %400, label %401, label %519

401:                                              ; preds = %399
  %402 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %403 = getelementptr inbounds i8, ptr %402, i64 160
  %404 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %403)
  %405 = call noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %404)
  %.not = icmp eq i64 %405, 1
  br i1 %.not, label %423, label %406

406:                                              ; preds = %401
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
  %408 = load i64, ptr %407, align 8, !tbaa !30
  %409 = icmp sgt i64 %408, -2
  br i1 %409, label %410, label %.invoke

410:                                              ; preds = %406
  invoke void @_ZN6langcc9log_innerIJA57_cEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(57) @.str.73)
          to label %.invoke unwind label %285

411:                                              ; preds = %394
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %422

413:                                              ; preds = %395
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

415:                                              ; preds = %396
  %416 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.loopexit

417:                                              ; preds = %397
  %418 = landingpad { ptr, i32 }
          cleanup
  br label %421

419:                                              ; preds = %398
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #9
  br label %421

421:                                              ; preds = %419, %417
  %.pn157 = phi { ptr, i32 } [ %420, %419 ], [ %418, %417 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %421, %415
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %421 ], [ %416, %415 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %413
  %.pn157.pn.pn = phi { ptr, i32 } [ %414, %413 ], [ %.pn157.pn, %.loopexit.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  br label %422

422:                                              ; preds = %.loopexit, %411
  %.pn157.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn, %.loopexit ], [ %412, %411 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  br label %536

423:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #9
  %424 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %425 = getelementptr inbounds i8, ptr %424, i64 160
  %426 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang4data4Node4Expr2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %425)
  %427 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64) %426, i64 noundef 0)
          to label %428 unwind label %441

428:                                              ; preds = %423
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 8 dereferenceable(16) %427)
          to label %429 unwind label %441

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #9
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %430 unwind label %443

430:                                              ; preds = %429
  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 %78, ptr noundef nonnull %79, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %431 unwind label %445

431:                                              ; preds = %430
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  invoke void @_ZN6langcc4NoneINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %0)
          to label %432 unwind label %447

432:                                              ; preds = %431
  %433 = icmp eq i32 %1, 0
  br i1 %433, label %434, label %463

434:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %80) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %435 unwind label %449

435:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %84) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %436 unwind label %451

436:                                              ; preds = %435
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA14_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA4_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %81, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %82, ptr noundef nonnull @.str.57, ptr noundef nonnull %83, ptr noundef nonnull align 1 dereferenceable(14) @.str.74, ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 1 dereferenceable(4) @.str.75)
          to label %437 unwind label %453

437:                                              ; preds = %436
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %80, ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %438 unwind label %455

438:                                              ; preds = %437
  %439 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %0, ptr noundef nonnull align 4 dereferenceable(20) %80)
          to label %440 unwind label %457

440:                                              ; preds = %438
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %80) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %80) #9
  br label %463

441:                                              ; preds = %428, %423
  %442 = landingpad { ptr, i32 }
          cleanup
  br label %518

443:                                              ; preds = %429
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %517

445:                                              ; preds = %430
  %446 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  br label %517

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

449:                                              ; preds = %434
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %462

451:                                              ; preds = %435
  %452 = landingpad { ptr, i32 }
          cleanup
  br label %461

453:                                              ; preds = %436
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %460

455:                                              ; preds = %437
  %456 = landingpad { ptr, i32 }
          cleanup
  br label %459

457:                                              ; preds = %438
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %80) #9
  br label %459

459:                                              ; preds = %457, %455
  %.pn165 = phi { ptr, i32 } [ %458, %457 ], [ %456, %455 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #9
  br label %460

460:                                              ; preds = %459, %453
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %459 ], [ %454, %453 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %461

461:                                              ; preds = %460, %451
  %.pn165.pn.pn = phi { ptr, i32 } [ %.pn165.pn, %460 ], [ %452, %451 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %84) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #9
  br label %462

462:                                              ; preds = %461, %449
  %.pn165.pn.pn.pn = phi { ptr, i32 } [ %.pn165.pn.pn, %461 ], [ %450, %449 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %80) #9
  br label %515

463:                                              ; preds = %440, %432
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #9
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %85)
          to label %464 unwind label %479

464:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %86) #9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %465 unwind label %481

465:                                              ; preds = %464
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %466 unwind label %483

466:                                              ; preds = %465
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %467 unwind label %485

467:                                              ; preds = %466
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA11_cEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %90, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(11) @.str.76)
          to label %468 unwind label %487

468:                                              ; preds = %467
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(16) %7)
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %469 unwind label %489

469:                                              ; preds = %468
  invoke void @_ZN6langcc23lower_xform_field_entryENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_NS1_INS_3SetISA_EEEERNS1_INS2_INS1_IN4lang2cc4Node2_TEEEEEEESI_SI_NS1_INSE_4data4Node4Expr2_TEEERKSA_SS_NS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %86, i32 noundef %1, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89, ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull %90, ptr noundef nonnull %91, ptr noundef nonnull %92, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %11, ptr noundef nonnull align 8 dereferenceable(376) %12)
          to label %470 unwind label %491

470:                                              ; preds = %469
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  br i1 %433, label %471, label %502

471:                                              ; preds = %470
  %472 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #9
  %473 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %0)
          to label %474 unwind label %497

474:                                              ; preds = %471
  %475 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %86)
          to label %476 unwind label %497

476:                                              ; preds = %474
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A3_cS8_SA_EEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %93, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef nonnull align 1 dereferenceable(16) @.str.77, ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 1 dereferenceable(3) @.str.78, ptr noundef nonnull align 8 dereferenceable(16) %475, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %477 unwind label %497

477:                                              ; preds = %476
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %472, ptr noundef nonnull align 8 dereferenceable(16) %93)
          to label %478 unwind label %499

478:                                              ; preds = %477
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  br label %502

479:                                              ; preds = %463
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %514

481:                                              ; preds = %464
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %513

483:                                              ; preds = %465
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %496

485:                                              ; preds = %466
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %495

487:                                              ; preds = %467
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %494

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

491:                                              ; preds = %469
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #9
  br label %493

493:                                              ; preds = %491, %489
  %.pn170 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #9
  br label %494

494:                                              ; preds = %493, %487
  %.pn170.pn = phi { ptr, i32 } [ %.pn170, %493 ], [ %488, %487 ]
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #9
  br label %495

495:                                              ; preds = %494, %485
  %.pn170.pn.pn = phi { ptr, i32 } [ %.pn170.pn, %494 ], [ %486, %485 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #9
  br label %496

496:                                              ; preds = %495, %483
  %.pn170.pn.pn.pn = phi { ptr, i32 } [ %.pn170.pn.pn, %495 ], [ %484, %483 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  br label %513

497:                                              ; preds = %476, %474, %471
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %501

499:                                              ; preds = %477
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  br label %501

501:                                              ; preds = %499, %497
  %.pn175 = phi { ptr, i32 } [ %500, %499 ], [ %498, %497 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #9
  br label %512

502:                                              ; preds = %478, %470
  %503 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #9
  %504 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %85)
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cS2_NS_6rc_ptrIN4lang2cc4Node2_TEEEA14_cNS_3VecIS8_EEA2_cEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %94, ptr noundef nonnull align 8 dereferenceable(264) %12, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(5) @.str.79, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 1 dereferenceable(14) @.str.80, ptr noundef nonnull align 8 dereferenceable(64) %504, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %505 unwind label %507

505:                                              ; preds = %502
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %503, ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %506 unwind label %509

506:                                              ; preds = %505
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #9
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %86) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %86) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #9
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %535

507:                                              ; preds = %502
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %505
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #9
  br label %511

511:                                              ; preds = %509, %507
  %.pn177 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #9
  br label %512

512:                                              ; preds = %511, %501
  %.pn177.pn = phi { ptr, i32 } [ %.pn177, %511 ], [ %.pn175, %501 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %86) #9
  br label %513

513:                                              ; preds = %512, %496, %481
  %.pn177.pn.pn = phi { ptr, i32 } [ %.pn177.pn, %512 ], [ %.pn170.pn.pn.pn, %496 ], [ %482, %481 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %86) #9
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #9
  br label %514

514:                                              ; preds = %513, %479
  %.pn177.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn, %513 ], [ %480, %479 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #9
  br label %515

515:                                              ; preds = %514, %462
  %.pn177.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn.pn, %514 ], [ %.pn165.pn.pn.pn, %462 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %0) #9
  br label %516

516:                                              ; preds = %515, %447
  %.pn177.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn.pn.pn, %515 ], [ %448, %447 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #9
  br label %517

517:                                              ; preds = %516, %445, %443
  %.pn177.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn.pn.pn.pn, %516 ], [ %446, %445 ], [ %444, %443 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #9
  br label %518

518:                                              ; preds = %517, %441
  %.pn177.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn177.pn.pn.pn.pn.pn.pn, %517 ], [ %442, %441 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %536

519:                                              ; preds = %399
  %520 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6langcc13get_log_levelEv()
  %521 = load i64, ptr %520, align 8, !tbaa !30
  %522 = icmp sgt i64 %521, -2
  br i1 %522, label %523, label %.invoke

523:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %524 unwind label %527

524:                                              ; preds = %523
  invoke void @_ZN6langcc16name_sep_to_joinERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKS7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %525 unwind label %529

525:                                              ; preds = %524
  invoke void @_ZN6langcc9log_innerIJA59_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvlDpRKT_(i64 noundef -1, ptr noundef nonnull align 1 dereferenceable(59) @.str.81, ptr noundef nonnull align 8 dereferenceable(32) %95)
          to label %526 unwind label %531

526:                                              ; preds = %525
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  br label %.invoke

527:                                              ; preds = %523
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %534

529:                                              ; preds = %524
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %533

531:                                              ; preds = %525
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  br label %533

533:                                              ; preds = %531, %529
  %.pn162 = phi { ptr, i32 } [ %532, %531 ], [ %530, %529 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  br label %534

534:                                              ; preds = %533, %527
  %.pn162.pn = phi { ptr, i32 } [ %.pn162, %533 ], [ %528, %527 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #9
  br label %536

.invoke:                                          ; preds = %519, %526, %406, %410, %260, %264
  invoke void @_ZN6langcc2AXEv() #10
          to label %.cont unwind label %285

.cont:                                            ; preds = %.invoke
  unreachable

535:                                              ; preds = %506, %380
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #9
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  br label %551

536:                                              ; preds = %534, %518, %422, %393, %285, %284
  %.pn211 = phi { ptr, i32 } [ %286, %285 ], [ %.pn201.pn.pn.pn.pn.pn.pn.pn.pn, %393 ], [ %.pn177.pn.pn.pn.pn.pn.pn.pn, %518 ], [ %.pn162.pn, %534 ], [ %.pn157.pn.pn.pn, %422 ], [ %.pn152.pn.pn.pn, %284 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #9
  br label %537

537:                                              ; preds = %536, %272
  %.pn211.pn = phi { ptr, i32 } [ %.pn211, %536 ], [ %.pn149.pn, %272 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #9
  br label %538

538:                                              ; preds = %537, %236
  %.pn211.pn.pn = phi { ptr, i32 } [ %.pn211.pn, %537 ], [ %237, %236 ]
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr3App2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  br label %552

539:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %98) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %99) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %540 unwind label %543

540:                                              ; preds = %539
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %541 unwind label %545

541:                                              ; preds = %540
  invoke void @_ZN6langcc2AXIJNS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull %100) #10
          to label %542 unwind label %547

542:                                              ; preds = %541
  unreachable

543:                                              ; preds = %539
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %550

545:                                              ; preds = %540
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %549

547:                                              ; preds = %541
  %548 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #9
  br label %549

549:                                              ; preds = %547, %545
  %.pn = phi { ptr, i32 } [ %548, %547 ], [ %546, %545 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %550

550:                                              ; preds = %549, %543
  %.pn.pn = phi { ptr, i32 } [ %.pn, %549 ], [ %544, %543 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %99) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %98) #9
  br label %552

551:                                              ; preds = %535, %216
  ret void

552:                                              ; preds = %550, %538, %220
  %.pn229.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn229.pn.pn.pn.pn.pn.pn.pn, %220 ], [ %.pn211.pn.pn, %538 ], [ %.pn.pn, %550 ]
  resume { ptr, i32 } %.pn229.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(376)) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSF_ISD_EEEET_SD_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEES8_SE_A3_cEEESE_RNS9_INS_3VecISE_EEEEDpRKT_(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(16), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA44_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(44)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA54_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(54)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3VecINS_6rc_ptrIN4lang4data4Node4Expr2_TEEEEixEl(ptr noundef nonnull align 8 dereferenceable(64), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA29_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA5_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(29), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(5)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA2_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEERNS5_INS_3VecISA_EEEENS5_INSB_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SK_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A2_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA13_cS8_A3_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cA6_cNS_6rc_ptrIN4lang2cc4Node2_TEEES3_S9_S2_S9_A13_cS9_S3_NS_3VecIS9_EEA2_cEEES9_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA57_cEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(57)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initIPKcJA14_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA4_cEEESA_RNS5_INS_3VecISA_EEEENS5_INSC_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SL_DpRKT0_(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(16), ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA11_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(11)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA16_cS8_A3_cS8_SA_EEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cS2_NS_6rc_ptrIN4lang2cc4Node2_TEEEA14_cNS_3VecIS8_EEA2_cEEES8_DpRKT_(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 1 dereferenceable(5), ptr noundef nonnull align 1 dereferenceable(5), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc9log_innerIJA59_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvlDpRKT_(i64 noundef, ptr noundef nonnull align 1 dereferenceable(59), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { 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 #4 = { 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 #5 = { 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 #6 = { 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { "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 = !{!23, !23, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass