; 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::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::rc_ptr.78" = type { ptr, ptr }
%"struct.langcc::Option::_T.72" = type { i32, [16 x i8] }
%"struct.langcc::Option::_T.77" = type { i32, [16 x i8] }
%"struct.std::pair.91" = type { %"struct.langcc::rc_ptr.93", %"struct.langcc::rc_ptr.93" }
%"struct.langcc::rc_ptr.93" = 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.33" = 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.12" = type { ptr, ptr }
%"struct.langcc::MapIterator.121" = type { ptr, i64 }
%"struct.langcc::rc_ptr.124" = type { ptr, ptr }
%"struct.std::pair.109" = type { %"class.std::__cxx11::basic_string", %"struct.langcc::rc_ptr.104" }
%"struct.langcc::rc_ptr.104" = type { ptr, ptr }
%"struct.langcc::StrSlice" = type { %"struct.langcc::rc_ptr.7", i64, i64 }
%"struct.langcc::rc_ptr.7" = type { ptr, ptr }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"struct.langcc::rc_ptr.118" = type { ptr, ptr }
%"struct.langcc::rc_ptr.125" = type { ptr, ptr }
%"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::Decl::Data::_T" = type { %"struct.lang::data::Node::Decl::_T.base", %"struct.langcc::rc_ptr.34", %"struct.langcc::Option::_T.35", %"struct.langcc::Option::_T.36", %"struct.langcc::rc_ptr.37", %"struct.langcc::rc_ptr.38" }
%"struct.lang::data::Node::Decl::_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.langcc::rc_ptr.34" = type { ptr, ptr }
%"struct.langcc::Option::_T.35" = type { i32, [16 x i8] }
%"struct.langcc::Option::_T.36" = type { i32, [16 x i8] }
%"struct.langcc::rc_ptr.37" = type { ptr, ptr }
%"struct.langcc::rc_ptr.38" = type { ptr, ptr }
%"struct.lang::data::Node::Entry::Field::_T" = type { %"struct.lang::data::Node::Entry::_T.base", %"struct.langcc::StrSlice", i8, i8, %"struct.langcc::rc_ptr.46" }
%"struct.lang::data::Node::Entry::_T.base" = type <{ %"struct.lang::data::Node::_T", i32 }>

@.str.18 = external hidden unnamed_addr constant [5 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.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.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_INS0_IS8_SA_EEEEE12contains_keyERKSA_(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc26dt_extract_def_fields_fullENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.91") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(376)) #2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(376) %5) #2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca %"struct.langcc::rc_ptr.33", align 8
  %14 = alloca %"struct.langcc::rc_ptr.33", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca i8, align 1
  %20 = alloca %"struct.langcc::rc_ptr.76", align 8
  %21 = alloca %"struct.langcc::Option::_T.72", align 4
  %22 = alloca %"struct.langcc::Option::_T.77", align 4
  %23 = alloca %"struct.langcc::rc_ptr.76", align 8
  %24 = alloca %"struct.langcc::Option::_T.72", align 4
  %25 = alloca %"struct.langcc::Option::_T.77", align 4
  %26 = alloca %"struct.langcc::rc_ptr.0", align 8
  %27 = alloca %"class.std::vector", align 8
  %28 = alloca %"class.std::initializer_list", align 8
  %29 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"struct.langcc::rc_ptr.0", align 8
  %32 = alloca %"class.std::vector", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca i1, align 1
  %36 = alloca %"class.std::allocator.73", align 1
  %37 = alloca %"struct.langcc::rc_ptr.0", align 8
  %38 = alloca %"class.std::vector", align 8
  %39 = alloca %"class.std::initializer_list", align 8
  %40 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"struct.langcc::rc_ptr.0", align 8
  %43 = alloca i1, align 1
  %44 = alloca %"class.std::allocator.73", align 1
  %45 = alloca %"struct.langcc::rc_ptr.78", align 8
  %46 = alloca %"struct.langcc::rc_ptr.12", align 8
  %47 = alloca %"struct.langcc::rc_ptr.12", align 8
  %48 = alloca %"struct.langcc::rc_ptr.76", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator", align 1
  %51 = alloca %"struct.langcc::rc_ptr.76", align 8
  %52 = alloca %"struct.langcc::rc_ptr.76", align 8
  %53 = alloca %"struct.langcc::rc_ptr.76", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator", align 1
  %56 = alloca %"struct.langcc::rc_ptr.12", align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"struct.langcc::MapIterator.121", align 8
  %59 = alloca %"struct.langcc::MapIterator.121", align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"struct.langcc::rc_ptr.0", align 8
  %64 = alloca %"struct.langcc::rc_ptr.0", align 8
  %65 = alloca %"struct.langcc::rc_ptr.12", align 8
  %66 = alloca %"struct.langcc::rc_ptr.76", align 8
  %67 = alloca %"struct.langcc::rc_ptr.76", align 8
  %68 = alloca %"struct.langcc::rc_ptr.0", align 8
  %69 = alloca %"struct.langcc::rc_ptr.76", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"struct.langcc::rc_ptr.0", align 8
  %74 = alloca %"struct.langcc::rc_ptr.76", align 8
  %75 = alloca %"struct.langcc::Option::_T.72", align 4
  %76 = alloca %"struct.langcc::rc_ptr.0", align 8
  %77 = alloca %"class.std::vector", align 8
  %78 = alloca %"class.std::initializer_list", align 8
  %79 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"class.std::allocator.73", align 1
  %82 = alloca %"struct.langcc::Option::_T.77", align 4
  %83 = alloca %"struct.langcc::rc_ptr.76", align 8
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"struct.langcc::rc_ptr.0", align 8
  %86 = alloca %"struct.langcc::rc_ptr.76", align 8
  %87 = alloca %"struct.langcc::Option::_T.72", align 4
  %88 = alloca %"struct.langcc::rc_ptr.0", align 8
  %89 = alloca %"class.std::vector", align 8
  %90 = alloca %"class.std::initializer_list", align 8
  %91 = alloca [1 x %"class.std::__cxx11::basic_string"], align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"class.std::allocator.73", align 1
  %94 = alloca %"struct.langcc::Option::_T.77", align 4
  %95 = alloca %"struct.langcc::rc_ptr.76", align 8
  %96 = alloca %"struct.langcc::rc_ptr.76", align 8
  %97 = alloca %"struct.langcc::rc_ptr.124", align 8
  %98 = alloca %"struct.langcc::rc_ptr.76", align 8
  %99 = alloca %"struct.langcc::rc_ptr.76", align 8
  %100 = alloca %"struct.langcc::Option::_T.72", align 4
  %101 = alloca %"struct.langcc::Option::_T.77", align 4
  %102 = alloca %"struct.langcc::rc_ptr.76", align 8
  %103 = alloca %"struct.langcc::rc_ptr.76", align 8
  %104 = alloca %"struct.langcc::rc_ptr.12", align 8
  %105 = alloca %"struct.std::pair.91", align 8
  %106 = alloca %"struct.langcc::rc_ptr.0", align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca ptr, align 8
  %112 = alloca %"struct.std::pair.109", align 8
  %113 = alloca ptr, align 8
  %114 = alloca ptr, align 8
  %115 = alloca %"struct.langcc::StrSlice", align 8
  %116 = alloca %"struct.langcc::rc_ptr.76", align 8
  %117 = alloca %"class.std::__cxx11::basic_string", align 8
  %118 = alloca %"class.std::__cxx11::basic_string", align 8
  %119 = alloca %"class.std::allocator", align 1
  %120 = alloca %"struct.langcc::rc_ptr.46", align 8
  %121 = alloca %"struct.langcc::rc_ptr.76", align 8
  %122 = alloca %"struct.langcc::Option::_T.117", align 4
  %123 = alloca %"struct.langcc::rc_ptr.0", align 8
  %124 = alloca %"struct.langcc::rc_ptr.0", align 8
  %125 = alloca %"struct.langcc::rc_ptr.118", align 8
  %126 = alloca %"struct.langcc::rc_ptr.76", align 8
  %127 = alloca %"struct.langcc::rc_ptr.76", align 8
  %128 = alloca %"struct.langcc::rc_ptr.46", align 8
  %129 = alloca %"struct.langcc::rc_ptr.76", align 8
  %130 = alloca %"struct.langcc::rc_ptr.76", align 8
  %131 = alloca %"struct.langcc::rc_ptr.76", align 8
  %132 = alloca %"struct.langcc::Option::_T.72", align 4
  %133 = alloca %"struct.langcc::Option::_T.77", align 4
  %134 = alloca %"struct.langcc::rc_ptr.76", align 8
  %135 = alloca %"struct.langcc::rc_ptr.0", align 8
  %136 = alloca %"struct.langcc::rc_ptr.76", align 8
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca %"class.std::allocator", align 1
  %139 = alloca %"struct.langcc::rc_ptr.0", align 8
  %140 = alloca %"struct.langcc::rc_ptr.0", align 8
  %141 = alloca %"struct.langcc::rc_ptr.76", align 8
  %142 = alloca %"struct.langcc::rc_ptr.76", align 8
  %143 = alloca %"struct.langcc::rc_ptr.76", align 8
  %144 = alloca %"struct.langcc::rc_ptr.12", align 8
  %145 = alloca %"struct.langcc::Option::_T.117", align 4
  %146 = alloca %"struct.langcc::rc_ptr.0", align 8
  %147 = alloca %"struct.langcc::rc_ptr.0", align 8
  %148 = alloca %"struct.langcc::Option::_T.117", align 4
  %149 = alloca %"struct.langcc::Option::_T.117", align 4
  %150 = alloca %"struct.langcc::rc_ptr.76", align 8
  %151 = alloca %"struct.langcc::rc_ptr.76", align 8
  %152 = alloca %"struct.langcc::rc_ptr.125", align 8
  %153 = alloca %"struct.langcc::rc_ptr.76", align 8
  %154 = alloca %"struct.langcc::rc_ptr.12", align 8
  %155 = alloca %"struct.langcc::rc_ptr.125", align 8
  %156 = alloca %"struct.langcc::rc_ptr.76", align 8
  %157 = alloca %"struct.langcc::rc_ptr.12", align 8
  %158 = alloca %"struct.langcc::rc_ptr.12", align 8
  %159 = alloca %"struct.langcc::rc_ptr.76", align 8
  %160 = alloca %"struct.langcc::rc_ptr.12", align 8
  store i32 %0, ptr %7, align 4, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !9
  store ptr %3, ptr %10, align 8, !tbaa !9
  store i32 %4, ptr %11, align 4, !tbaa !11
  store ptr %5, ptr %12, align 8, !tbaa !9
  %161 = load ptr, ptr %10, align 8, !tbaa !9
  %162 = call noundef ptr @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  %163 = call noundef zeroext i1 @_ZN6langcc3SetINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEE8containsERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %162, ptr noundef nonnull align 8 dereferenceable(16) %2)
  br i1 %163, label %164, label %165

164:                                              ; preds = %6
  br label %1282

165:                                              ; preds = %6
  %166 = load ptr, ptr %10, align 8, !tbaa !9
  %167 = call noundef ptr @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %166)
  call void @_ZN6langcc3SetINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEE6insertERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %167, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #10
  %168 = load ptr, ptr %12, align 8, !tbaa !9
  %169 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %168, i32 0, i32 3
  %170 = call noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_IN4lang4data4Node4Decl4Data2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  %171 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_IN4lang4data4Node4Decl4Data2_TEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %170, ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %171)
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #10
  %172 = load ptr, ptr %12, align 8, !tbaa !9
  %173 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %172, i32 0, i32 3
  %174 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_IN4lang4data4Node4Decl4Data2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
          to label %175 unwind label %193

175:                                              ; preds = %165
  %176 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_IN4lang4data4Node4Decl4Data2_TEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %174, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %177 unwind label %193

177:                                              ; preds = %175
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %176)
          to label %178 unwind label %193

178:                                              ; preds = %177
  %179 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %180 unwind label %197

180:                                              ; preds = %178
  %181 = getelementptr inbounds %"struct.lang::data::Node::Decl::Data::_T", ptr %179, i32 0, i32 3
  %182 = invoke noundef zeroext i1 @_ZNK6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang4data4Node5Param2_TEEEEEEEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(20) %181)
          to label %183 unwind label %197

183:                                              ; preds = %180
  br i1 %182, label %190, label %184

184:                                              ; preds = %183
  %185 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %186 unwind label %197

186:                                              ; preds = %184
  %187 = getelementptr inbounds %"struct.lang::data::Node::Decl::Data::_T", ptr %185, i32 0, i32 3
  %188 = invoke noundef zeroext i1 @_ZNK6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang4data4Node5Param2_TEEEEEEEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(20) %187)
          to label %189 unwind label %197

189:                                              ; preds = %186
  br i1 %188, label %190, label %210

190:                                              ; preds = %189, %183
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %191 unwind label %201

191:                                              ; preds = %190
  invoke void @_ZN6langcc2AXIJEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %17) #11
          to label %192 unwind label %205

192:                                              ; preds = %191
  unreachable

193:                                              ; preds = %177, %175, %165
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %15, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %16, align 4
  br label %1358

197:                                              ; preds = %186, %184, %180, %178
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %15, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %16, align 4
  br label %1357

201:                                              ; preds = %190
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %15, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %16, align 4
  br label %209

205:                                              ; preds = %191
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %15, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  br label %209

209:                                              ; preds = %205, %201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  br label %1357

210:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  %211 = load ptr, ptr %12, align 8, !tbaa !9
  %212 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %211, i32 0, i32 1
  %213 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_INS1_IS8_SA_EEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %212)
          to label %214 unwind label %284

214:                                              ; preds = %210
  %215 = invoke noundef zeroext i1 @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_INS0_IS8_SA_EEEEE12contains_keyERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %213, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %216 unwind label %284

216:                                              ; preds = %214
  %217 = zext i1 %215 to i8
  store i8 %217, ptr %19, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #10
  %218 = load ptr, ptr %12, 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 %21)
          to label %219 unwind label %288

219:                                              ; preds = %216
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %22)
          to label %220 unwind label %292

220:                                              ; preds = %219
  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 %20, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(376) %218, ptr noundef %21, ptr noundef %22)
          to label %221 unwind label %296

221:                                              ; preds = %220
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %22) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %21) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #10
  %222 = load ptr, ptr %12, 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 %24)
          to label %223 unwind label %301

223:                                              ; preds = %221
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %25)
          to label %224 unwind label %305

224:                                              ; preds = %223
  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 %23, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %222, ptr noundef %24, ptr noundef %25)
          to label %225 unwind label %309

225:                                              ; preds = %224
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %25) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %24) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #10
  store i1 true, ptr %35, align 1
  store ptr %29, ptr %30, align 8
  %226 = load ptr, ptr %12, align 8, !tbaa !9
  %227 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %226, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #10
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %31, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %228 unwind label %314

228:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.84, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %229 unwind label %318

229:                                              ; preds = %228
  invoke void @_ZN6langcc13CppGenContext12gen_id_freshENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEES8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(264) %227, ptr noundef %31, ptr noundef %33)
          to label %230 unwind label %322

230:                                              ; preds = %229
  store i1 false, ptr %35, align 1
  %231 = getelementptr inbounds %"class.std::initializer_list", ptr %28, i32 0, i32 0
  store ptr %29, ptr %231, align 8, !tbaa !15
  %232 = getelementptr inbounds %"class.std::initializer_list", ptr %28, i32 0, i32 1
  store i64 1, ptr %232, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  %233 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 0
  %234 = load ptr, ptr %233, align 8
  %235 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 1
  %236 = load i64, ptr %235, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr %234, i64 %236, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %237 unwind label %326

237:                                              ; preds = %230
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %26, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %238 unwind label %330

238:                                              ; preds = %237
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  %239 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %29, i32 0, i32 0
  %240 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %239, i64 1
  br label %241

241:                                              ; preds = %241, %238
  %242 = phi ptr [ %240, %238 ], [ %243, %241 ]
  %243 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %242, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #10
  %244 = icmp eq ptr %243, %239
  br i1 %244, label %245, label %241

245:                                              ; preds = %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #10
  store i1 true, ptr %43, align 1
  store ptr %40, ptr %41, align 8
  %246 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %247 unwind label %355

247:                                              ; preds = %245
  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 %40, i32 noundef %246, ptr noundef %42, i1 noundef zeroext true)
          to label %248 unwind label %359

248:                                              ; preds = %247
  store i1 false, ptr %43, align 1
  %249 = getelementptr inbounds %"class.std::initializer_list", ptr %39, i32 0, i32 0
  store ptr %40, ptr %249, align 8, !tbaa !15
  %250 = getelementptr inbounds %"class.std::initializer_list", ptr %39, i32 0, i32 1
  store i64 1, ptr %250, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  %251 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 0
  %252 = load ptr, ptr %251, align 8
  %253 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 1
  %254 = load i64, ptr %253, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr %252, i64 %254, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %255 unwind label %363

255:                                              ; preds = %248
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %37, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %256 unwind label %367

256:                                              ; preds = %255
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #10
  %257 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %40, i32 0, i32 0
  %258 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %257, i64 1
  br label %259

259:                                              ; preds = %259, %256
  %260 = phi ptr [ %258, %256 ], [ %261, %259 ]
  %261 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %260, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #10
  %262 = icmp eq ptr %261, %257
  br i1 %262, label %263, label %259

263:                                              ; preds = %259
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #10
  %264 = load ptr, ptr %12, align 8, !tbaa !9
  %265 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %264, i32 0, i32 0
  invoke void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.78") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(264) %265)
          to label %266 unwind label %391

266:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %46)
          to label %267 unwind label %395

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %47)
          to label %268 unwind label %399

268:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #10
  %269 = load ptr, ptr %12, align 8, !tbaa !9
  %270 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %269, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.85, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %271 unwind label %403

271:                                              ; preds = %268
  invoke void @_ZN6langcc13CppGenContext17gen_cpp_param_accINS_6rc_ptrIN4lang2cc4Node2_TEEEEES7_RNS2_INS_3VecIS7_EEEERKNS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKT_RKSH_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %48, ptr noundef nonnull align 8 dereferenceable(264) %270, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %272 unwind label %407

272:                                              ; preds = %271
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #10
  %273 = load ptr, ptr %12, align 8, !tbaa !9
  %274 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %273, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA15_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS9_A3_cEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %51, ptr noundef nonnull align 8 dereferenceable(264) %274, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 1 dereferenceable(15) @.str.86, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(3) @.str.87)
          to label %275 unwind label %412

275:                                              ; preds = %272
  %276 = load i32, ptr %7, align 4, !tbaa !5
  %277 = icmp eq i32 %276, 1
  br i1 %277, label %278, label %425

278:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #10
  %279 = load ptr, ptr %12, align 8, !tbaa !9
  %280 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %279, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA20_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %52, ptr noundef nonnull align 8 dereferenceable(264) %280, ptr noundef nonnull align 1 dereferenceable(20) @.str.88, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 dereferenceable(3) @.str.87)
          to label %281 unwind label %416

281:                                              ; preds = %278
  %282 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %283 unwind label %420

283:                                              ; preds = %281
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #10
  br label %425

284:                                              ; preds = %214, %210
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %15, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %16, align 4
  br label %1356

288:                                              ; preds = %216
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %15, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %16, align 4
  br label %1355

292:                                              ; preds = %219
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %15, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %16, align 4
  br label %300

296:                                              ; preds = %220
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %15, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %16, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %22) #10
  br label %300

300:                                              ; preds = %296, %292
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %21) #10
  br label %1355

301:                                              ; preds = %221
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %15, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %16, align 4
  br label %1354

305:                                              ; preds = %223
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %15, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %16, align 4
  br label %313

309:                                              ; preds = %224
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %15, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %16, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %25) #10
  br label %313

313:                                              ; preds = %309, %305
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %24) #10
  br label %1354

314:                                              ; preds = %225
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %15, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %16, align 4
  br label %344

318:                                              ; preds = %228
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %15, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %16, align 4
  br label %343

322:                                              ; preds = %229
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %15, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %16, align 4
  br label %342

326:                                              ; preds = %230
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %15, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %16, align 4
  br label %334

330:                                              ; preds = %237
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %15, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %16, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  br label %334

334:                                              ; preds = %330, %326
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  %335 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %29, i32 0, i32 0
  %336 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %335, i64 1
  br label %337

337:                                              ; preds = %337, %334
  %338 = phi ptr [ %336, %334 ], [ %339, %337 ]
  %339 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %338, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #10
  %340 = icmp eq ptr %339, %335
  br i1 %340, label %341, label %337

341:                                              ; preds = %337
  br label %342

342:                                              ; preds = %341, %322
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %343

343:                                              ; preds = %342, %318
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  br label %344

344:                                              ; preds = %343, %314
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  %345 = load i1, ptr %35, align 1
  br i1 %345, label %346, label %354

346:                                              ; preds = %344
  %347 = load ptr, ptr %30, align 8
  %348 = icmp eq ptr %29, %347
  br i1 %348, label %353, label %349

349:                                              ; preds = %349, %346
  %350 = phi ptr [ %347, %346 ], [ %351, %349 ]
  %351 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %350, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %351) #10
  %352 = icmp eq ptr %351, %29
  br i1 %352, label %353, label %349

353:                                              ; preds = %349, %346
  br label %354

354:                                              ; preds = %353, %344
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  br label %1353

355:                                              ; preds = %245
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %15, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %16, align 4
  br label %380

359:                                              ; preds = %247
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %15, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %16, align 4
  br label %379

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

367:                                              ; preds = %255
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %15, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %16, align 4
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  br label %371

371:                                              ; preds = %367, %363
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #10
  %372 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %40, i32 0, i32 0
  %373 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %372, i64 1
  br label %374

374:                                              ; preds = %374, %371
  %375 = phi ptr [ %373, %371 ], [ %376, %374 ]
  %376 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %375, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %376) #10
  %377 = icmp eq ptr %376, %372
  br i1 %377, label %378, label %374

378:                                              ; preds = %374
  br label %379

379:                                              ; preds = %378, %359
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  br label %380

380:                                              ; preds = %379, %355
  %381 = load i1, ptr %43, align 1
  br i1 %381, label %382, label %390

382:                                              ; preds = %380
  %383 = load ptr, ptr %41, align 8
  %384 = icmp eq ptr %40, %383
  br i1 %384, label %389, label %385

385:                                              ; preds = %385, %382
  %386 = phi ptr [ %383, %382 ], [ %387, %385 ]
  %387 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %386, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #10
  %388 = icmp eq ptr %387, %40
  br i1 %388, label %389, label %385

389:                                              ; preds = %385, %382
  br label %390

390:                                              ; preds = %389, %380
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #10
  br label %1352

391:                                              ; preds = %263
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %15, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %16, align 4
  br label %1351

395:                                              ; preds = %266
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %15, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %16, align 4
  br label %1350

399:                                              ; preds = %267
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %15, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %16, align 4
  br label %1349

403:                                              ; preds = %268
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %15, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %16, align 4
  br label %411

407:                                              ; preds = %271
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %15, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  br label %411

411:                                              ; preds = %407, %403
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #10
  br label %1348

412:                                              ; preds = %272
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %15, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %16, align 4
  br label %1347

416:                                              ; preds = %278
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %15, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %16, align 4
  br label %424

420:                                              ; preds = %281
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %15, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #10
  br label %424

424:                                              ; preds = %420, %416
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #10
  br label %1346

425:                                              ; preds = %283, %275
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #10
  %426 = load ptr, ptr %12, align 8, !tbaa !9
  %427 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %426, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.89, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %428 unwind label %460

428:                                              ; preds = %425
  invoke void @_ZN6langcc13CppGenContext17gen_cpp_param_accINS_6rc_ptrIN4lang2cc4Node2_TEEEEES7_RNS2_INS_3VecIS7_EEEERKNS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKT_RKSH_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %53, ptr noundef nonnull align 8 dereferenceable(264) %427, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %429 unwind label %464

429:                                              ; preds = %428
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #10
  %430 = load i8, ptr %19, align 1, !tbaa !13, !range !19, !noundef !20
  %431 = trunc i8 %430 to i1
  br i1 %431, label %432, label %849

432:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %56)
          to label %433 unwind label %469

433:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %434 = load ptr, ptr %12, align 8, !tbaa !9
  %435 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %434, i32 0, i32 1
  %436 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_INS1_IS8_SA_EEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %435)
          to label %437 unwind label %473

437:                                              ; preds = %433
  %438 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_INS0_IS8_SA_EEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %436, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %439 unwind label %473

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN6langcc6rc_ptrINS_3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_INS_3VecIS7_EEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %438)
          to label %441 unwind label %473

441:                                              ; preds = %439
  store ptr %440, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #10
  %442 = load ptr, ptr %57, align 8, !tbaa !9
  %443 = invoke { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(200) %442)
          to label %444 unwind label %477

444:                                              ; preds = %441
  %445 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 0
  %446 = extractvalue { ptr, i64 } %443, 0
  store ptr %446, ptr %445, align 8
  %447 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 1
  %448 = extractvalue { ptr, i64 } %443, 1
  store i64 %448, ptr %447, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #10
  %449 = load ptr, ptr %57, align 8, !tbaa !9
  %450 = invoke { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(200) %449)
          to label %451 unwind label %481

451:                                              ; preds = %444
  %452 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 0
  %453 = extractvalue { ptr, i64 } %450, 0
  store ptr %453, ptr %452, align 8
  %454 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 1
  %455 = extractvalue { ptr, i64 } %450, 1
  store i64 %455, ptr %454, align 8
  br label %456

456:                                              ; preds = %767, %451
  %457 = invoke noundef zeroext i1 @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEneERKSB_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %458 unwind label %481

458:                                              ; preds = %456
  br i1 %457, label %485, label %459

459:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %810

460:                                              ; preds = %425
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %15, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %16, align 4
  br label %468

464:                                              ; preds = %428
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %15, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  br label %468

468:                                              ; preds = %464, %460
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #10
  br label %1345

469:                                              ; preds = %432
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %15, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %16, align 4
  br label %848

473:                                              ; preds = %439, %437, %433
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %15, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %16, align 4
  br label %809

477:                                              ; preds = %441
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %15, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %16, align 4
  br label %808

481:                                              ; preds = %765, %456, %444
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %15, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %16, align 4
  br label %807

485:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %486 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %487 unwind label %539

487:                                              ; preds = %485
  store ptr %486, ptr %60, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %488 = load ptr, ptr %60, align 8, !tbaa !9
  %489 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %488) #10
  store ptr %489, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %490 = load ptr, ptr %60, align 8, !tbaa !9
  %491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %490) #10
  store ptr %491, ptr %62, align 8, !tbaa !9
  %492 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %493 unwind label %543

493:                                              ; preds = %487
  %494 = load ptr, ptr %62, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %494)
          to label %495 unwind label %547

495:                                              ; preds = %493
  %496 = load ptr, ptr %10, align 8, !tbaa !9
  %497 = load i32, ptr %11, align 4, !tbaa !11
  %498 = load ptr, ptr %12, 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 %492, ptr noundef %63, ptr noundef %64, ptr noundef nonnull align 8 dereferenceable(16) %496, i32 noundef %497, ptr noundef nonnull align 8 dereferenceable(376) %498)
          to label %499 unwind label %551

499:                                              ; preds = %495
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %65)
          to label %500 unwind label %556

500:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #10
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %501 unwind label %560

501:                                              ; preds = %500
  %502 = load i32, ptr %7, align 4, !tbaa !5
  %503 = icmp eq i32 %502, 0
  br i1 %503, label %504, label %642

504:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #10
  %505 = load ptr, ptr %12, align 8, !tbaa !9
  %506 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %505, i32 0, i32 0
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %507 unwind label %564

507:                                              ; preds = %504
  %508 = load ptr, ptr %12, align 8, !tbaa !9
  %509 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %508, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA5_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %69, ptr noundef nonnull align 8 dereferenceable(264) %509, ptr noundef nonnull align 1 dereferenceable(5) @.str.57)
          to label %510 unwind label %568

510:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %511 unwind label %572

511:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #10
  %512 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %513 unwind label %576

513:                                              ; preds = %511
  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 %72, i32 noundef %512, ptr noundef %73, i1 noundef zeroext true)
          to label %514 unwind label %580

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #10
  %515 = load ptr, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %77) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #10
  store ptr %79, ptr %80, align 8
  %516 = load ptr, ptr %61, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %516)
          to label %517 unwind label %584

517:                                              ; preds = %514
  %518 = getelementptr inbounds %"class.std::initializer_list", ptr %78, i32 0, i32 0
  store ptr %79, ptr %518, align 8, !tbaa !15
  %519 = getelementptr inbounds %"class.std::initializer_list", ptr %78, i32 0, i32 1
  store i64 1, ptr %519, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  %520 = getelementptr inbounds { ptr, i64 }, ptr %78, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8
  %522 = getelementptr inbounds { ptr, i64 }, ptr %78, i32 0, i32 1
  %523 = load i64, ptr %522, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr %521, i64 %523, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %524 unwind label %595

524:                                              ; preds = %517
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %76, ptr noundef nonnull align 8 dereferenceable(24) %77)
          to label %525 unwind label %599

525:                                              ; preds = %524
  invoke void @_ZN6langcc4SomeINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.72") align 4 %75, ptr noundef nonnull align 8 dereferenceable(16) %76)
          to label %526 unwind label %603

526:                                              ; preds = %525
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %82)
          to label %527 unwind label %607

527:                                              ; preds = %526
  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 %74, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %515, ptr noundef %75, ptr noundef %82)
          to label %528 unwind label %611

528:                                              ; preds = %527
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_A3_cS7_SF_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSG_ISD_EEEET_SD_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %67, ptr noundef nonnull align 8 dereferenceable(264) %506, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %529 unwind label %615

529:                                              ; preds = %528
  %530 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %67)
          to label %531 unwind label %619

531:                                              ; preds = %529
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %82) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %75) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #10
  %532 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %79, i32 0, i32 0
  %533 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %532, i64 1
  br label %534

534:                                              ; preds = %534, %531
  %535 = phi ptr [ %533, %531 ], [ %536, %534 ]
  %536 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %535, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %536) #10
  %537 = icmp eq ptr %536, %532
  br i1 %537, label %538, label %534

538:                                              ; preds = %534
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #10
  br label %740

539:                                              ; preds = %485
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %15, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %16, align 4
  br label %806

543:                                              ; preds = %487
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %15, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %16, align 4
  br label %805

547:                                              ; preds = %493
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %15, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %16, align 4
  br label %555

551:                                              ; preds = %495
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %15, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #10
  br label %555

555:                                              ; preds = %551, %547
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #10
  br label %805

556:                                              ; preds = %499
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %15, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %16, align 4
  br label %804

560:                                              ; preds = %500
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %15, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %16, align 4
  br label %803

564:                                              ; preds = %504
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %15, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %16, align 4
  br label %641

568:                                              ; preds = %507
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %15, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %16, align 4
  br label %640

572:                                              ; preds = %510
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %15, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %16, align 4
  br label %639

576:                                              ; preds = %511
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %15, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %16, align 4
  br label %638

580:                                              ; preds = %513
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %15, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %16, align 4
  br label %637

584:                                              ; preds = %514
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %15, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %16, align 4
  %588 = load ptr, ptr %80, align 8
  %589 = icmp eq ptr %79, %588
  br i1 %589, label %594, label %590

590:                                              ; preds = %590, %584
  %591 = phi ptr [ %588, %584 ], [ %592, %590 ]
  %592 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %591, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %592) #10
  %593 = icmp eq ptr %592, %79
  br i1 %593, label %594, label %590

594:                                              ; preds = %590, %584
  br label %636

595:                                              ; preds = %517
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %15, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %16, align 4
  br label %628

599:                                              ; preds = %524
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %15, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %16, align 4
  br label %627

603:                                              ; preds = %525
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %15, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %16, align 4
  br label %626

607:                                              ; preds = %526
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %15, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %16, align 4
  br label %625

611:                                              ; preds = %527
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %15, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %16, align 4
  br label %624

615:                                              ; preds = %528
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %15, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %16, align 4
  br label %623

619:                                              ; preds = %529
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %15, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  br label %623

623:                                              ; preds = %619, %615
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #10
  br label %624

624:                                              ; preds = %623, %611
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %82) #10
  br label %625

625:                                              ; preds = %624, %607
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %75) #10
  br label %626

626:                                              ; preds = %625, %603
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #10
  br label %627

627:                                              ; preds = %626, %599
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  br label %628

628:                                              ; preds = %627, %595
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #10
  %629 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %79, i32 0, i32 0
  %630 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %629, i64 1
  br label %631

631:                                              ; preds = %631, %628
  %632 = phi ptr [ %630, %628 ], [ %633, %631 ]
  %633 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %632, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %633) #10
  %634 = icmp eq ptr %633, %629
  br i1 %634, label %635, label %631

635:                                              ; preds = %631
  br label %636

636:                                              ; preds = %635, %594
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  br label %637

637:                                              ; preds = %636, %580
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  br label %638

638:                                              ; preds = %637, %576
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  br label %639

639:                                              ; preds = %638, %572
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #10
  br label %640

640:                                              ; preds = %639, %568
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #10
  br label %641

641:                                              ; preds = %640, %564
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #10
  br label %802

642:                                              ; preds = %501
  %643 = load i32, ptr %7, align 4, !tbaa !5
  %644 = icmp eq i32 %643, 1
  br i1 %644, label %645, label %737

645:                                              ; preds = %642
  %646 = load ptr, ptr %12, align 8, !tbaa !9
  %647 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %646, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #10
  %648 = load i32, ptr %7, 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) %1)
          to label %649 unwind label %675

649:                                              ; preds = %645
  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 %84, i32 noundef %648, ptr noundef %85, i1 noundef zeroext true)
          to label %650 unwind label %679

650:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #10
  %651 = load ptr, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #10
  store ptr %91, ptr %92, align 8
  %652 = load ptr, ptr %61, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) %652)
          to label %653 unwind label %683

653:                                              ; preds = %650
  %654 = getelementptr inbounds %"class.std::initializer_list", ptr %90, i32 0, i32 0
  store ptr %91, ptr %654, align 8, !tbaa !15
  %655 = getelementptr inbounds %"class.std::initializer_list", ptr %90, i32 0, i32 1
  store i64 1, ptr %655, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  %656 = getelementptr inbounds { ptr, i64 }, ptr %90, i32 0, i32 0
  %657 = load ptr, ptr %656, align 8
  %658 = getelementptr inbounds { ptr, i64 }, ptr %90, i32 0, i32 1
  %659 = load i64, ptr %658, align 8
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr %657, i64 %659, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %660 unwind label %694

660:                                              ; preds = %653
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.0") align 8 %88, ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %661 unwind label %698

661:                                              ; preds = %660
  invoke void @_ZN6langcc4SomeINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.72") align 4 %87, ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %662 unwind label %702

662:                                              ; preds = %661
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %94)
          to label %663 unwind label %706

663:                                              ; preds = %662
  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 %86, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %651, ptr noundef %87, ptr noundef %94)
          to label %664 unwind label %710

664:                                              ; preds = %663
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cSE_SF_S8_SE_SF_EEESE_RNS9_INS_3VecISE_EEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %83, ptr noundef nonnull align 8 dereferenceable(264) %647, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %665 unwind label %714

665:                                              ; preds = %664
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %94) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %87) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #10
  %666 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %91, i32 0, i32 0
  %667 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %666, i64 1
  br label %668

668:                                              ; preds = %668, %665
  %669 = phi ptr [ %667, %665 ], [ %670, %668 ]
  %670 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %669, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %670) #10
  %671 = icmp eq ptr %670, %666
  br i1 %671, label %672, label %668

672:                                              ; preds = %668
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #10
  %673 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %674 unwind label %733

674:                                              ; preds = %672
  br label %739

675:                                              ; preds = %645
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %15, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %16, align 4
  br label %732

679:                                              ; preds = %649
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %15, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %16, align 4
  br label %731

683:                                              ; preds = %650
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %15, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %16, align 4
  %687 = load ptr, ptr %92, align 8
  %688 = icmp eq ptr %91, %687
  br i1 %688, label %693, label %689

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

693:                                              ; preds = %689, %683
  br label %730

694:                                              ; preds = %653
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %15, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %16, align 4
  br label %722

698:                                              ; preds = %660
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %15, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %16, align 4
  br label %721

702:                                              ; preds = %661
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %15, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %16, align 4
  br label %720

706:                                              ; preds = %662
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %15, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %16, align 4
  br label %719

710:                                              ; preds = %663
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %15, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %16, align 4
  br label %718

714:                                              ; preds = %664
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %15, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  br label %718

718:                                              ; preds = %714, %710
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %94) #10
  br label %719

719:                                              ; preds = %718, %706
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %87) #10
  br label %720

720:                                              ; preds = %719, %702
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #10
  br label %721

721:                                              ; preds = %720, %698
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #10
  br label %722

722:                                              ; preds = %721, %694
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #10
  %723 = getelementptr inbounds [1 x %"class.std::__cxx11::basic_string"], ptr %91, i32 0, i32 0
  %724 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %723, i64 1
  br label %725

725:                                              ; preds = %725, %722
  %726 = phi ptr [ %724, %722 ], [ %727, %725 ]
  %727 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %726, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %727) #10
  %728 = icmp eq ptr %727, %723
  br i1 %728, label %729, label %725

729:                                              ; preds = %725
  br label %730

730:                                              ; preds = %729, %693
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  br label %731

731:                                              ; preds = %730, %679
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #10
  br label %732

732:                                              ; preds = %731, %675
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #10
  br label %802

733:                                              ; preds = %747, %743, %737, %672
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %15, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %16, align 4
  br label %802

737:                                              ; preds = %642
  invoke void @_ZN6langcc2AXEv() #11
          to label %738 unwind label %733

738:                                              ; preds = %737
  unreachable

739:                                              ; preds = %674
  br label %740

740:                                              ; preds = %739, %538
  %741 = load i32, ptr %7, align 4, !tbaa !5
  %742 = icmp eq i32 %741, 0
  br i1 %742, label %743, label %747

743:                                              ; preds = %740
  %744 = load ptr, ptr %12, align 8, !tbaa !9
  %745 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %744, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJA7_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cEEES8_RNS3_INS_3VecIS8_EEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %95, ptr noundef nonnull align 8 dereferenceable(264) %745, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 1 dereferenceable(7) @.str.92, ptr noundef nonnull align 8 dereferenceable(16) %66, ptr noundef nonnull align 1 dereferenceable(2) @.str.93)
          to label %746 unwind label %733

746:                                              ; preds = %743
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #10
  br label %747

747:                                              ; preds = %746, %740
  %748 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %749 unwind label %733

749:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #10
  %750 = load ptr, ptr %12, align 8, !tbaa !9
  %751 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %750, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #10
  %752 = load ptr, ptr %12, 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 %100)
          to label %753 unwind label %768

753:                                              ; preds = %749
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %101)
          to label %754 unwind label %772

754:                                              ; preds = %753
  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 %99, i32 noundef 7, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %752, ptr noundef %100, ptr noundef %101)
          to label %755 unwind label %776

755:                                              ; preds = %754
  %756 = load ptr, ptr %61, align 8, !tbaa !9
  %757 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %758 unwind label %780

758:                                              ; preds = %755
  invoke void @_ZN6langcc13CppGenContext2qqIJA11_cA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA4_cNS_3VecIS9_EEA9_cEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %98, ptr noundef nonnull align 8 dereferenceable(264) %751, ptr noundef nonnull align 1 dereferenceable(11) @.str.94, ptr noundef nonnull align 1 dereferenceable(5) @.str.95, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(3) @.str.82, ptr noundef nonnull align 8 dereferenceable(32) %756, ptr noundef nonnull align 1 dereferenceable(4) @.str.96, ptr noundef nonnull align 8 dereferenceable(64) %757, ptr noundef nonnull align 1 dereferenceable(9) @.str.97)
          to label %759 unwind label %780

759:                                              ; preds = %758
  %760 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %761 unwind label %784

761:                                              ; preds = %759
  invoke void @_ZN4lang2cc4Node2_T13as_SwitchCaseEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.124") align 8 %97, ptr noundef nonnull align 8 dereferenceable(136) %760)
          to label %762 unwind label %784

762:                                              ; preds = %761
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_10SwitchCase2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %97)
          to label %763 unwind label %788

763:                                              ; preds = %762
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %748, ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %764 unwind label %792

764:                                              ; preds = %763
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node10SwitchCase2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %101) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %100) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  br label %765

765:                                              ; preds = %764
  %766 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(16) %58)
          to label %767 unwind label %481

767:                                              ; preds = %765
  br label %456

768:                                              ; preds = %749
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %15, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %16, align 4
  br label %801

772:                                              ; preds = %753
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %15, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %16, align 4
  br label %800

776:                                              ; preds = %754
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %15, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %16, align 4
  br label %799

780:                                              ; preds = %758, %755
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %15, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %16, align 4
  br label %798

784:                                              ; preds = %761, %759
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %15, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %16, align 4
  br label %797

788:                                              ; preds = %762
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %15, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %16, align 4
  br label %796

792:                                              ; preds = %763
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %15, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  br label %796

796:                                              ; preds = %792, %788
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node10SwitchCase2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  br label %797

797:                                              ; preds = %796, %784
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #10
  br label %798

798:                                              ; preds = %797, %780
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #10
  br label %799

799:                                              ; preds = %798, %776
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %101) #10
  br label %800

800:                                              ; preds = %799, %772
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %100) #10
  br label %801

801:                                              ; preds = %800, %768
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #10
  br label %802

802:                                              ; preds = %801, %733, %732, %641
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #10
  br label %803

803:                                              ; preds = %802, %560
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #10
  br label %804

804:                                              ; preds = %803, %556
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #10
  br label %805

805:                                              ; preds = %804, %555, %543
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %806

806:                                              ; preds = %805, %539
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  br label %807

807:                                              ; preds = %806, %481
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #10
  br label %808

808:                                              ; preds = %807, %477
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #10
  br label %809

809:                                              ; preds = %808, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %847

810:                                              ; preds = %459
  %811 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %812 unwind label %825

812:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #10
  %813 = load ptr, ptr %12, align 8, !tbaa !9
  %814 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %813, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext2qqIJA11_cA27_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %102, ptr noundef nonnull align 8 dereferenceable(264) %814, ptr noundef nonnull align 1 dereferenceable(11) @.str.94, ptr noundef nonnull align 1 dereferenceable(27) @.str.98)
          to label %815 unwind label %829

815:                                              ; preds = %812
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %811, ptr noundef nonnull align 8 dereferenceable(16) %102)
          to label %816 unwind label %833

816:                                              ; preds = %815
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #10
  %817 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %818 unwind label %825

818:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #10
  %819 = load ptr, ptr %12, align 8, !tbaa !9
  %820 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %819, i32 0, i32 0
  %821 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %822 unwind label %838

822:                                              ; preds = %818
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA9_cNS_6rc_ptrIN4lang2cc4Node2_TEEES2_A4_cNS_3VecIS9_EEA2_cEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %103, ptr noundef nonnull align 8 dereferenceable(264) %820, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(9) @.str.99, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 1 dereferenceable(5) @.str.100, ptr noundef nonnull align 1 dereferenceable(4) @.str.101, ptr noundef nonnull align 8 dereferenceable(64) %821, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %823 unwind label %838

823:                                              ; preds = %822
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %817, ptr noundef nonnull align 8 dereferenceable(16) %103)
          to label %824 unwind label %842

824:                                              ; preds = %823
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  br label %1181

825:                                              ; preds = %816, %810
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %15, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %16, align 4
  br label %847

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

833:                                              ; preds = %815
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %15, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #10
  br label %837

837:                                              ; preds = %833, %829
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #10
  br label %847

838:                                              ; preds = %822, %818
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %15, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %16, align 4
  br label %846

842:                                              ; preds = %823
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %15, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #10
  br label %846

846:                                              ; preds = %842, %838
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #10
  br label %847

847:                                              ; preds = %846, %837, %825, %809
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #10
  br label %848

848:                                              ; preds = %847, %469
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #10
  br label %1344

849:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %104)
          to label %850 unwind label %870

850:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %851 unwind label %874

851:                                              ; preds = %850
  %852 = load ptr, ptr %12, align 8, !tbaa !9
  invoke void @_ZN6langcc26dt_extract_def_fields_fullENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.std::pair.91") align 8 %105, ptr noundef %106, ptr noundef nonnull align 8 dereferenceable(376) %852)
          to label %853 unwind label %878

853:                                              ; preds = %851
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  %854 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  store ptr %854, ptr %107, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #10
  %855 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  store ptr %855, ptr %108, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #10
  %856 = load ptr, ptr %107, align 8, !tbaa !9
  %857 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_IN4lang4data4Node5Entry5Field2_TEEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %856)
          to label %858 unwind label %882

858:                                              ; preds = %853
  store ptr %857, ptr %109, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  %859 = load ptr, ptr %109, align 8, !tbaa !9
  %860 = invoke noundef ptr @_ZNK6langcc3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64) %859)
          to label %861 unwind label %886

861:                                              ; preds = %858
  store ptr %860, ptr %110, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  %862 = load ptr, ptr %109, align 8, !tbaa !9
  %863 = invoke noundef ptr @_ZNK6langcc3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(64) %862)
          to label %864 unwind label %890

864:                                              ; preds = %861
  store ptr %863, ptr %111, align 8, !tbaa !9
  br label %865

865:                                              ; preds = %1021, %864
  %866 = load ptr, ptr %110, align 8, !tbaa !9
  %867 = load ptr, ptr %111, align 8, !tbaa !9
  %868 = icmp ne ptr %866, %867
  br i1 %868, label %894, label %869

869:                                              ; preds = %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  br label %1033

870:                                              ; preds = %849
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %15, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %16, align 4
  br label %1180

874:                                              ; preds = %850
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %15, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %16, align 4
  br label %1179

878:                                              ; preds = %851
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %15, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #10
  br label %1179

882:                                              ; preds = %853
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %15, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %16, align 4
  br label %1032

886:                                              ; preds = %858
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %15, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %16, align 4
  br label %1031

890:                                              ; preds = %861
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %15, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %16, align 4
  br label %1030

894:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 48, ptr %112) #10
  %895 = load ptr, ptr %110, align 8, !tbaa !9
  invoke void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEC2ERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %112, ptr noundef nonnull align 8 dereferenceable(48) %895)
          to label %896 unwind label %940

896:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  %897 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48) %112) #10
  store ptr %897, ptr %113, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #10
  %898 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48) %112) #10
  store ptr %898, ptr %114, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #10
  %899 = load ptr, ptr %114, align 8, !tbaa !9
  %900 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %899)
          to label %901 unwind label %944

901:                                              ; preds = %896
  %902 = getelementptr inbounds %"struct.lang::data::Node::Entry::Field::_T", ptr %900, i32 0, i32 1
  invoke void @_ZN6langcc8StrSliceC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(32) %902)
          to label %903 unwind label %944

903:                                              ; preds = %901
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #10
  %904 = load ptr, ptr %12, align 8, !tbaa !9
  %905 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %904, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %117) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef @.str.102, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %906 unwind label %948

906:                                              ; preds = %903
  invoke void @_ZN6langcc7fmt_strIJNS_8StrSliceEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS7_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %117, ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(32) %115)
          to label %907 unwind label %952

907:                                              ; preds = %906
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES8_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %116, ptr noundef nonnull align 8 dereferenceable(264) %905, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %117)
          to label %908 unwind label %956

908:                                              ; preds = %907
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #10
  %909 = load ptr, ptr %114, align 8, !tbaa !9
  %910 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %909)
          to label %911 unwind label %962

911:                                              ; preds = %908
  %912 = getelementptr inbounds %"struct.lang::data::Node::Entry::Field::_T", ptr %910, i32 0, i32 4
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef nonnull align 8 dereferenceable(16) %912)
          to label %913 unwind label %962

913:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #10
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %914 unwind label %966

914:                                              ; preds = %913
  %915 = load ptr, ptr %114, align 8, !tbaa !9
  %916 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %915)
          to label %917 unwind label %970

917:                                              ; preds = %914
  %918 = getelementptr inbounds %"struct.lang::data::Node::Entry::Field::_T", ptr %916, i32 0, i32 3
  %919 = load i8, ptr %918, align 1, !tbaa !21, !range !19, !noundef !20
  %920 = trunc i8 %919 to i1
  br i1 %920, label %1013, label %921

921:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 20, ptr %122) #10
  %922 = load i32, ptr %7, align 4, !tbaa !5
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %123, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %923 unwind label %974

923:                                              ; preds = %921
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %124, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %924 unwind label %978

924:                                              ; preds = %923
  %925 = load ptr, ptr %10, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %125, ptr noundef nonnull align 8 dereferenceable(16) %925)
          to label %926 unwind label %982

926:                                              ; preds = %924
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %126, ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %927 unwind label %986

927:                                              ; preds = %926
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %928 unwind label %990

928:                                              ; preds = %927
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %929 unwind label %994

929:                                              ; preds = %928
  %930 = load i32, ptr %11, align 4, !tbaa !11
  %931 = load ptr, ptr %12, 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 %122, i32 noundef %922, ptr noundef %123, ptr noundef %124, ptr noundef %125, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef %126, ptr noundef %127, ptr noundef %128, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %26, i32 noundef %930, ptr noundef nonnull align 8 dereferenceable(376) %931)
          to label %932 unwind label %998

932:                                              ; preds = %929
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #10
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #10
  %933 = load i32, ptr %7, align 4, !tbaa !5
  %934 = icmp eq i32 %933, 0
  br i1 %934, label %935, label %1011

935:                                              ; preds = %932
  %936 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEE7as_someEv(ptr noundef nonnull align 4 dereferenceable(20) %122)
          to label %937 unwind label %1007

937:                                              ; preds = %935
  %938 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(16) %936)
          to label %939 unwind label %1007

939:                                              ; preds = %937
  br label %1011

940:                                              ; preds = %894
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %15, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %16, align 4
  br label %1029

944:                                              ; preds = %901, %896
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %15, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %16, align 4
  br label %1028

948:                                              ; preds = %903
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %15, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %16, align 4
  br label %961

952:                                              ; preds = %906
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %15, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %16, align 4
  br label %960

956:                                              ; preds = %907
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %15, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  br label %960

960:                                              ; preds = %956, %952
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #10
  br label %961

961:                                              ; preds = %960, %948
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %119) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %117) #10
  br label %1027

962:                                              ; preds = %911, %908
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %15, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %16, align 4
  br label %1026

966:                                              ; preds = %913
  %967 = landingpad { ptr, i32 }
          cleanup
  %968 = extractvalue { ptr, i32 } %967, 0
  store ptr %968, ptr %15, align 8
  %969 = extractvalue { ptr, i32 } %967, 1
  store i32 %969, ptr %16, align 4
  br label %1025

970:                                              ; preds = %1018, %1016, %914
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %15, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %16, align 4
  br label %1024

974:                                              ; preds = %921
  %975 = landingpad { ptr, i32 }
          cleanup
  %976 = extractvalue { ptr, i32 } %975, 0
  store ptr %976, ptr %15, align 8
  %977 = extractvalue { ptr, i32 } %975, 1
  store i32 %977, ptr %16, align 4
  br label %1012

978:                                              ; preds = %923
  %979 = landingpad { ptr, i32 }
          cleanup
  %980 = extractvalue { ptr, i32 } %979, 0
  store ptr %980, ptr %15, align 8
  %981 = extractvalue { ptr, i32 } %979, 1
  store i32 %981, ptr %16, align 4
  br label %1006

982:                                              ; preds = %924
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %15, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %16, align 4
  br label %1005

986:                                              ; preds = %926
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %15, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %16, align 4
  br label %1004

990:                                              ; preds = %927
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %15, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %16, align 4
  br label %1003

994:                                              ; preds = %928
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %15, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %16, align 4
  br label %1002

998:                                              ; preds = %929
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %15, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #10
  br label %1002

1002:                                             ; preds = %998, %994
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #10
  br label %1003

1003:                                             ; preds = %1002, %990
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #10
  br label %1004

1004:                                             ; preds = %1003, %986
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  br label %1005

1005:                                             ; preds = %1004, %982
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #10
  br label %1006

1006:                                             ; preds = %1005, %978
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #10
  br label %1012

1007:                                             ; preds = %937, %935
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %15, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %16, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %122) #10
  br label %1012

1011:                                             ; preds = %939, %932
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %122) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %122) #10
  br label %1013

1012:                                             ; preds = %1007, %1006, %974
  call void @llvm.lifetime.end.p0(i64 20, ptr %122) #10
  br label %1024

1013:                                             ; preds = %1011, %917
  %1014 = load i32, ptr %7, align 4, !tbaa !5
  %1015 = icmp eq i32 %1014, 0
  br i1 %1015, label %1016, label %1020

1016:                                             ; preds = %1013
  %1017 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %104)
          to label %1018 unwind label %970

1018:                                             ; preds = %1016
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %1017, ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %1019 unwind label %970

1019:                                             ; preds = %1018
  br label %1020

1020:                                             ; preds = %1019, %1013
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #10
  call void @_ZN6langcc8StrSliceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %112) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %112) #10
  br label %1021

1021:                                             ; preds = %1020
  %1022 = load ptr, ptr %110, align 8, !tbaa !9
  %1023 = getelementptr inbounds %"struct.std::pair.109", ptr %1022, i32 1
  store ptr %1023, ptr %110, align 8, !tbaa !9
  br label %865

1024:                                             ; preds = %1012, %970
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  br label %1025

1025:                                             ; preds = %1024, %966
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #10
  br label %1026

1026:                                             ; preds = %1025, %962
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #10
  br label %1027

1027:                                             ; preds = %1026, %961
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #10
  call void @_ZN6langcc8StrSliceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #10
  br label %1028

1028:                                             ; preds = %1027, %944
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %112) #10
  br label %1029

1029:                                             ; preds = %1028, %940
  call void @llvm.lifetime.end.p0(i64 48, ptr %112) #10
  br label %1030

1030:                                             ; preds = %1029, %890
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1031

1031:                                             ; preds = %1030, %886
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  br label %1032

1032:                                             ; preds = %1031, %882
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  br label %1178

1033:                                             ; preds = %869
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #10
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129)
          to label %1034 unwind label %1053

1034:                                             ; preds = %1033
  %1035 = load i32, ptr %7, align 4, !tbaa !5
  %1036 = icmp eq i32 %1035, 0
  br i1 %1036, label %1037, label %1101

1037:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #10
  %1038 = load ptr, ptr %12, align 8, !tbaa !9
  %1039 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1038, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #10
  %1040 = load ptr, ptr %12, 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 %132)
          to label %1041 unwind label %1057

1041:                                             ; preds = %1037
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.77") align 4 %133)
          to label %1042 unwind label %1061

1042:                                             ; preds = %1041
  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 %131, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %1040, ptr noundef %132, ptr noundef %133)
          to label %1043 unwind label %1065

1043:                                             ; preds = %1042
  invoke void @_ZN6langcc13CppGenContext16gen_cpp_fun_callERKNS_6rc_ptrIN4lang2cc4Node2_TEEERKNS1_INS_3VecIS6_EEEE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %130, ptr noundef nonnull align 8 dereferenceable(264) %1039, ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull align 8 dereferenceable(16) %104)
          to label %1044 unwind label %1069

1044:                                             ; preds = %1043
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %133) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %132) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #10
  %1045 = load ptr, ptr %12, align 8, !tbaa !9
  %1046 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1045, i32 0, i32 0
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %1047 unwind label %1076

1047:                                             ; preds = %1044
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %1048 unwind label %1080

1048:                                             ; preds = %1047
  call void @llvm.lifetime.start.p0(i64 1, ptr %138) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef @.str.103, ptr noundef nonnull align 1 dereferenceable(1) %138)
          to label %1049 unwind label %1084

1049:                                             ; preds = %1048
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJS7_EEES7_RNS2_INS_3VecIS7_EEEENS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SH_DpRKT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %134, ptr noundef nonnull align 8 dereferenceable(264) %1046, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef %135, ptr noundef %136, ptr noundef %137, ptr noundef nonnull align 8 dereferenceable(16) %130)
          to label %1050 unwind label %1088

1050:                                             ; preds = %1049
  %1051 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %134)
          to label %1052 unwind label %1092

1052:                                             ; preds = %1050
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %135) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #10
  br label %1112

1053:                                             ; preds = %1033
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %15, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %16, align 4
  br label %1177

1057:                                             ; preds = %1037
  %1058 = landingpad { ptr, i32 }
          cleanup
  %1059 = extractvalue { ptr, i32 } %1058, 0
  store ptr %1059, ptr %15, align 8
  %1060 = extractvalue { ptr, i32 } %1058, 1
  store i32 %1060, ptr %16, align 4
  br label %1075

1061:                                             ; preds = %1041
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %15, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %16, align 4
  br label %1074

1065:                                             ; preds = %1042
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %15, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %16, align 4
  br label %1073

1069:                                             ; preds = %1043
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %15, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #10
  br label %1073

1073:                                             ; preds = %1069, %1065
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %133) #10
  br label %1074

1074:                                             ; preds = %1073, %1061
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %132) #10
  br label %1075

1075:                                             ; preds = %1074, %1057
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #10
  br label %1100

1076:                                             ; preds = %1044
  %1077 = landingpad { ptr, i32 }
          cleanup
  %1078 = extractvalue { ptr, i32 } %1077, 0
  store ptr %1078, ptr %15, align 8
  %1079 = extractvalue { ptr, i32 } %1077, 1
  store i32 %1079, ptr %16, align 4
  br label %1099

1080:                                             ; preds = %1047
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %15, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %16, align 4
  br label %1098

1084:                                             ; preds = %1048
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %15, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %16, align 4
  br label %1097

1088:                                             ; preds = %1049
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %15, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %16, align 4
  br label %1096

1092:                                             ; preds = %1050
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %15, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #10
  br label %1096

1096:                                             ; preds = %1092, %1088
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #10
  br label %1097

1097:                                             ; preds = %1096, %1084
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %138) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %138) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %136) #10
  br label %1098

1098:                                             ; preds = %1097, %1080
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %135) #10
  br label %1099

1099:                                             ; preds = %1098, %1076
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #10
  br label %1100

1100:                                             ; preds = %1099, %1075
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #10
  br label %1176

1101:                                             ; preds = %1034
  %1102 = load i32, ptr %7, align 4, !tbaa !5
  %1103 = icmp eq i32 %1102, 1
  br i1 %1103, label %1104, label %1111

1104:                                             ; preds = %1101
  %1105 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %48)
          to label %1106 unwind label %1107

1106:                                             ; preds = %1104
  br label %1111

1107:                                             ; preds = %1159, %1152, %1148, %1112, %1104
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %15, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %16, align 4
  br label %1176

1111:                                             ; preds = %1106, %1101
  br label %1112

1112:                                             ; preds = %1111, %1052
  %1113 = load ptr, ptr %12, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %1114 unwind label %1107

1114:                                             ; preds = %1112
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %1115 unwind label %1127

1115:                                             ; preds = %1114
  %1116 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %1113, ptr noundef %139, ptr noundef %140)
          to label %1117 unwind label %1131

1117:                                             ; preds = %1115
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #10
  br i1 %1116, label %1118, label %1156

1118:                                             ; preds = %1117
  %1119 = load i32, ptr %7, align 4, !tbaa !5
  %1120 = icmp eq i32 %1119, 0
  br i1 %1120, label %1121, label %1145

1121:                                             ; preds = %1118
  call void @llvm.lifetime.start.p0(i64 16, ptr %141) #10
  %1122 = load ptr, ptr %12, align 8, !tbaa !9
  %1123 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1122, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_S8_EEES7_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %141, ptr noundef nonnull align 8 dereferenceable(264) %1123, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %1124 unwind label %1136

1124:                                             ; preds = %1121
  %1125 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %141)
          to label %1126 unwind label %1140

1126:                                             ; preds = %1124
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #10
  br label %1155

1127:                                             ; preds = %1114
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %15, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %16, align 4
  br label %1135

1131:                                             ; preds = %1115
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %15, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #10
  br label %1135

1135:                                             ; preds = %1131, %1127
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #10
  br label %1176

1136:                                             ; preds = %1121
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %15, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %16, align 4
  br label %1144

1140:                                             ; preds = %1124
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %15, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #10
  br label %1144

1144:                                             ; preds = %1140, %1136
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #10
  br label %1176

1145:                                             ; preds = %1118
  %1146 = load i32, ptr %7, align 4, !tbaa !5
  %1147 = icmp eq i32 %1146, 1
  br i1 %1147, label %1148, label %1152

1148:                                             ; preds = %1145
  %1149 = load ptr, ptr %12, align 8, !tbaa !9
  %1150 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1149, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_A3_cEEES7_RNS2_INS_3VecIS7_EEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %142, ptr noundef nonnull align 8 dereferenceable(264) %1150, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %1151 unwind label %1107

1151:                                             ; preds = %1148
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #10
  br label %1154

1152:                                             ; preds = %1145
  invoke void @_ZN6langcc2AXEv() #11
          to label %1153 unwind label %1107

1153:                                             ; preds = %1152
  unreachable

1154:                                             ; preds = %1151
  br label %1155

1155:                                             ; preds = %1154, %1126
  br label %1156

1156:                                             ; preds = %1155, %1117
  %1157 = load i32, ptr %7, align 4, !tbaa !5
  %1158 = icmp eq i32 %1157, 0
  br i1 %1158, label %1159, label %1175

1159:                                             ; preds = %1156
  %1160 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %1161 unwind label %1107

1161:                                             ; preds = %1159
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #10
  %1162 = load ptr, ptr %12, align 8, !tbaa !9
  %1163 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1162, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA7_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %143, ptr noundef nonnull align 8 dereferenceable(264) %1163, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(7) @.str.92, ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 1 dereferenceable(2) @.str.93)
          to label %1164 unwind label %1166

1164:                                             ; preds = %1161
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %1160, ptr noundef nonnull align 8 dereferenceable(16) %143)
          to label %1165 unwind label %1170

1165:                                             ; preds = %1164
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %143) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #10
  br label %1175

1166:                                             ; preds = %1161
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %15, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %16, align 4
  br label %1174

1170:                                             ; preds = %1164
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %15, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %143) #10
  br label %1174

1174:                                             ; preds = %1170, %1166
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #10
  br label %1176

1175:                                             ; preds = %1165, %1156
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @_ZNSt4pairIN6langcc6rc_ptrINS0_3VecIS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESI_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #10
  br label %1181

1176:                                             ; preds = %1174, %1144, %1135, %1107, %1100
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #10
  br label %1177

1177:                                             ; preds = %1176, %1053
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #10
  br label %1178

1178:                                             ; preds = %1177, %1032
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @_ZNSt4pairIN6langcc6rc_ptrINS0_3VecIS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESI_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  br label %1179

1179:                                             ; preds = %1178, %878, %874
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #10
  br label %1180

1180:                                             ; preds = %1179, %870
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #10
  br label %1344

1181:                                             ; preds = %1175, %824
  call void @llvm.lifetime.start.p0(i64 16, ptr %144) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %144)
          to label %1182 unwind label %1193

1182:                                             ; preds = %1181
  call void @llvm.lifetime.start.p0(i64 20, ptr %145) #10
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %145, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %1183 unwind label %1197

1183:                                             ; preds = %1182
  %1184 = load ptr, ptr %12, align 8, !tbaa !9
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %146, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %1185 unwind label %1201

1185:                                             ; preds = %1183
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %1186 unwind label %1205

1186:                                             ; preds = %1185
  %1187 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %1184, ptr noundef %146, ptr noundef %147)
          to label %1188 unwind label %1209

1188:                                             ; preds = %1186
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #10
  br i1 %1187, label %1189, label %1223

1189:                                             ; preds = %1188
  call void @llvm.lifetime.start.p0(i64 20, ptr %148) #10
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %148, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %1190 unwind label %1214

1190:                                             ; preds = %1189
  %1191 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %145, ptr noundef nonnull align 4 dereferenceable(20) %148)
          to label %1192 unwind label %1218

1192:                                             ; preds = %1190
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %148) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %148) #10
  br label %1223

1193:                                             ; preds = %1181
  %1194 = landingpad { ptr, i32 }
          cleanup
  %1195 = extractvalue { ptr, i32 } %1194, 0
  store ptr %1195, ptr %15, align 8
  %1196 = extractvalue { ptr, i32 } %1194, 1
  store i32 %1196, ptr %16, align 4
  br label %1343

1197:                                             ; preds = %1182
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %15, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %16, align 4
  br label %1342

1201:                                             ; preds = %1265, %1261, %1247, %1183
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %15, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %16, align 4
  br label %1341

1205:                                             ; preds = %1185
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %15, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %16, align 4
  br label %1213

1209:                                             ; preds = %1186
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %15, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #10
  br label %1213

1213:                                             ; preds = %1209, %1205
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #10
  br label %1341

1214:                                             ; preds = %1189
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %15, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %16, align 4
  br label %1222

1218:                                             ; preds = %1190
  %1219 = landingpad { ptr, i32 }
          cleanup
  %1220 = extractvalue { ptr, i32 } %1219, 0
  store ptr %1220, ptr %15, align 8
  %1221 = extractvalue { ptr, i32 } %1219, 1
  store i32 %1221, ptr %16, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %148) #10
  br label %1222

1222:                                             ; preds = %1218, %1214
  call void @llvm.lifetime.end.p0(i64 20, ptr %148) #10
  br label %1341

1223:                                             ; preds = %1192, %1188
  %1224 = load i32, ptr %7, align 4, !tbaa !5
  %1225 = icmp eq i32 %1224, 1
  br i1 %1225, label %1226, label %1247

1226:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 20, ptr %149) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %150) #10
  %1227 = load ptr, ptr %12, align 8, !tbaa !9
  %1228 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1227, i32 0, i32 0
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA5_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %150, ptr noundef nonnull align 8 dereferenceable(264) %1228, ptr noundef nonnull align 1 dereferenceable(5) @.str.18)
          to label %1229 unwind label %1233

1229:                                             ; preds = %1226
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind writable sret(%"struct.langcc::Option::_T.117") align 4 %149, ptr noundef nonnull align 8 dereferenceable(16) %150)
          to label %1230 unwind label %1237

1230:                                             ; preds = %1229
  %1231 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %145, ptr noundef nonnull align 4 dereferenceable(20) %149)
          to label %1232 unwind label %1241

1232:                                             ; preds = %1230
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %149) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %149) #10
  br label %1247

1233:                                             ; preds = %1226
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %15, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %16, align 4
  br label %1246

1237:                                             ; preds = %1229
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %15, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %16, align 4
  br label %1245

1241:                                             ; preds = %1230
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %15, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %16, align 4
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %149) #10
  br label %1245

1245:                                             ; preds = %1241, %1237
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #10
  br label %1246

1246:                                             ; preds = %1245, %1233
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %149) #10
  br label %1341

1247:                                             ; preds = %1232, %1223
  %1248 = load ptr, ptr %12, align 8, !tbaa !9
  %1249 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1248, i32 0, i32 0
  %1250 = getelementptr inbounds %"struct.langcc::CppGenContext", ptr %1249, i32 0, i32 2
  %1251 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %1250)
          to label %1252 unwind label %1201

1252:                                             ; preds = %1247
  call void @llvm.lifetime.start.p0(i64 16, ptr %151) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #10
  %1253 = load ptr, ptr %12, align 8, !tbaa !9
  %1254 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1253, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %154) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %154)
          to label %1255 unwind label %1283

1255:                                             ; preds = %1252
  invoke void @_ZN6langcc13CppGenContext22gen_cpp_fun_proto_declERKNS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEESB_RKNS_6Option2_TIS7_EERKNS1_INS2_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %153, ptr noundef nonnull align 8 dereferenceable(264) %1254, ptr noundef nonnull align 8 dereferenceable(16) %144, ptr noundef nonnull align 8 dereferenceable(16) %154, ptr noundef nonnull align 4 dereferenceable(20) %145, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %1256 unwind label %1287

1256:                                             ; preds = %1255
  %1257 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
          to label %1258 unwind label %1291

1258:                                             ; preds = %1256
  invoke void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.125") align 8 %152, ptr noundef nonnull align 8 dereferenceable(136) %1257)
          to label %1259 unwind label %1291

1259:                                             ; preds = %1258
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Decl2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %151, ptr noundef nonnull align 8 dereferenceable(16) %152)
          to label %1260 unwind label %1295

1260:                                             ; preds = %1259
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %1251, ptr noundef nonnull align 8 dereferenceable(16) %151)
          to label %1261 unwind label %1299

1261:                                             ; preds = %1260
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %151) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #10
  %1262 = load ptr, ptr %12, align 8, !tbaa !9
  %1263 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1262, i32 0, i32 0
  %1264 = invoke noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %1265 unwind label %1201

1265:                                             ; preds = %1261
  %1266 = invoke noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %1264)
          to label %1267 unwind label %1201

1267:                                             ; preds = %1265
  %1268 = icmp sgt i64 %1266, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #10
  %1269 = load ptr, ptr %12, align 8, !tbaa !9
  %1270 = getelementptr inbounds %"struct.langcc::DataCompileContext", ptr %1269, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %157) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %157)
          to label %1271 unwind label %1307

1271:                                             ; preds = %1267
  call void @llvm.lifetime.start.p0(i64 16, ptr %158) #10
  %1272 = load i32, ptr %11, align 4, !tbaa !11
  %1273 = load ptr, ptr %12, align 8, !tbaa !9
  invoke void @_ZN6langcc17inline_maybe_modsENS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %158, i32 noundef %1272, ptr noundef nonnull align 8 dereferenceable(376) %1273)
          to label %1274 unwind label %1311

1274:                                             ; preds = %1271
  call void @llvm.lifetime.start.p0(i64 16, ptr %159) #10
  invoke void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Expr2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %159, ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %1275 unwind label %1315

1275:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.12") align 8 %160)
          to label %1276 unwind label %1319

1276:                                             ; preds = %1275
  invoke void @_ZN6langcc13CppGenContext16gen_cpp_fun_bodyERKNS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEESB_SB_RKNS_6Option2_TIS7_EERKS7_SB_SB_SB_b(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.76") align 8 %156, ptr noundef nonnull align 8 dereferenceable(264) %1270, ptr noundef nonnull align 8 dereferenceable(16) %144, ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef nonnull align 4 dereferenceable(20) %145, ptr noundef nonnull align 8 dereferenceable(16) %159, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull align 8 dereferenceable(16) %47, i1 noundef zeroext false)
          to label %1277 unwind label %1323

1277:                                             ; preds = %1276
  %1278 = invoke noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %156)
          to label %1279 unwind label %1327

1279:                                             ; preds = %1277
  invoke void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.125") align 8 %155, ptr noundef nonnull align 8 dereferenceable(136) %1278)
          to label %1280 unwind label %1327

1280:                                             ; preds = %1279
  invoke void @_ZN6langcc13CppGenContext8push_defEbNS_6rc_ptrIN4lang2cc4Node4Decl2_TEEE(ptr noundef nonnull align 8 dereferenceable(264) %1263, i1 noundef zeroext %1268, ptr noundef %155)
          to label %1281 unwind label %1331

1281:                                             ; preds = %1280
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %145) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %145) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  br label %1282

1282:                                             ; preds = %1281, %164
  ret void

1283:                                             ; preds = %1252
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %15, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %16, align 4
  br label %1306

1287:                                             ; preds = %1255
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %15, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %16, align 4
  br label %1305

1291:                                             ; preds = %1258, %1256
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %15, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %16, align 4
  br label %1304

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

1299:                                             ; preds = %1260
  %1300 = landingpad { ptr, i32 }
          cleanup
  %1301 = extractvalue { ptr, i32 } %1300, 0
  store ptr %1301, ptr %15, align 8
  %1302 = extractvalue { ptr, i32 } %1300, 1
  store i32 %1302, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %151) #10
  br label %1303

1303:                                             ; preds = %1299, %1295
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #10
  br label %1304

1304:                                             ; preds = %1303, %1291
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #10
  br label %1305

1305:                                             ; preds = %1304, %1287
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #10
  br label %1306

1306:                                             ; preds = %1305, %1283
  call void @llvm.lifetime.end.p0(i64 16, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #10
  br label %1341

1307:                                             ; preds = %1267
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %15, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %16, align 4
  br label %1340

1311:                                             ; preds = %1271
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %15, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %16, align 4
  br label %1339

1315:                                             ; preds = %1274
  %1316 = landingpad { ptr, i32 }
          cleanup
  %1317 = extractvalue { ptr, i32 } %1316, 0
  store ptr %1317, ptr %15, align 8
  %1318 = extractvalue { ptr, i32 } %1316, 1
  store i32 %1318, ptr %16, align 4
  br label %1338

1319:                                             ; preds = %1275
  %1320 = landingpad { ptr, i32 }
          cleanup
  %1321 = extractvalue { ptr, i32 } %1320, 0
  store ptr %1321, ptr %15, align 8
  %1322 = extractvalue { ptr, i32 } %1320, 1
  store i32 %1322, ptr %16, align 4
  br label %1337

1323:                                             ; preds = %1276
  %1324 = landingpad { ptr, i32 }
          cleanup
  %1325 = extractvalue { ptr, i32 } %1324, 0
  store ptr %1325, ptr %15, align 8
  %1326 = extractvalue { ptr, i32 } %1324, 1
  store i32 %1326, ptr %16, align 4
  br label %1336

1327:                                             ; preds = %1279, %1277
  %1328 = landingpad { ptr, i32 }
          cleanup
  %1329 = extractvalue { ptr, i32 } %1328, 0
  store ptr %1329, ptr %15, align 8
  %1330 = extractvalue { ptr, i32 } %1328, 1
  store i32 %1330, ptr %16, align 4
  br label %1335

1331:                                             ; preds = %1280
  %1332 = landingpad { ptr, i32 }
          cleanup
  %1333 = extractvalue { ptr, i32 } %1332, 0
  store ptr %1333, ptr %15, align 8
  %1334 = extractvalue { ptr, i32 } %1332, 1
  store i32 %1334, ptr %16, align 4
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #10
  br label %1335

1335:                                             ; preds = %1331, %1327
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #10
  br label %1336

1336:                                             ; preds = %1335, %1323
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #10
  br label %1337

1337:                                             ; preds = %1336, %1319
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #10
  br label %1338

1338:                                             ; preds = %1337, %1315
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158) #10
  br label %1339

1339:                                             ; preds = %1338, %1311
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #10
  br label %1340

1340:                                             ; preds = %1339, %1307
  call void @llvm.lifetime.end.p0(i64 16, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #10
  br label %1341

1341:                                             ; preds = %1340, %1306, %1246, %1222, %1213, %1201
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %145) #10
  br label %1342

1342:                                             ; preds = %1341, %1197
  call void @llvm.lifetime.end.p0(i64 20, ptr %145) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #10
  br label %1343

1343:                                             ; preds = %1342, %1193
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #10
  br label %1344

1344:                                             ; preds = %1343, %1180, %848
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #10
  br label %1345

1345:                                             ; preds = %1344, %468
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #10
  br label %1346

1346:                                             ; preds = %1345, %424
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #10
  br label %1347

1347:                                             ; preds = %1346, %412
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #10
  br label %1348

1348:                                             ; preds = %1347, %411
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  br label %1349

1349:                                             ; preds = %1348, %399
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  br label %1350

1350:                                             ; preds = %1349, %395
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  br label %1351

1351:                                             ; preds = %1350, %391
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #10
  br label %1352

1352:                                             ; preds = %1351, %390
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #10
  br label %1353

1353:                                             ; preds = %1352, %354
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #10
  br label %1354

1354:                                             ; preds = %1353, %313, %301
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  br label %1355

1355:                                             ; preds = %1354, %300, %288
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #10
  br label %1356

1356:                                             ; preds = %1355, %284
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  br label %1357

1357:                                             ; preds = %1356, %209, %197
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  br label %1358

1358:                                             ; preds = %1357, %193
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  br label %1359

1359:                                             ; preds = %1358
  %1360 = load ptr, ptr %15, align 8
  %1361 = load i32, ptr %16, align 4
  %1362 = insertvalue { ptr, i32 } poison, ptr %1360, 0
  %1363 = insertvalue { ptr, i32 } %1362, i32 %1361, 1
  resume { ptr, i32 } %1363
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6langcc3SetINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEE8containsERKSA_(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cA15_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS9_A3_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(15), 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)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(200)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(200)) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48)) #1

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

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

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

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

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

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

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

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

declare void @_ZN4lang2cc4Node2_T13as_SwitchCaseEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.124") align 8, ptr noundef nonnull align 8 dereferenceable(136)) #9

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48)) #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext16gen_cpp_fun_callERKNS_6rc_ptrIN4lang2cc4Node2_TEEERKNS1_INS_3VecIS6_EEEE(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(16)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJS7_EEES7_RNS2_INS_3VecIS7_EEEENS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SH_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(16)) #3 align 2

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

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

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

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

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

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

declare void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.125") align 8, ptr noundef nonnull align 8 dereferenceable(136)) #9

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext8push_defEbNS_6rc_ptrIN4lang2cc4Node4Decl2_TEEE(ptr noundef nonnull align 8 dereferenceable(264), i1 noundef zeroext, ptr noundef) #3 align 2

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #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 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { "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 #10 = { nounwind }
attributes #11 = { 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, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !10, i64 0, !17, i64 8}
!17 = !{!"long", !7, i64 0}
!18 = !{!16, !17, i64 8}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!22, !14, i64 177}
!22 = !{!"_ZTSN4lang4data4Node5Entry5Field2_TE", !23, i64 0, !35, i64 144, !14, i64 176, !14, i64 177, !37, i64 184}
!23 = !{!"_ZTSN4lang4data4Node5Entry2_TE", !24, i64 0, !34, i64 136}
!24 = !{!"_ZTSN4lang4data4Node2_TE", !25, i64 8, !28, i64 48, !29, i64 64, !17, i64 72, !30, i64 80, !14, i64 88, !17, i64 96, !32, i64 104, !33, i64 120}
!25 = !{!"_ZTSN6langcc8hash_objE", !26, i64 0}
!26 = !{!"_ZTSN6langcc6Option2_TINS_7HashValEEE", !27, i64 0, !7, i64 4}
!27 = !{!"_ZTSN6langcc6Option2_WE", !7, i64 0}
!28 = !{!"_ZTSN6langcc24enable_rc_from_this_polyE", !10, i64 0, !10, i64 8}
!29 = !{!"_ZTSN4lang4data4Node2_WE", !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 = !{!"_ZTSN4lang4data4Node5Entry2_WE", !7, i64 0}
!35 = !{!"_ZTSN6langcc8StrSliceE", !36, i64 0, !17, i64 16, !17, i64 24}
!36 = !{!"_ZTSN6langcc6rc_ptrINS_3VecIcEEEE", !10, i64 0, !10, i64 8}
!37 = !{!"_ZTSN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEE", !10, i64 0, !10, 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::rc_ptr.76" = type { ptr, ptr }
%"struct.langcc::rc_ptr.78" = type { ptr, ptr }
%"struct.langcc::Option::_T.72" = type { i32, [16 x i8] }
%"struct.langcc::Option::_T.77" = type { i32, [16 x i8] }
%"struct.std::pair.91" = type { %"struct.langcc::rc_ptr.93", %"struct.langcc::rc_ptr.93" }
%"struct.langcc::rc_ptr.93" = 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.33" = 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.12" = type { ptr, ptr }
%"struct.langcc::MapIterator.121" = type { ptr, i64 }
%"struct.langcc::rc_ptr.124" = type { ptr, ptr }
%"struct.std::pair.109" = type { %"class.std::__cxx11::basic_string", %"struct.langcc::rc_ptr.104" }
%"struct.langcc::rc_ptr.104" = type { ptr, ptr }
%"struct.langcc::StrSlice" = type { %"struct.langcc::rc_ptr.7", i64, i64 }
%"struct.langcc::rc_ptr.7" = type { ptr, ptr }
%"struct.langcc::rc_ptr.46" = type { ptr, ptr }
%"struct.langcc::rc_ptr.118" = type { ptr, ptr }
%"struct.langcc::rc_ptr.125" = type { ptr, ptr }

@.str.18 = external hidden unnamed_addr constant [5 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.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.57 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6langcc26dt_extract_def_fields_fullENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.91") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(376)) local_unnamed_addr #2

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

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

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

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

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

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

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

133:                                              ; preds = %6
  %134 = tail call noundef ptr @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  tail call void @_ZN6langcc3SetINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEE6insertERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %134, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #10
  %135 = getelementptr inbounds i8, ptr %5, i64 296
  %136 = tail call noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_IN4lang4data4Node4Decl4Data2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %135)
  %137 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_IN4lang4data4Node4Decl4Data2_TEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %136, ptr noundef nonnull align 8 dereferenceable(16) %1)
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %137)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  %138 = call noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_IN4lang4data4Node4Decl4Data2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %135)
  %139 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_IN4lang4data4Node4Decl4Data2_TEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %138, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %140 unwind label %152

140:                                              ; preds = %133
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %139)
          to label %141 unwind label %152

141:                                              ; preds = %140
  %142 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %143 = getelementptr inbounds i8, ptr %142, i64 180
  %144 = call noundef zeroext i1 @_ZNK6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang4data4Node5Param2_TEEEEEEEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(20) %143)
  br i1 %144, label %149, label %145

145:                                              ; preds = %141
  %146 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %147 = getelementptr inbounds i8, ptr %146, i64 180
  %148 = call noundef zeroext i1 @_ZNK6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang4data4Node5Param2_TEEEEEEEE7is_someEv(ptr noundef nonnull align 4 dereferenceable(20) %147)
  br i1 %148, label %149, label %159

149:                                              ; preds = %145, %141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %150 unwind label %154

150:                                              ; preds = %149
  invoke void @_ZN6langcc2AXIJEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpT_(ptr noundef nonnull align 8 dereferenceable(32) %9) #11
          to label %151 unwind label %156

151:                                              ; preds = %150
  unreachable

152:                                              ; preds = %140, %133
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %693

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

156:                                              ; preds = %150
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #10
  br label %158

158:                                              ; preds = %156, %154
  %.pn336 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #10
  br label %692

159:                                              ; preds = %145
  %160 = getelementptr inbounds i8, ptr %5, i64 264
  %161 = call noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_INS1_IS8_SA_EEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %160)
  %162 = invoke noundef zeroext i1 @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_INS0_IS8_SA_EEEEE12contains_keyERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %161, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %163 unwind label %189

163:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.72") align 4 %12)
          to label %164 unwind label %191

164:                                              ; preds = %163
  invoke void @_ZN6langcc4NoneINS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEEEENS_6Option2_TIT_EEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.77") align 4 %13)
          to label %165 unwind label %193

165:                                              ; preds = %164
  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 %11, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %12, ptr noundef nonnull %13)
          to label %166 unwind label %195

166:                                              ; preds = %165
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %13) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %12) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #10
  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 %15)
          to label %167 unwind label %198

167:                                              ; preds = %166
  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 %16)
          to label %168 unwind label %200

168:                                              ; preds = %167
  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 %14, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %15, ptr noundef nonnull %16)
          to label %169 unwind label %202

169:                                              ; preds = %168
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %16) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %15) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %21, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %170 unwind label %205

170:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.84, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %171 unwind label %207

171:                                              ; preds = %170
  invoke void @_ZN6langcc13CppGenContext12gen_id_freshENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEES8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull %20, ptr noundef nonnull %22)
          to label %172 unwind label %209

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #10
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr nonnull %19, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %173 unwind label %211

173:                                              ; preds = %172
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %17, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %174 unwind label %213

174:                                              ; preds = %173
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %175 unwind label %217

175:                                              ; preds = %174
  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 %27, i32 noundef %0, ptr noundef nonnull %28, i1 noundef zeroext true)
          to label %176 unwind label %219

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #10
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr nonnull %27, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %177 unwind label %221

177:                                              ; preds = %176
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %25, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %178 unwind label %223

178:                                              ; preds = %177
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #10
  invoke void @_ZN6langcc18name_to_cpp_directERKNS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_13CppGenContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.78") align 8 %30, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(264) %5)
          to label %179 unwind label %226

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %31)
          to label %180 unwind label %228

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %32)
          to label %181 unwind label %230

181:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.85, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %182 unwind label %232

182:                                              ; preds = %181
  invoke void @_ZN6langcc13CppGenContext17gen_cpp_param_accINS_6rc_ptrIN4lang2cc4Node2_TEEEEES7_RNS2_INS_3VecIS7_EEEERKNS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKT_RKSH_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %33, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %183 unwind label %234

183:                                              ; preds = %182
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #10
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA15_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS9_A3_cEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %36, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 1 dereferenceable(15) @.str.86, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 1 dereferenceable(3) @.str.87)
          to label %184 unwind label %237

184:                                              ; preds = %183
  %185 = icmp eq i32 %0, 1
  br i1 %185, label %186, label %241

186:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #10
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA20_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %37, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(20) @.str.88, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 1 dereferenceable(3) @.str.87)
          to label %187 unwind label %239

187:                                              ; preds = %186
  %188 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %37)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #10
  br label %241

189:                                              ; preds = %159
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %692

191:                                              ; preds = %163
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %691

193:                                              ; preds = %164
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %197

195:                                              ; preds = %165
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %13) #10
  br label %197

197:                                              ; preds = %195, %193
  %.pn = phi { ptr, i32 } [ %196, %195 ], [ %194, %193 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %12) #10
  br label %691

198:                                              ; preds = %166
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %690

200:                                              ; preds = %167
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %168
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %16) #10
  br label %204

204:                                              ; preds = %202, %200
  %.pn214 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %15) #10
  br label %690

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

207:                                              ; preds = %170
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %215

209:                                              ; preds = %171
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit344

211:                                              ; preds = %172
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit344.loopexit

213:                                              ; preds = %173
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  br label %.loopexit344.loopexit

.loopexit344.loopexit:                            ; preds = %213, %211
  %.pn216 = phi { ptr, i32 } [ %214, %213 ], [ %212, %211 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %.loopexit344

.loopexit344:                                     ; preds = %.loopexit344.loopexit, %209
  %.pn216.pn = phi { ptr, i32 } [ %210, %209 ], [ %.pn216, %.loopexit344.loopexit ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  br label %215

215:                                              ; preds = %.loopexit344, %207
  %.pn216.pn.pn = phi { ptr, i32 } [ %.pn216.pn, %.loopexit344 ], [ %208, %207 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #10
  br label %216

216:                                              ; preds = %215, %205
  %.pn216.pn.pn.pn = phi { ptr, i32 } [ %.pn216.pn.pn, %215 ], [ %206, %205 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  br label %689

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

219:                                              ; preds = %175
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit343

221:                                              ; preds = %176
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit343.loopexit

223:                                              ; preds = %177
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  br label %.loopexit343.loopexit

.loopexit343.loopexit:                            ; preds = %223, %221
  %.pn221 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %.loopexit343

.loopexit343:                                     ; preds = %.loopexit343.loopexit, %219
  %.pn221.pn = phi { ptr, i32 } [ %220, %219 ], [ %.pn221, %.loopexit343.loopexit ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #10
  br label %225

225:                                              ; preds = %217, %.loopexit343
  %.pn221.pn.pn = phi { ptr, i32 } [ %.pn221.pn, %.loopexit343 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #10
  br label %688

226:                                              ; preds = %178
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %687

228:                                              ; preds = %179
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %686

230:                                              ; preds = %180
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %685

232:                                              ; preds = %181
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %182
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  br label %236

236:                                              ; preds = %234, %232
  %.pn225 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  br label %684

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

239:                                              ; preds = %186
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #10
  br label %682

241:                                              ; preds = %187, %184
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.89, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %242 unwind label %265

242:                                              ; preds = %241
  invoke void @_ZN6langcc13CppGenContext17gen_cpp_param_accINS_6rc_ptrIN4lang2cc4Node2_TEEEEES7_RNS2_INS_3VecIS7_EEEERKNS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERKT_RKSH_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %38, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %243 unwind label %267

243:                                              ; preds = %242
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  br i1 %162, label %244, label %434

244:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %41)
          to label %245 unwind label %270

245:                                              ; preds = %244
  %246 = call noundef ptr @_ZN6langcc6rc_ptrINS_3MapINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS0_INS1_IS8_SA_EEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %160)
  %247 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc3MapINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS1_INS0_IS8_SA_EEEEEixERKSA_(ptr noundef nonnull align 8 dereferenceable(200) %246, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %248 unwind label %272

248:                                              ; preds = %245
  %249 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZN6langcc6rc_ptrINS_3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_INS_3VecIS7_EEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %247)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #10
  %250 = invoke { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(200) %249)
          to label %251 unwind label %274

251:                                              ; preds = %248
  %252 = extractvalue { ptr, i64 } %250, 0
  store ptr %252, ptr %42, align 8
  %253 = getelementptr inbounds i8, ptr %42, i64 8
  %254 = extractvalue { ptr, i64 } %250, 1
  store i64 %254, ptr %253, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #10
  %255 = call { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(200) %249)
  %256 = extractvalue { ptr, i64 } %255, 0
  store ptr %256, ptr %43, align 8
  %257 = getelementptr inbounds i8, ptr %43, i64 8
  %258 = extractvalue { ptr, i64 } %255, 1
  store i64 %258, ptr %257, align 8
  %259 = icmp eq i32 %0, 0
  br label %260

260:                                              ; preds = %393, %251
  %261 = invoke noundef zeroext i1 @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEneERKSB_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %262 unwind label %276

262:                                              ; preds = %260
  br i1 %261, label %278, label %263

263:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #10
  %264 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #10
  invoke void @_ZN6langcc13CppGenContext2qqIJA11_cA27_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %79, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(11) @.str.94, ptr noundef nonnull align 1 dereferenceable(27) @.str.98)
          to label %416 unwind label %422

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

267:                                              ; preds = %242
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  br label %269

269:                                              ; preds = %267, %265
  %.pn227 = phi { ptr, i32 } [ %268, %267 ], [ %266, %265 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  br label %681

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

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

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

276:                                              ; preds = %393, %260
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %414

278:                                              ; preds = %262
  %279 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %280 unwind label %299

280:                                              ; preds = %278
  %281 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %279) #10
  %282 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %279) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %283 unwind label %301

283:                                              ; preds = %280
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %282)
          to label %284 unwind label %303

284:                                              ; preds = %283
  invoke void @_ZN6langcc17data_gen_xform_fnENS_7XformTyENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_RNS1_INS_3SetISA_EEEENS_10HeaderModeERNS_18DataCompileContextE(i32 noundef %0, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(376) %5)
          to label %285 unwind label %305

285:                                              ; preds = %284
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %46)
          to label %286 unwind label %308

286:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47)
  br i1 %259, label %287, label %343

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %288 unwind label %310

288:                                              ; preds = %287
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA5_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %50, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.57)
          to label %289 unwind label %312

289:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.58, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %290 unwind label %314

290:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %291 unwind label %316

291:                                              ; preds = %290
  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 %53, i32 noundef 0, ptr noundef nonnull %54, i1 noundef zeroext true)
          to label %292 unwind label %318

292:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %281)
          to label %293 unwind label %320

293:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #10
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr nonnull %59, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %294 unwind label %322

294:                                              ; preds = %293
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %57, ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %295 unwind label %324

295:                                              ; preds = %294
  invoke void @_ZN6langcc4SomeINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.72") align 4 %56, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %296 unwind label %326

296:                                              ; preds = %295
  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 %61)
          to label %297 unwind label %328

297:                                              ; preds = %296
  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 %55, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %56, ptr noundef nonnull %61)
          to label %298 unwind label %330

298:                                              ; preds = %297
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cS7_A3_cS7_SF_SE_S7_SE_EEES7_RNS2_INS_3VecIS7_EEEENS2_INSG_ISD_EEEET_SD_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %48, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %381 unwind label %332

299:                                              ; preds = %278
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %414

301:                                              ; preds = %280
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %414

303:                                              ; preds = %283
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %307

305:                                              ; preds = %284
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  br label %307

307:                                              ; preds = %305, %303
  %.pn284 = phi { ptr, i32 } [ %306, %305 ], [ %304, %303 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #10
  br label %414

308:                                              ; preds = %285
  %309 = landingpad { ptr, i32 }
          cleanup
  br label %413

310:                                              ; preds = %287
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %342

312:                                              ; preds = %288
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %341

314:                                              ; preds = %289
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %340

316:                                              ; preds = %290
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %339

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

320:                                              ; preds = %292
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

322:                                              ; preds = %293
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.loopexit

324:                                              ; preds = %294
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %337

326:                                              ; preds = %295
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %336

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

330:                                              ; preds = %297
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %334

332:                                              ; preds = %298
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #10
  br label %334

334:                                              ; preds = %332, %330
  %.pn295 = phi { ptr, i32 } [ %333, %332 ], [ %331, %330 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %61) #10
  br label %335

335:                                              ; preds = %334, %328
  %.pn295.pn = phi { ptr, i32 } [ %.pn295, %334 ], [ %329, %328 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %56) #10
  br label %336

336:                                              ; preds = %335, %326
  %.pn295.pn.pn = phi { ptr, i32 } [ %.pn295.pn, %335 ], [ %327, %326 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  br label %337

337:                                              ; preds = %336, %324
  %.pn295.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn, %336 ], [ %325, %324 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #10
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %337, %322
  %.pn295.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn, %337 ], [ %323, %322 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %320
  %.pn295.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %321, %320 ], [ %.pn295.pn.pn.pn.pn, %.loopexit.loopexit ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  br label %338

338:                                              ; preds = %.loopexit, %318
  %.pn295.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn.pn.pn, %.loopexit ], [ %319, %318 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #10
  br label %339

339:                                              ; preds = %338, %316
  %.pn295.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn.pn.pn.pn, %338 ], [ %317, %316 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  br label %340

340:                                              ; preds = %339, %314
  %.pn295.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn.pn.pn.pn.pn, %339 ], [ %315, %314 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #10
  br label %341

341:                                              ; preds = %340, %312
  %.pn295.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn.pn.pn.pn.pn.pn, %340 ], [ %313, %312 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #10
  br label %342

342:                                              ; preds = %341, %310
  %.pn295.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn295.pn.pn.pn.pn.pn.pn.pn.pn.pn, %341 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #10
  br label %412

343:                                              ; preds = %286
  br i1 %185, label %344, label %377

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %345 unwind label %353

345:                                              ; preds = %344
  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 %63, i32 noundef 1, ptr noundef nonnull %64, i1 noundef zeroext true)
          to label %346 unwind label %355

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %281)
          to label %347 unwind label %357

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #10
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ESt16initializer_listIS5_ERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr nonnull %69, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %348 unwind label %359

348:                                              ; preds = %347
  invoke void @_ZN6langcc8name_litERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.0") align 8 %67, ptr noundef nonnull align 8 dereferenceable(24) %68)
          to label %349 unwind label %361

349:                                              ; preds = %348
  invoke void @_ZN6langcc4SomeINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEENS_6Option2_TIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.72") align 4 %66, ptr noundef nonnull align 8 dereferenceable(16) %67)
          to label %350 unwind label %363

350:                                              ; preds = %349
  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 %71)
          to label %351 unwind label %365

351:                                              ; preds = %350
  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 %65, i32 noundef 12, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %66, ptr noundef nonnull %71)
          to label %352 unwind label %367

352:                                              ; preds = %351
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA2_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cSE_SF_S8_SE_SF_EEESE_RNS9_INS_3VecISE_EEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %62, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 1 dereferenceable(3) @.str.91, ptr noundef nonnull align 1 dereferenceable(2) @.str.44, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %379 unwind label %369

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

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

357:                                              ; preds = %346
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit341

359:                                              ; preds = %347
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit341.loopexit

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

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

365:                                              ; preds = %350
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %372

367:                                              ; preds = %351
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %371

369:                                              ; preds = %352
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #10
  br label %371

371:                                              ; preds = %369, %367
  %.pn286 = phi { ptr, i32 } [ %370, %369 ], [ %368, %367 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %71) #10
  br label %372

372:                                              ; preds = %371, %365
  %.pn286.pn = phi { ptr, i32 } [ %.pn286, %371 ], [ %366, %365 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %66) #10
  br label %373

373:                                              ; preds = %372, %363
  %.pn286.pn.pn = phi { ptr, i32 } [ %.pn286.pn, %372 ], [ %364, %363 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  br label %374

374:                                              ; preds = %373, %361
  %.pn286.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn, %373 ], [ %362, %361 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #10
  br label %.loopexit341.loopexit

.loopexit341.loopexit:                            ; preds = %374, %359
  %.pn286.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn, %374 ], [ %360, %359 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  br label %.loopexit341

.loopexit341:                                     ; preds = %.loopexit341.loopexit, %357
  %.pn286.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %358, %357 ], [ %.pn286.pn.pn.pn.pn, %.loopexit341.loopexit ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #10
  br label %375

375:                                              ; preds = %.loopexit341, %355
  %.pn286.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn, %.loopexit341 ], [ %356, %355 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #10
  br label %376

376:                                              ; preds = %375, %353
  %.pn286.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn, %375 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #10
  br label %412

.loopexit342:                                     ; preds = %381
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %412

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

377:                                              ; preds = %343
  invoke void @_ZN6langcc2AXEv() #11
          to label %378 unwind label %.loopexit.split-lp

378:                                              ; preds = %377
  unreachable

379:                                              ; preds = %352
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %71) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %66) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #10
  %380 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %33)
  br label %384

381:                                              ; preds = %298
  %382 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %48)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %61) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %56) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #10
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #10
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJA7_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cEEES8_RNS3_INS_3VecIS8_EEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %72, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(7) @.str.92, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 1 dereferenceable(2) @.str.93)
          to label %383 unwind label %.loopexit342

383:                                              ; preds = %381
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #10
  br label %384

384:                                              ; preds = %379, %383
  %385 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #10
  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 %77)
          to label %386 unwind label %395

386:                                              ; preds = %384
  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 %78)
          to label %387 unwind label %397

387:                                              ; preds = %386
  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 %76, i32 noundef 7, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %77, ptr noundef nonnull %78)
          to label %388 unwind label %399

388:                                              ; preds = %387
  %389 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %46)
  invoke void @_ZN6langcc13CppGenContext2qqIJA11_cA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA4_cNS_3VecIS9_EEA9_cEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %75, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(11) @.str.94, ptr noundef nonnull align 1 dereferenceable(5) @.str.95, ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 1 dereferenceable(3) @.str.82, ptr noundef nonnull align 8 dereferenceable(32) %281, ptr noundef nonnull align 1 dereferenceable(4) @.str.96, ptr noundef nonnull align 8 dereferenceable(64) %389, ptr noundef nonnull align 1 dereferenceable(9) @.str.97)
          to label %390 unwind label %401

390:                                              ; preds = %388
  %391 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  invoke void @_ZN4lang2cc4Node2_T13as_SwitchCaseEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.124") align 8 %74, ptr noundef nonnull align 8 dereferenceable(136) %391)
          to label %392 unwind label %403

392:                                              ; preds = %390
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_10SwitchCase2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %74)
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %385, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %393 unwind label %405

393:                                              ; preds = %392
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node10SwitchCase2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %78) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %77) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #10
  %394 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc11MapIteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEEppEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
          to label %260 unwind label %276

395:                                              ; preds = %384
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %411

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

399:                                              ; preds = %387
  %400 = landingpad { ptr, i32 }
          cleanup
  br label %409

401:                                              ; preds = %388
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %408

403:                                              ; preds = %390
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %407

405:                                              ; preds = %392
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node10SwitchCase2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #10
  br label %407

407:                                              ; preds = %405, %403
  %.pn307 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  br label %408

408:                                              ; preds = %407, %401
  %.pn307.pn = phi { ptr, i32 } [ %.pn307, %407 ], [ %402, %401 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #10
  br label %409

409:                                              ; preds = %408, %399
  %.pn307.pn.pn = phi { ptr, i32 } [ %.pn307.pn, %408 ], [ %400, %399 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %78) #10
  br label %410

410:                                              ; preds = %409, %397
  %.pn307.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn, %409 ], [ %398, %397 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %77) #10
  br label %411

411:                                              ; preds = %410, %395
  %.pn307.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn, %410 ], [ %396, %395 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #10
  br label %412

412:                                              ; preds = %.loopexit342, %.loopexit.split-lp, %411, %376, %342
  %.pn307.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn, %411 ], [ %.pn295.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %342 ], [ %.pn286.pn.pn.pn.pn.pn.pn.pn, %376 ], [ %lpad.loopexit, %.loopexit342 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #10
  br label %413

413:                                              ; preds = %412, %308
  %.pn307.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn307.pn.pn.pn.pn.pn, %412 ], [ %309, %308 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #10
  br label %414

414:                                              ; preds = %299, %413, %307, %301, %276
  %.pn317 = phi { ptr, i32 } [ %277, %276 ], [ %300, %299 ], [ %.pn307.pn.pn.pn.pn.pn.pn, %413 ], [ %.pn284, %307 ], [ %302, %301 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #10
  br label %415

415:                                              ; preds = %414, %274
  %.pn317.pn = phi { ptr, i32 } [ %.pn317, %414 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #10
  br label %432

416:                                              ; preds = %263
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %264, ptr noundef nonnull align 8 dereferenceable(16) %79)
          to label %417 unwind label %424

417:                                              ; preds = %416
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #10
  %418 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #10
  %419 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %41)
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA9_cNS_6rc_ptrIN4lang2cc4Node2_TEEES2_A4_cNS_3VecIS9_EEA2_cEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %80, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(9) @.str.99, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(5) @.str.100, ptr noundef nonnull align 1 dereferenceable(4) @.str.101, ptr noundef nonnull align 8 dereferenceable(64) %419, ptr noundef nonnull align 1 dereferenceable(2) @.str.72)
          to label %420 unwind label %427

420:                                              ; preds = %417
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %418, ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %421 unwind label %429

421:                                              ; preds = %420
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #10
  br label %589

422:                                              ; preds = %263
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %426

424:                                              ; preds = %416
  %425 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #10
  br label %426

426:                                              ; preds = %424, %422
  %.pn260 = phi { ptr, i32 } [ %425, %424 ], [ %423, %422 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #10
  br label %432

427:                                              ; preds = %417
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %431

429:                                              ; preds = %420
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #10
  br label %431

431:                                              ; preds = %429, %427
  %.pn262 = phi { ptr, i32 } [ %430, %429 ], [ %428, %427 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #10
  br label %432

432:                                              ; preds = %272, %415, %431, %426
  %.pn317.pn.pn.pn = phi { ptr, i32 } [ %.pn262, %431 ], [ %.pn260, %426 ], [ %.pn317.pn, %415 ], [ %273, %272 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  br label %433

433:                                              ; preds = %432, %270
  %.pn317.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn, %432 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #10
  br label %680

434:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %81)
          to label %435 unwind label %445

435:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %436 unwind label %447

436:                                              ; preds = %435
  invoke void @_ZN6langcc26dt_extract_def_fields_fullENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.91") align 8 %82, ptr noundef nonnull %83, ptr noundef nonnull align 8 dereferenceable(376) %5)
          to label %437 unwind label %449

437:                                              ; preds = %436
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  %438 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  %439 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  %440 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6langcc6rc_ptrINS_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_IN4lang4data4Node5Entry5Field2_TEEEEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %438)
  %441 = call noundef ptr @_ZNK6langcc3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(64) %440)
  %442 = call noundef ptr @_ZNK6langcc3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(64) %440)
  %.not345 = icmp eq ptr %441, %442
  br i1 %.not345, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %437
  %443 = icmp eq i32 %0, 0
  br label %451

._crit_edge:                                      ; preds = %514, %437
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99)
  %444 = icmp eq i32 %0, 0
  br i1 %444, label %521, label %550

445:                                              ; preds = %434
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %588

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

449:                                              ; preds = %436
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #10
  br label %587

451:                                              ; preds = %.lr.ph, %514
  %.0204346 = phi ptr [ %441, %.lr.ph ], [ %515, %514 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %84) #10
  invoke void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEC2ERKSF_(ptr noundef nonnull align 8 dereferenceable(48) %84, ptr noundef nonnull align 8 dereferenceable(48) %.0204346)
          to label %452 unwind label %478

452:                                              ; preds = %451
  %453 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48) %84) #10
  %454 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48) %84) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %85) #10
  %455 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %454)
  %456 = getelementptr inbounds i8, ptr %455, i64 144
  invoke void @_ZN6langcc8StrSliceC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %456)
          to label %457 unwind label %480

457:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %87) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %88) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull @.str.102, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %458 unwind label %482

458:                                              ; preds = %457
  invoke void @_ZN6langcc7fmt_strIJNS_8StrSliceEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS7_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %87, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %459 unwind label %484

459:                                              ; preds = %458
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA3_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES8_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %86, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.46, ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 1 dereferenceable(3) @.str.90, ptr noundef nonnull align 8 dereferenceable(32) %87)
          to label %460 unwind label %486

460:                                              ; preds = %459
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #10
  %461 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %454)
  %462 = getelementptr inbounds i8, ptr %461, i64 184
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef nonnull align 8 dereferenceable(16) %462)
          to label %463 unwind label %490

463:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(16) %86)
  %464 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %454)
  %465 = getelementptr inbounds i8, ptr %464, i64 177
  %466 = load i8, ptr %465, align 1, !tbaa !5, !range !27, !noundef !28
  %467 = trunc nuw i8 %466 to i1
  br i1 %467, label %511, label %468

468:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %92) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %469 unwind label %494

469:                                              ; preds = %468
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %94, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %470 unwind label %496

470:                                              ; preds = %469
  invoke void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEEC2ERKSC_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %471 unwind label %498

471:                                              ; preds = %470
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull align 8 dereferenceable(16) %86)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %97, ptr noundef nonnull align 8 dereferenceable(16) %38)
  invoke void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEC2ERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %472 unwind label %500

472:                                              ; preds = %471
  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 %92, i32 noundef %0, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %95, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef nonnull %98, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %17, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(376) %5)
          to label %473 unwind label %502

473:                                              ; preds = %472
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #10
  br i1 %443, label %474, label %509

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

476:                                              ; preds = %474
  %477 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(16) %475)
  br label %509

478:                                              ; preds = %451
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %520

480:                                              ; preds = %452
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %519

482:                                              ; preds = %457
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %489

484:                                              ; preds = %458
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %488

486:                                              ; preds = %459
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #10
  br label %488

488:                                              ; preds = %486, %484
  %.pn242 = phi { ptr, i32 } [ %487, %486 ], [ %485, %484 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #10
  br label %489

489:                                              ; preds = %488, %482
  %.pn242.pn = phi { ptr, i32 } [ %.pn242, %488 ], [ %483, %482 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %88) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %87) #10
  br label %518

490:                                              ; preds = %460
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %517

492:                                              ; preds = %512
  %493 = landingpad { ptr, i32 }
          cleanup
  br label %516

494:                                              ; preds = %468
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %510

496:                                              ; preds = %469
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %506

498:                                              ; preds = %470
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %505

500:                                              ; preds = %471
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %504

502:                                              ; preds = %472
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #10
  br label %504

504:                                              ; preds = %502, %500
  %.pn245 = phi { ptr, i32 } [ %503, %502 ], [ %501, %500 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  call void @_ZN6langcc6rc_ptrINS_3SetINS0_INS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #10
  br label %505

505:                                              ; preds = %504, %498
  %.pn245.pn = phi { ptr, i32 } [ %.pn245, %504 ], [ %499, %498 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #10
  br label %506

506:                                              ; preds = %505, %496
  %.pn245.pn.pn = phi { ptr, i32 } [ %.pn245.pn, %505 ], [ %497, %496 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #10
  br label %510

507:                                              ; preds = %474
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %92) #10
  br label %510

509:                                              ; preds = %476, %473
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %92) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %92) #10
  br label %511

510:                                              ; preds = %507, %506, %494
  %.pn249 = phi { ptr, i32 } [ %508, %507 ], [ %.pn245.pn.pn, %506 ], [ %495, %494 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %92) #10
  br label %516

511:                                              ; preds = %509, %463
  br i1 %443, label %512, label %514

512:                                              ; preds = %511
  %513 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %81)
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %513, ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %514 unwind label %492

514:                                              ; preds = %512, %511
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN6langcc8StrSliceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #10
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %84) #10
  %515 = getelementptr inbounds i8, ptr %.0204346, i64 48
  %.not = icmp eq ptr %515, %442
  br i1 %.not, label %._crit_edge, label %451

516:                                              ; preds = %510, %492
  %.pn251 = phi { ptr, i32 } [ %493, %492 ], [ %.pn249, %510 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #10
  br label %517

517:                                              ; preds = %516, %490
  %.pn251.pn = phi { ptr, i32 } [ %.pn251, %516 ], [ %491, %490 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  br label %518

518:                                              ; preds = %517, %489
  %.pn251.pn.pn = phi { ptr, i32 } [ %.pn251.pn, %517 ], [ %.pn242.pn, %489 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN6langcc8StrSliceD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  br label %519

519:                                              ; preds = %518, %480
  %.pn251.pn.pn.pn = phi { ptr, i32 } [ %.pn251.pn.pn, %518 ], [ %481, %480 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %85) #10
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #10
  br label %520

520:                                              ; preds = %519, %478
  %.pn251.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn251.pn.pn.pn, %519 ], [ %479, %478 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %84) #10
  br label %586

521:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %101) #10
  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 %102)
          to label %522 unwind label %530

522:                                              ; preds = %521
  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 %103)
          to label %523 unwind label %532

523:                                              ; preds = %522
  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 %101, i32 noundef 5, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %102, ptr noundef nonnull %103)
          to label %524 unwind label %534

524:                                              ; preds = %523
  invoke void @_ZN6langcc13CppGenContext16gen_cpp_fun_callERKNS_6rc_ptrIN4lang2cc4Node2_TEEERKNS1_INS_3VecIS6_EEEE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %100, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 8 dereferenceable(16) %81)
          to label %525 unwind label %536

525:                                              ; preds = %524
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %103) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %102) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %104) #10
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %526 unwind label %541

526:                                              ; preds = %525
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef nonnull align 8 dereferenceable(16) %14)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %108) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull @.str.103, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %527 unwind label %543

527:                                              ; preds = %526
  invoke void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJS7_EEES7_RNS2_INS_3VecIS7_EEEENS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SH_DpRKT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %104, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull %105, ptr noundef nonnull %106, ptr noundef nonnull %107, ptr noundef nonnull align 8 dereferenceable(16) %100)
          to label %528 unwind label %545

528:                                              ; preds = %527
  %529 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 8 dereferenceable(16) %104)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #10
  br label %555

530:                                              ; preds = %521
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %540

532:                                              ; preds = %522
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %539

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

536:                                              ; preds = %524
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #10
  br label %538

538:                                              ; preds = %536, %534
  %.pn229 = phi { ptr, i32 } [ %537, %536 ], [ %535, %534 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINS2_IN4lang2cc4Node2_TEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %103) #10
  br label %539

539:                                              ; preds = %538, %532
  %.pn229.pn = phi { ptr, i32 } [ %.pn229, %538 ], [ %533, %532 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %102) #10
  br label %540

540:                                              ; preds = %539, %530
  %.pn229.pn.pn = phi { ptr, i32 } [ %.pn229.pn, %539 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #10
  br label %549

541:                                              ; preds = %525
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %548

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

545:                                              ; preds = %527
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  br label %547

547:                                              ; preds = %545, %543
  %.pn233 = phi { ptr, i32 } [ %546, %545 ], [ %544, %543 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #10
  br label %548

548:                                              ; preds = %547, %541
  %.pn233.pn = phi { ptr, i32 } [ %.pn233, %547 ], [ %542, %541 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #10
  br label %549

549:                                              ; preds = %548, %540
  %.pn233.pn.pn = phi { ptr, i32 } [ %.pn233.pn, %548 ], [ %.pn229.pn.pn, %540 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #10
  br label %585

550:                                              ; preds = %._crit_edge
  br i1 %185, label %551, label %555

551:                                              ; preds = %550
  %552 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 8 dereferenceable(16) %33)
  br label %555

553:                                              ; preds = %572, %571, %555
  %554 = landingpad { ptr, i32 }
          cleanup
  br label %585

555:                                              ; preds = %550, %551, %528
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %556 unwind label %553

556:                                              ; preds = %555
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %557 unwind label %563

557:                                              ; preds = %556
  %558 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %109, ptr noundef nonnull %110)
          to label %559 unwind label %565

559:                                              ; preds = %557
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #10
  br i1 %558, label %560, label %574

560:                                              ; preds = %559
  br i1 %444, label %561, label %570

561:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #10
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_S8_EEES7_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %111, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(2) @.str.53)
          to label %.thread unwind label %568

.thread:                                          ; preds = %561
  %562 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 8 dereferenceable(16) %111)
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #10
  br label %575

563:                                              ; preds = %556
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %567

565:                                              ; preds = %557
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #10
  br label %567

567:                                              ; preds = %565, %563
  %.pn237 = phi { ptr, i32 } [ %566, %565 ], [ %564, %563 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #10
  br label %585

568:                                              ; preds = %561
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #10
  br label %585

570:                                              ; preds = %560
  br i1 %185, label %571, label %572

571:                                              ; preds = %570
  invoke void @_ZN6langcc13CppGenContext11qq_stmt_accIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_A3_cEEES7_RNS2_INS_3VecIS7_EEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %112, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 1 dereferenceable(2) @.str.52, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(3) @.str.54)
          to label %.thread340 unwind label %553

.thread340:                                       ; preds = %571
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #10
  br label %584

572:                                              ; preds = %570
  invoke void @_ZN6langcc2AXEv() #11
          to label %573 unwind label %553

573:                                              ; preds = %572
  unreachable

574:                                              ; preds = %559
  br i1 %444, label %575, label %584

575:                                              ; preds = %.thread, %574
  %576 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %32)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #10
  invoke void @_ZN6langcc13CppGenContext2qqIJA5_cA7_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %113, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.65, ptr noundef nonnull align 1 dereferenceable(7) @.str.92, ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 1 dereferenceable(2) @.str.93)
          to label %577 unwind label %579

577:                                              ; preds = %575
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %576, ptr noundef nonnull align 8 dereferenceable(16) %113)
          to label %578 unwind label %581

578:                                              ; preds = %577
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #10
  br label %584

579:                                              ; preds = %575
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %583

581:                                              ; preds = %577
  %582 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #10
  br label %583

583:                                              ; preds = %581, %579
  %.pn239 = phi { ptr, i32 } [ %582, %581 ], [ %580, %579 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #10
  br label %585

584:                                              ; preds = %.thread340, %578, %574
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #10
  call void @_ZNSt4pairIN6langcc6rc_ptrINS0_3VecIS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESI_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #10
  br label %589

585:                                              ; preds = %583, %568, %567, %553, %549
  %.pn239.pn = phi { ptr, i32 } [ %.pn239, %583 ], [ %569, %568 ], [ %554, %553 ], [ %.pn237, %567 ], [ %.pn233.pn.pn, %549 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #10
  br label %586

586:                                              ; preds = %585, %520
  %.pn251.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn251.pn.pn.pn.pn, %520 ], [ %.pn239.pn, %585 ]
  call void @_ZNSt4pairIN6langcc6rc_ptrINS0_3VecIS_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESI_ED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  br label %587

587:                                              ; preds = %586, %449, %447
  %.pn251.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn251.pn.pn.pn.pn.pn, %586 ], [ %450, %449 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #10
  br label %588

588:                                              ; preds = %587, %445
  %.pn251.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn251.pn.pn.pn.pn.pn.pn, %587 ], [ %446, %445 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #10
  br label %680

589:                                              ; preds = %584, %421
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %114) #10
  invoke void @_ZN6langcc7make_rcINS_3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEEEJEEENS2_IT_EEDpT0_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %114)
          to label %590 unwind label %600

590:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %115) #10
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %115, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %591 unwind label %602

591:                                              ; preds = %590
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %592 unwind label %604

592:                                              ; preds = %591
  invoke void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull align 8 dereferenceable(16) %2)
          to label %593 unwind label %606

593:                                              ; preds = %592
  %594 = invoke noundef zeroext i1 @_ZN6langcc18DataCompileContext11is_ancestorENS_6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESA_(ptr noundef nonnull align 8 dereferenceable(376) %5, ptr noundef nonnull %116, ptr noundef nonnull %117)
          to label %595 unwind label %608

595:                                              ; preds = %593
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #10
  br i1 %594, label %596, label %616

596:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %118) #10
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %118, ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %597 unwind label %611

597:                                              ; preds = %596
  %598 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %115, ptr noundef nonnull align 4 dereferenceable(20) %118)
          to label %599 unwind label %613

599:                                              ; preds = %597
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %118) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %118) #10
  br label %616

600:                                              ; preds = %589
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %679

602:                                              ; preds = %590
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %678

604:                                              ; preds = %591
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %677

606:                                              ; preds = %592
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %610

608:                                              ; preds = %593
  %609 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #10
  br label %610

610:                                              ; preds = %608, %606
  %.pn264 = phi { ptr, i32 } [ %609, %608 ], [ %607, %606 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #10
  br label %677

611:                                              ; preds = %596
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %615

613:                                              ; preds = %597
  %614 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %118) #10
  br label %615

615:                                              ; preds = %613, %611
  %.pn266 = phi { ptr, i32 } [ %614, %613 ], [ %612, %611 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %118) #10
  br label %677

616:                                              ; preds = %599, %595
  br i1 %185, label %617, label %630

617:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %119) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %120) #10
  invoke void @_ZN6langcc13CppGenContext7qq_exprIJA5_cEEENS_6rc_ptrIN4lang2cc4Node2_TEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %120, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 1 dereferenceable(5) @.str.18)
          to label %618 unwind label %622

618:                                              ; preds = %617
  invoke void @_ZN6langcc4SomeINS_6rc_ptrIN4lang2cc4Node2_TEEEEENS_6Option2_TIT_EERKS9_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::Option::_T.117") align 4 %119, ptr noundef nonnull align 8 dereferenceable(16) %120)
          to label %619 unwind label %624

619:                                              ; preds = %618
  %620 = invoke noundef nonnull align 4 dereferenceable(20) ptr @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEEaSERKS8_(ptr noundef nonnull align 4 dereferenceable(20) %115, ptr noundef nonnull align 4 dereferenceable(20) %119)
          to label %621 unwind label %626

621:                                              ; preds = %619
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %119) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %119) #10
  br label %630

622:                                              ; preds = %617
  %623 = landingpad { ptr, i32 }
          cleanup
  br label %629

624:                                              ; preds = %618
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %628

626:                                              ; preds = %619
  %627 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %119) #10
  br label %628

628:                                              ; preds = %626, %624
  %.pn268 = phi { ptr, i32 } [ %627, %626 ], [ %625, %624 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #10
  br label %629

629:                                              ; preds = %628, %622
  %.pn268.pn = phi { ptr, i32 } [ %.pn268, %628 ], [ %623, %622 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %119) #10
  br label %677

630:                                              ; preds = %621, %616
  %631 = getelementptr inbounds i8, ptr %5, i64 32
  %632 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %631)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %121) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %122) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %124)
          to label %633 unwind label %649

633:                                              ; preds = %630
  invoke void @_ZN6langcc13CppGenContext22gen_cpp_fun_proto_declERKNS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEESB_RKNS_6Option2_TIS7_EERKNS1_INS2_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESB_(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %123, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull align 8 dereferenceable(16) %124, ptr noundef nonnull align 4 dereferenceable(20) %115, ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %634 unwind label %651

634:                                              ; preds = %633
  %635 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
  invoke void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.125") align 8 %122, ptr noundef nonnull align 8 dereferenceable(136) %635)
          to label %636 unwind label %653

636:                                              ; preds = %634
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Decl2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 8 dereferenceable(16) %122)
  invoke void @_ZN6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(64) %632, ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %637 unwind label %655

637:                                              ; preds = %636
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #10
  %638 = call noundef ptr @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %114)
  %639 = call noundef i64 @_ZNK6langcc3VecINS_6rc_ptrIN4lang2cc4Node2_TEEEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(64) %638)
  %640 = icmp sgt i64 %639, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %126) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %127) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %127)
          to label %641 unwind label %660

641:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %128) #10
  invoke void @_ZN6langcc17inline_maybe_modsENS_10HeaderModeERNS_18DataCompileContextE(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %128, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(376) %5)
          to label %642 unwind label %662

642:                                              ; preds = %641
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %129) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEC2INS3_4Expr2_TETnPNSt9enable_ifIXsr3std10is_base_ofIS4_T_EE5valueEvE4typeELPv0EEERKNS0_ISA_EE(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %30)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %130) #10
  invoke void @_ZN6langcc11NodeV_emptyEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.12") align 8 %130)
          to label %643 unwind label %664

643:                                              ; preds = %642
  invoke void @_ZN6langcc13CppGenContext16gen_cpp_fun_bodyERKNS_6rc_ptrINS_3VecINS1_IN4lang2cc4Node2_TEEEEEEESB_SB_RKNS_6Option2_TIS7_EERKS7_SB_SB_SB_b(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.76") align 8 %126, ptr noundef nonnull align 8 dereferenceable(264) %5, ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull align 8 dereferenceable(16) %128, ptr noundef nonnull align 4 dereferenceable(20) %115, ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %130, ptr noundef nonnull align 8 dereferenceable(16) %32, i1 noundef zeroext false)
          to label %644 unwind label %666

644:                                              ; preds = %643
  %645 = call noundef ptr @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
  invoke void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind nonnull writable sret(%"struct.langcc::rc_ptr.125") align 8 %125, ptr noundef nonnull align 8 dereferenceable(136) %645)
          to label %646 unwind label %668

646:                                              ; preds = %644
  invoke void @_ZN6langcc13CppGenContext8push_defEbNS_6rc_ptrIN4lang2cc4Node4Decl2_TEEE(ptr noundef nonnull align 8 dereferenceable(264) %5, i1 noundef zeroext %640, ptr noundef nonnull %125)
          to label %647 unwind label %670

647:                                              ; preds = %646
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %130) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %129) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #10
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %115) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %115) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  br label %648

648:                                              ; preds = %6, %647
  ret void

649:                                              ; preds = %630
  %650 = landingpad { ptr, i32 }
          cleanup
  br label %659

651:                                              ; preds = %633
  %652 = landingpad { ptr, i32 }
          cleanup
  br label %658

653:                                              ; preds = %634
  %654 = landingpad { ptr, i32 }
          cleanup
  br label %657

655:                                              ; preds = %636
  %656 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #10
  br label %657

657:                                              ; preds = %655, %653
  %.pn271 = phi { ptr, i32 } [ %656, %655 ], [ %654, %653 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #10
  br label %658

658:                                              ; preds = %657, %651
  %.pn271.pn = phi { ptr, i32 } [ %.pn271, %657 ], [ %652, %651 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #10
  br label %659

659:                                              ; preds = %658, %649
  %.pn271.pn.pn = phi { ptr, i32 } [ %.pn271.pn, %658 ], [ %650, %649 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #10
  br label %677

660:                                              ; preds = %637
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %676

662:                                              ; preds = %641
  %663 = landingpad { ptr, i32 }
          cleanup
  br label %675

664:                                              ; preds = %642
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %674

666:                                              ; preds = %643
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %673

668:                                              ; preds = %644
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %672

670:                                              ; preds = %646
  %671 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Decl2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  br label %672

672:                                              ; preds = %670, %668
  %.pn275 = phi { ptr, i32 } [ %671, %670 ], [ %669, %668 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #10
  br label %673

673:                                              ; preds = %672, %666
  %.pn275.pn = phi { ptr, i32 } [ %.pn275, %672 ], [ %667, %666 ]
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #10
  br label %674

674:                                              ; preds = %673, %664
  %.pn275.pn.pn = phi { ptr, i32 } [ %.pn275.pn, %673 ], [ %665, %664 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %130) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %129) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #10
  br label %675

675:                                              ; preds = %674, %662
  %.pn275.pn.pn.pn = phi { ptr, i32 } [ %.pn275.pn.pn, %674 ], [ %663, %662 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #10
  br label %676

676:                                              ; preds = %675, %660
  %.pn275.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn275.pn.pn.pn, %675 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #10
  br label %677

677:                                              ; preds = %676, %659, %629, %615, %610, %604
  %.pn275.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn275.pn.pn.pn.pn, %676 ], [ %.pn271.pn.pn, %659 ], [ %.pn268.pn, %629 ], [ %.pn266, %615 ], [ %.pn264, %610 ], [ %605, %604 ]
  call void @_ZN6langcc6Option2_TINS_6rc_ptrIN4lang2cc4Node2_TEEEED2Ev(ptr noundef nonnull align 4 dereferenceable(20) %115) #10
  br label %678

678:                                              ; preds = %677, %602
  %.pn275.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn275.pn.pn.pn.pn.pn, %677 ], [ %603, %602 ]
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %115) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #10
  br label %679

679:                                              ; preds = %678, %600
  %.pn275.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn275.pn.pn.pn.pn.pn.pn, %678 ], [ %601, %600 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #10
  br label %680

680:                                              ; preds = %679, %588, %433
  %.pn317.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn, %433 ], [ %.pn275.pn.pn.pn.pn.pn.pn.pn, %679 ], [ %.pn251.pn.pn.pn.pn.pn.pn.pn, %588 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #10
  br label %681

681:                                              ; preds = %680, %269
  %.pn317.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn, %680 ], [ %.pn227, %269 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #10
  br label %682

682:                                              ; preds = %681, %239
  %.pn317.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn, %681 ], [ %240, %239 ]
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #10
  br label %683

683:                                              ; preds = %682, %237
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn, %682 ], [ %238, %237 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #10
  br label %684

684:                                              ; preds = %683, %236
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn, %683 ], [ %.pn225, %236 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #10
  br label %685

685:                                              ; preds = %684, %230
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn, %684 ], [ %231, %230 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINS0_IN4lang2cc4Node2_TEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #10
  br label %686

686:                                              ; preds = %685, %228
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %685 ], [ %229, %228 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node4Expr2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  br label %687

687:                                              ; preds = %686, %226
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %686 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #10
  br label %688

688:                                              ; preds = %687, %225
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %687 ], [ %.pn221.pn.pn, %225 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #10
  call void @_ZN6langcc6rc_ptrINS_3VecINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #10
  br label %689

689:                                              ; preds = %688, %216
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %688 ], [ %.pn216.pn.pn.pn, %216 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  br label %690

690:                                              ; preds = %689, %204, %198
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %689 ], [ %.pn214, %204 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  call void @_ZN6langcc6rc_ptrIN4lang2cc4Node2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #10
  br label %691

691:                                              ; preds = %690, %197, %191
  %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %690 ], [ %.pn, %197 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  br label %692

692:                                              ; preds = %189, %691, %158
  %.pn336.pn = phi { ptr, i32 } [ %.pn336, %158 ], [ %.pn317.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %691 ], [ %190, %189 ]
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #10
  br label %693

693:                                              ; preds = %692, %152
  %.pn336.pn.pn = phi { ptr, i32 } [ %.pn336.pn, %692 ], [ %153, %152 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN6langcc6rc_ptrIN4lang4data4Node4Decl4Data2_TEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  resume { ptr, i32 } %.pn336.pn.pn
}

; 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 #3 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 #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 #2 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 #1 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 #2

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext2qqIJA5_cA15_cNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS9_A3_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(15), 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 #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local { ptr, i64 } @_ZN6langcc3MapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6rc_ptrINS_3VecIS6_EEEEE3endEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrINS6_3VecIS5_EEEEERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKSF_(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

declare void @_ZN4lang2cc4Node2_T13as_SwitchCaseEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.124") align 8, ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #9

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1EN6langcc6rc_ptrINS0_3VecISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_IN4lang4data4Node5Entry5Field2_TEEEEEEEESJ_EONSt13tuple_elementIXT_ES3_IT0_T1_EE4typeEOSN_(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZSt3getILm0ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6langcc6rc_ptrIN4lang4data4Node5Entry5Field2_TEEEEONSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeEOSJ_(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext16gen_cpp_fun_callERKNS_6rc_ptrIN4lang2cc4Node2_TEEERKNS1_INS_3VecIS6_EEEE(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(16)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext21gen_cpp_decl_var_initINS_6rc_ptrIN4lang2cc4Node2_TEEEJS7_EEES7_RNS2_INS_3VecIS7_EEEENS2_INS8_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEET_SH_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(16)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext7qq_exprIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_S8_EEES7_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 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 #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6langcc13CppGenContext11qq_stmt_accIJNS_6rc_ptrIN4lang2cc4Node2_TEEEA2_cS7_A3_cEEES7_RNS2_INS_3VecIS7_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(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 #3 align 2

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

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

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

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

declare void @_ZN4lang2cc4Node2_T7as_DeclEv(ptr dead_on_unwind writable sret(%"struct.langcc::rc_ptr.125") align 8, ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #9

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #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 = { 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 #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { "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 #10 = { nounwind }
attributes #11 = { 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, !20, i64 177}
!6 = !{!"_ZTSN4lang4data4Node5Entry5Field2_TE", !7, i64 0, !24, i64 144, !20, i64 176, !20, i64 177, !26, i64 184}
!7 = !{!"_ZTSN4lang4data4Node5Entry2_TE", !8, i64 0, !23, i64 136}
!8 = !{!"_ZTSN4lang4data4Node2_TE", !9, i64 8, !14, i64 48, !16, i64 64, !17, i64 72, !18, i64 80, !20, i64 88, !17, i64 96, !21, i64 104, !22, i64 120}
!9 = !{!"_ZTSN6langcc8hash_objE", !10, i64 0}
!10 = !{!"_ZTSN6langcc6Option2_TINS_7HashValEEE", !11, i64 0, !12, i64 4}
!11 = !{!"_ZTSN6langcc6Option2_WE", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSN6langcc24enable_rc_from_this_polyE", !15, i64 0, !15, i64 8}
!15 = !{!"any pointer", !12, i64 0}
!16 = !{!"_ZTSN4lang4data4Node2_WE", !12, i64 0}
!17 = !{!"long", !12, i64 0}
!18 = !{!"_ZTSN6langcc11TokenBoundsE", !19, i64 0, !19, i64 4}
!19 = !{!"int", !12, i64 0}
!20 = !{!"bool", !12, i64 0}
!21 = !{!"_ZTSN6langcc14ParserAttrMaskE", !12, i64 0}
!22 = !{!"_ZTSN6langcc15ParserLookaheadE", !12, i64 0}
!23 = !{!"_ZTSN4lang4data4Node5Entry2_WE", !12, i64 0}
!24 = !{!"_ZTSN6langcc8StrSliceE", !25, i64 0, !17, i64 16, !17, i64 24}
!25 = !{!"_ZTSN6langcc6rc_ptrINS_3VecIcEEEE", !15, i64 0, !15, i64 8}
!26 = !{!"_ZTSN6langcc6rc_ptrIN4lang4data4Node4Expr2_TEEE", !15, i64 0, !15, i64 8}
!27 = !{i8 0, i8 2}
!28 = !{}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass