; LLVM IR from aspuru-guzik-group/qtorch :: src/main.ll (ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::weak_ptr" = type { %"class.std::__weak_ptr" }
%"class.std::__weak_ptr" = type { ptr, %"class.std::__weak_count" }
%"class.std::__weak_count" = type { ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = type { %"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.115" = type { ptr }
%"struct.std::pair.116" = type { i8, i32 }
%"class.std::vector.118" = type { %"struct.std::_Vector_base.119" }
%"struct.std::_Vector_base.119" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.120" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.123" = type { ptr }
%class.anon.124 = type { ptr, ptr, ptr }
%class.anon.125 = type { %"class.std::shared_ptr", %"class.std::shared_ptr", %"class.std::shared_ptr" }
%"class.std::allocator.11" = type { i8 }
%"class.qtorch::Network" = type <{ %"class.std::vector.14", %"class.std::vector.4", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::complex", %"class.std::mutex", i32, i32, i8, i8, [6 x i8], %"class.std::vector.14", %"class.std::vector.19", %"class.std::vector.14", %"class.std::unordered_map", %"class.std::unordered_map", i64, i32, [4 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.0 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.0 = type { i64, [8 x i8] }
%"class.std::complex" = type { { double, double } }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<std::vector<std::shared_ptr<qtorch::Node>>, std::allocator<std::vector<std::shared_ptr<qtorch::Node>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::shared_ptr<qtorch::Node>>, std::allocator<std::vector<std::shared_ptr<qtorch::Node>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::shared_ptr<qtorch::Node>>, std::allocator<std::vector<std::shared_ptr<qtorch::Node>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::shared_ptr<qtorch::Node>>, std::allocator<std::vector<std::shared_ptr<qtorch::Node>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"struct.std::_Vector_base.15" }
%"struct.std::_Vector_base.15" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Node>, std::allocator<std::shared_ptr<qtorch::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Node>, std::allocator<std::shared_ptr<qtorch::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Node>, std::allocator<std::shared_ptr<qtorch::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Node>, std::allocator<std::shared_ptr<qtorch::Node>>>::_Vector_impl_data" = type { ptr, 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 }
%"class.qtorch::Node" = type { ptr, i32, i32, i32, i8, %"struct.std::pair", i8, %"class.std::vector", %"class.std::vector.4", %"class.std::vector.9", i32, %"class.std::__cxx11::basic_string" }
%"struct.std::pair" = type { i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::complex<double>, std::allocator<std::complex<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::complex<double>, std::allocator<std::complex<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::complex<double>, std::allocator<std::complex<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::complex<double>, std::allocator<std::complex<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.33 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [14 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind noalias writable sret(%"class.std::weak_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(44)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind noalias writable sret(%"class.std::weak_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(44)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::vector.9", align 8
  %12 = alloca %"class.std::vector.9", align 8
  %13 = alloca %"class.std::vector.110", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector.4", align 8
  %17 = alloca %"class.std::vector.4", align 8
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::shared_ptr", align 8
  %24 = alloca %"class.std::weak_ptr", align 8
  %25 = alloca %"class.std::shared_ptr", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::weak_ptr", align 8
  %28 = alloca i1, align 1
  %29 = alloca i1, align 1
  %30 = alloca i1, align 1
  %31 = alloca i32, align 4
  %32 = alloca %"struct.std::pair.116", align 4
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.std::shared_ptr", align 8
  %43 = alloca %"class.std::weak_ptr", align 8
  %44 = alloca %"class.std::shared_ptr", align 8
  %45 = alloca i1, align 1
  %46 = alloca %"class.std::weak_ptr", align 8
  %47 = alloca i1, align 1
  %48 = alloca i1, align 1
  %49 = alloca i1, align 1
  %50 = alloca i32, align 4
  %51 = alloca %"struct.std::pair.116", align 4
  %52 = alloca i8, align 1
  %53 = alloca %"class.std::vector.118", align 8
  %54 = alloca %"class.std::allocator.120", align 1
  %55 = alloca i32, align 4
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.123", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.123", align 8
  %58 = alloca %class.anon.124, align 8
  %59 = alloca %"class.std::shared_ptr", align 8
  %60 = alloca i64, align 8
  %61 = alloca %class.anon.125, align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %64 = alloca %class.anon.125, align 8
  %65 = alloca %"class.std::vector.9", align 8
  %66 = alloca %"class.std::allocator.11", align 1
  %67 = alloca %"class.std::vector.9", align 8
  %68 = alloca %"class.std::allocator.11", align 1
  %69 = alloca i32, align 4
  %70 = alloca %"class.std::shared_ptr", align 8
  %71 = alloca %"class.std::shared_ptr", align 8
  %72 = alloca %"class.std::shared_ptr", align 8
  %73 = alloca %"class.std::shared_ptr", align 8
  %74 = alloca i32, align 4
  %75 = alloca %"class.std::shared_ptr", align 8
  %76 = alloca %"class.std::shared_ptr", align 8
  %77 = alloca %"class.std::shared_ptr", align 8
  %78 = alloca %"class.std::shared_ptr", align 8
  %79 = alloca %"class.std::shared_ptr", align 8
  %80 = alloca %"class.std::shared_ptr", align 8
  store ptr %0, ptr %6, align 8
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  %81 = load ptr, ptr %7, align 8
  %82 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  call void @_ZNSt5mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(40) %82)
  %83 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %84 = getelementptr inbounds %"class.qtorch::Node", ptr %83, i32 0, i32 4
  %85 = load i8, ptr %84, align 4, !tbaa !11, !range !31, !noundef !32
  %86 = trunc i8 %85 to i1
  br i1 %86, label %92, label %87

87:                                               ; preds = %5
  %88 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %89 = getelementptr inbounds %"class.qtorch::Node", ptr %88, i32 0, i32 4
  %90 = load i8, ptr %89, align 4, !tbaa !11, !range !31, !noundef !32
  %91 = trunc i8 %90 to i1
  br i1 %91, label %92, label %94

92:                                               ; preds = %87, %5
  %93 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  call void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %93)
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  br label %613

94:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #6
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  %95 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %96 = getelementptr inbounds %"class.qtorch::Node", ptr %95, i32 0, i32 1
  %97 = load i32, ptr %96, align 8, !tbaa !33
  %98 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %99 = getelementptr inbounds %"class.qtorch::Node", ptr %98, i32 0, i32 1
  %100 = load i32, ptr %99, align 8, !tbaa !33
  %101 = add nsw i32 %97, %100
  %102 = sext i32 %101 to i64
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %102)
          to label %103 unwind label %134

103:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  %104 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %105 = getelementptr inbounds %"class.qtorch::Node", ptr %104, i32 0, i32 1
  %106 = load i32, ptr %105, align 8, !tbaa !33
  %107 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %108 = getelementptr inbounds %"class.qtorch::Node", ptr %107, i32 0, i32 1
  %109 = load i32, ptr %108, align 8, !tbaa !33
  %110 = add nsw i32 %106, %109
  %111 = sext i32 %110 to i64
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %111)
          to label %112 unwind label %138

112:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  %113 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %114 = getelementptr inbounds %"class.qtorch::Node", ptr %113, i32 0, i32 1
  %115 = load i32, ptr %114, align 8, !tbaa !33
  %116 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %117 = getelementptr inbounds %"class.qtorch::Node", ptr %116, i32 0, i32 1
  %118 = load i32, ptr %117, align 8, !tbaa !33
  %119 = add nsw i32 %115, %118
  %120 = sext i32 %119 to i64
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %120)
          to label %121 unwind label %142

121:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %122 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %123 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %122)
          to label %124 unwind label %146

124:                                              ; preds = %121
  store ptr %123, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  %126 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #6
  %127 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %20, i32 0, i32 0
  store ptr %126, ptr %127, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #6
  %130 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %21, i32 0, i32 0
  store ptr %129, ptr %130, align 8
  br label %131

131:                                              ; preds = %217, %124
  %132 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br i1 %132, label %150, label %133

133:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %221

134:                                              ; preds = %94
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %14, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %15, align 4
  br label %612

138:                                              ; preds = %103
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %14, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %15, align 4
  br label %611

142:                                              ; preds = %112
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %14, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %15, align 4
  br label %610

146:                                              ; preds = %121
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %14, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %15, align 4
  br label %220

150:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  %151 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  store ptr %151, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  %152 = load ptr, ptr %22, align 8, !tbaa !5
  %153 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %152) #6
  store i1 false, ptr %26, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %29, align 1
  store i1 false, ptr %30, align 1
  invoke void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %24, ptr noundef nonnull align 8 dereferenceable(44) %153)
          to label %154 unwind label %179

154:                                              ; preds = %150
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  %155 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  br i1 %155, label %161, label %156

156:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #6
  store i1 true, ptr %28, align 1
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  %158 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %157) #6
  invoke void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %27, ptr noundef nonnull align 8 dereferenceable(44) %158)
          to label %159 unwind label %183

159:                                              ; preds = %156
  store i1 true, ptr %29, align 1
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %27) #6
  store i1 true, ptr %30, align 1
  %160 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  br label %161

161:                                              ; preds = %159, %154
  %162 = phi i1 [ true, %154 ], [ %160, %159 ]
  %163 = load i1, ptr %30, align 1
  br i1 %163, label %164, label %165

164:                                              ; preds = %161
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  br label %165

165:                                              ; preds = %164, %161
  %166 = load i1, ptr %29, align 1
  br i1 %166, label %167, label %168

167:                                              ; preds = %165
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #6
  br label %168

168:                                              ; preds = %167, %165
  %169 = load i1, ptr %28, align 1
  br i1 %169, label %170, label %171

170:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  br label %171

171:                                              ; preds = %170, %168
  %172 = load i1, ptr %26, align 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  br label %174

174:                                              ; preds = %173, %171
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  br i1 %162, label %175, label %198

175:                                              ; preds = %174
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %176 unwind label %194

176:                                              ; preds = %175
  %177 = load ptr, ptr %22, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(16) %177)
          to label %178 unwind label %194

178:                                              ; preds = %176
  br label %214

179:                                              ; preds = %150
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %14, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %15, align 4
  br label %193

183:                                              ; preds = %156
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %14, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %15, align 4
  %187 = load i1, ptr %28, align 1
  br i1 %187, label %188, label %189

188:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  br label %189

189:                                              ; preds = %188, %183
  %190 = load i1, ptr %26, align 1
  br i1 %190, label %191, label %192

191:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  br label %192

192:                                              ; preds = %191, %189
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  br label %193

193:                                              ; preds = %192, %179
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  br label %219

194:                                              ; preds = %176, %175
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %14, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %15, align 4
  br label %219

198:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %199 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %199, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  store i8 1, ptr %33, align 1, !tbaa !34
  %200 = invoke i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %201 unwind label %205

201:                                              ; preds = %198
  store i64 %200, ptr %32, align 4
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(8) %32)
          to label %202 unwind label %205

202:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  %203 = load ptr, ptr %22, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(16) %203)
          to label %204 unwind label %209

204:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %214

205:                                              ; preds = %201, %198
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %14, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  br label %213

209:                                              ; preds = %202
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %14, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %15, align 4
  br label %213

213:                                              ; preds = %209, %205
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %219

214:                                              ; preds = %204, %178
  %215 = load i32, ptr %18, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %217

217:                                              ; preds = %214
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  br label %131

219:                                              ; preds = %213, %194, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %220

220:                                              ; preds = %219, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %609

221:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %260, %221
  %223 = load i32, ptr %34, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  %226 = icmp ult i64 %224, %225
  br i1 %226, label %228, label %227

227:                                              ; preds = %222
  store i32 4, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %263

228:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %256, %228
  %230 = load i32, ptr %36, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %233 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %232)
          to label %234 unwind label %238

234:                                              ; preds = %229
  %235 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #6
  %236 = icmp ult i64 %231, %235
  br i1 %236, label %242, label %237

237:                                              ; preds = %234
  store i32 7, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %259

238:                                              ; preds = %253, %242, %229
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %14, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %609

242:                                              ; preds = %234
  %243 = load i32, ptr %34, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %244) #6
  %246 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %247 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %246)
          to label %248 unwind label %238

248:                                              ; preds = %242
  %249 = load i32, ptr %36, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %250) #6
  %252 = call noundef zeroext i1 @_ZSteqIN6qtorch4WireES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef nonnull align 8 dereferenceable(16) %251) #6
  br i1 %252, label %253, label %255

253:                                              ; preds = %248
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %254 unwind label %238

254:                                              ; preds = %253
  br label %255

255:                                              ; preds = %254, %248
  br label %256

256:                                              ; preds = %255
  %257 = load i32, ptr %36, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %36, align 4, !tbaa !9
  br label %229, !llvm.loop !35

259:                                              ; preds = %237
  br label %260

260:                                              ; preds = %259
  %261 = load i32, ptr %34, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %34, align 4, !tbaa !9
  br label %222, !llvm.loop !37

263:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %264 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %265 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %264)
          to label %266 unwind label %276

266:                                              ; preds = %263
  store ptr %265, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  %267 = load ptr, ptr %38, align 8, !tbaa !5
  %268 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %267) #6
  %269 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %39, i32 0, i32 0
  store ptr %268, ptr %269, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %270 = load ptr, ptr %38, align 8, !tbaa !5
  %271 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #6
  %272 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %40, i32 0, i32 0
  store ptr %271, ptr %272, align 8
  br label %273

273:                                              ; preds = %340, %266
  %274 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  br i1 %274, label %280, label %275

275:                                              ; preds = %273
  store i32 10, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %344

276:                                              ; preds = %263
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %14, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %15, align 4
  br label %343

280:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  %281 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  store ptr %281, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #6
  %282 = load ptr, ptr %41, align 8, !tbaa !5
  %283 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %282) #6
  store i1 false, ptr %45, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %48, align 1
  store i1 false, ptr %49, align 1
  invoke void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %43, ptr noundef nonnull align 8 dereferenceable(44) %283)
          to label %284 unwind label %313

284:                                              ; preds = %280
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  %285 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  br i1 %285, label %291, label %286

286:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #6
  store i1 true, ptr %47, align 1
  %287 = load ptr, ptr %41, align 8, !tbaa !5
  %288 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %287) #6
  invoke void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %46, ptr noundef nonnull align 8 dereferenceable(44) %288)
          to label %289 unwind label %317

289:                                              ; preds = %286
  store i1 true, ptr %48, align 1
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %46) #6
  store i1 true, ptr %49, align 1
  %290 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  br label %291

291:                                              ; preds = %289, %284
  %292 = phi i1 [ true, %284 ], [ %290, %289 ]
  %293 = xor i1 %292, true
  %294 = load i1, ptr %49, align 1
  br i1 %294, label %295, label %296

295:                                              ; preds = %291
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  br label %296

296:                                              ; preds = %295, %291
  %297 = load i1, ptr %48, align 1
  br i1 %297, label %298, label %299

298:                                              ; preds = %296
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #6
  br label %299

299:                                              ; preds = %298, %296
  %300 = load i1, ptr %47, align 1
  br i1 %300, label %301, label %302

301:                                              ; preds = %299
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  br label %302

302:                                              ; preds = %301, %299
  %303 = load i1, ptr %45, align 1
  br i1 %303, label %304, label %305

304:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  br label %305

305:                                              ; preds = %304, %302
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  br i1 %293, label %306, label %337

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %307 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %307, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #6
  store i8 0, ptr %52, align 1, !tbaa !34
  %308 = invoke i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1) %52, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %309 unwind label %328

309:                                              ; preds = %306
  store i64 %308, ptr %51, align 4
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(8) %51)
          to label %310 unwind label %328

310:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  %311 = load ptr, ptr %41, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(16) %311)
          to label %312 unwind label %332

312:                                              ; preds = %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %337

313:                                              ; preds = %280
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %14, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %15, align 4
  br label %327

317:                                              ; preds = %286
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %14, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %15, align 4
  %321 = load i1, ptr %47, align 1
  br i1 %321, label %322, label %323

322:                                              ; preds = %317
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  br label %323

323:                                              ; preds = %322, %317
  %324 = load i1, ptr %45, align 1
  br i1 %324, label %325, label %326

325:                                              ; preds = %323
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  br label %326

326:                                              ; preds = %325, %323
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  br label %327

327:                                              ; preds = %326, %313
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  br label %342

328:                                              ; preds = %309, %306
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %14, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  br label %336

332:                                              ; preds = %310
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %14, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %15, align 4
  br label %336

336:                                              ; preds = %332, %328
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %342

337:                                              ; preds = %312, %305
  %338 = load i32, ptr %37, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  br label %340

340:                                              ; preds = %337
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  br label %273

342:                                              ; preds = %336, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  br label %343

343:                                              ; preds = %342, %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %608

344:                                              ; preds = %275
  %345 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %346 = icmp eq i64 %345, 0
  br i1 %346, label %347, label %350

347:                                              ; preds = %344
  %348 = call noundef i64 @_ZNKSt6vectorISt4pairIbiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  %349 = icmp ugt i64 %348, 0
  br i1 %349, label %373, label %350

350:                                              ; preds = %347, %344
  %351 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  %352 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %353 = getelementptr inbounds %"class.qtorch::Node", ptr %352, i32 0, i32 1
  %354 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %355 = getelementptr inbounds %"class.qtorch::Node", ptr %354, i32 0, i32 1
  %356 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %353, ptr noundef nonnull align 4 dereferenceable(4) %355)
          to label %357 unwind label %376

357:                                              ; preds = %350
  %358 = load i32, ptr %356, align 4, !tbaa !9
  %359 = load i32, ptr %10, align 4, !tbaa !9
  %360 = add nsw i32 %358, %359
  %361 = sext i32 %360 to i64
  %362 = icmp ugt i64 %351, %361
  br i1 %362, label %373, label %363

363:                                              ; preds = %357
  %364 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %365 = getelementptr inbounds %"class.qtorch::Node", ptr %364, i32 0, i32 4
  %366 = load i8, ptr %365, align 4, !tbaa !11, !range !31, !noundef !32
  %367 = trunc i8 %366 to i1
  br i1 %367, label %373, label %368

368:                                              ; preds = %363
  %369 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %370 = getelementptr inbounds %"class.qtorch::Node", ptr %369, i32 0, i32 4
  %371 = load i8, ptr %370, align 4, !tbaa !11, !range !31, !noundef !32
  %372 = trunc i8 %371 to i1
  br i1 %372, label %373, label %380

373:                                              ; preds = %368, %363, %357, %347
  %374 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %374)
          to label %375 unwind label %376

375:                                              ; preds = %373
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  store i32 1, ptr %35, align 4
  br label %607

376:                                              ; preds = %373, %350
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %14, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %15, align 4
  br label %608

380:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #6
  %381 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #6
  call void @_ZNSaISt4pairIiiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt6vectorISt4pairIiiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %381, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %382 unwind label %449

382:                                              ; preds = %380
  call void @_ZNSt15__new_allocatorISt4pairIiiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  store i32 0, ptr %55, align 4, !tbaa !9
  %383 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #6
  %384 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.123", ptr %56, i32 0, i32 0
  store ptr %383, ptr %384, align 8
  %385 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #6
  %386 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.123", ptr %57, i32 0, i32 0
  store ptr %385, ptr %386, align 8
  %387 = getelementptr inbounds %class.anon.124, ptr %58, i32 0, i32 0
  store ptr %11, ptr %387, align 8, !tbaa !5
  %388 = getelementptr inbounds %class.anon.124, ptr %58, i32 0, i32 1
  store ptr %12, ptr %388, align 8, !tbaa !5
  %389 = getelementptr inbounds %class.anon.124, ptr %58, i32 0, i32 2
  store ptr %55, ptr %389, align 8, !tbaa !5
  %390 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.123", ptr %56, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8
  %392 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.123", ptr %57, i32 0, i32 0
  %393 = load ptr, ptr %392, align 8
  invoke void @"_ZSt8generateIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZN6qtorch7Network13ContractNodesESt10shared_ptrINS9_4NodeEESD_iE3$_0EvT_SF_T0_"(ptr %391, ptr %393, ptr noundef byval(%class.anon.124) align 8 %58)
          to label %394 unwind label %453

394:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %395 = call noundef i64 @_ZNKSt6vectorISt4pairIbiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  store i64 %395, ptr %60, align 8, !tbaa !38
  invoke void @_ZSt11make_sharedIN6qtorch4NodeEJmEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %59, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %396 unwind label %457

396:                                              ; preds = %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  %397 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  %398 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %62, i32 0, i32 0
  store ptr %397, ptr %398, align 8
  %399 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  %400 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %63, i32 0, i32 0
  store ptr %399, ptr %400, align 8
  %401 = getelementptr inbounds %class.anon.125, ptr %64, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %401, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  %402 = getelementptr inbounds %class.anon.125, ptr %64, i32 0, i32 1
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %402, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  %403 = getelementptr inbounds %class.anon.125, ptr %64, i32 0, i32 2
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %403, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  %404 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %62, i32 0, i32 0
  %405 = load ptr, ptr %404, align 8
  %406 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.115", ptr %63, i32 0, i32 0
  %407 = load ptr, ptr %406, align 8
  invoke void @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS5_SaIS5_EEEEZNS3_7Network13ContractNodesES2_INS3_4NodeEESD_iE3$_1ET0_T_SG_SF_"(ptr dead_on_unwind writable sret(%class.anon.125) align 8 %61, ptr %405, ptr %407, ptr noundef %64)
          to label %408 unwind label %461

408:                                              ; preds = %396
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %61) #6
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %64) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #6
  %409 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %410 = getelementptr inbounds %"class.qtorch::Node", ptr %409, i32 0, i32 1
  %411 = load i32, ptr %410, align 8, !tbaa !33
  %412 = sext i32 %411 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %412, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %413 unwind label %465

413:                                              ; preds = %408
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %67) #6
  %414 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %415 = getelementptr inbounds %"class.qtorch::Node", ptr %414, i32 0, i32 1
  %416 = load i32, ptr %415, align 8, !tbaa !33
  %417 = sext i32 %416 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %417, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %418 unwind label %469

418:                                              ; preds = %413
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  %419 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  %420 = getelementptr inbounds %"class.qtorch::Node", ptr %419, i32 0, i32 1
  %421 = load i32, ptr %420, align 8, !tbaa !33
  %422 = icmp sge i32 %421, 8
  br i1 %422, label %423, label %477

423:                                              ; preds = %418
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.33)
          to label %425 unwind label %473

425:                                              ; preds = %423
  %426 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %427 = getelementptr inbounds %"class.qtorch::Node", ptr %426, i32 0, i32 1
  %428 = load i32, ptr %427, align 8, !tbaa !33
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %424, i32 noundef %428)
          to label %430 unwind label %473

430:                                              ; preds = %425
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef @.str.34)
          to label %432 unwind label %473

432:                                              ; preds = %430
  %433 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %434 = getelementptr inbounds %"class.qtorch::Node", ptr %433, i32 0, i32 1
  %435 = load i32, ptr %434, align 8, !tbaa !33
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %431, i32 noundef %435)
          to label %437 unwind label %473

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

439:                                              ; preds = %437
  %440 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  %441 = getelementptr inbounds %"class.qtorch::Node", ptr %440, i32 0, i32 1
  %442 = load i32, ptr %441, align 8, !tbaa !33
  %443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %438, i32 noundef %442)
          to label %444 unwind label %473

444:                                              ; preds = %439
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %443, ptr noundef @.str.36)
          to label %446 unwind label %473

446:                                              ; preds = %444
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %448 unwind label %473

448:                                              ; preds = %446
  br label %477

449:                                              ; preds = %380
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %14, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %15, align 4
  call void @_ZNSt15__new_allocatorISt4pairIiiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #6
  br label %606

453:                                              ; preds = %382
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %14, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %15, align 4
  br label %605

457:                                              ; preds = %394
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %14, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  br label %604

461:                                              ; preds = %396
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %14, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %15, align 4
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %64) #6
  br label %603

465:                                              ; preds = %408
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %14, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #6
  br label %602

469:                                              ; preds = %413
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %14, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  br label %601

473:                                              ; preds = %588, %582, %580, %561, %559, %501, %446, %444, %439, %437, %432, %430, %425, %423
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %14, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %15, align 4
  br label %600

477:                                              ; preds = %448, %418
  %478 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %479 = getelementptr inbounds %"class.qtorch::Node", ptr %478, i32 0, i32 4
  store i8 1, ptr %479, align 4, !tbaa !11
  %480 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %481 = getelementptr inbounds %"class.qtorch::Node", ptr %480, i32 0, i32 4
  store i8 1, ptr %481, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  store i32 0, ptr %69, align 4, !tbaa !9
  br label %482

482:                                              ; preds = %494, %477
  %483 = load i32, ptr %69, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  %486 = icmp ult i64 %484, %485
  br i1 %486, label %488, label %487

487:                                              ; preds = %482
  store i32 12, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %501

488:                                              ; preds = %482
  %489 = load i32, ptr %69, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %490) #6
  %492 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %491) #6
  invoke void @_ZN6qtorch4Wire15SetIsContractedEb(ptr noundef nonnull align 8 dereferenceable(44) %492, i1 noundef zeroext true)
          to label %493 unwind label %497

493:                                              ; preds = %488
  br label %494

494:                                              ; preds = %493
  %495 = load i32, ptr %69, align 4, !tbaa !9
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %69, align 4, !tbaa !9
  br label %482, !llvm.loop !39

497:                                              ; preds = %488
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %14, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %600

501:                                              ; preds = %487
  %502 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %502)
          to label %503 unwind label %473

503:                                              ; preds = %501
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  invoke void @_ZN6qtorch7Network15ContractIndicesERKSt6vectorISt4pairIbiESaIS3_EERKS1_IS2_IiiESaIS8_EERS1_IiSaIiEESF_St10shared_ptrINS_4NodeEESI_SI_(ptr noundef nonnull align 8 dereferenceable(380) %81, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef %70, ptr noundef %71, ptr noundef %72)
          to label %504 unwind label %537

504:                                              ; preds = %503
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #6
  %505 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 8
  %506 = load i8, ptr %505, align 8, !tbaa !40, !range !31, !noundef !32
  %507 = trunc i8 %506 to i1
  br i1 %507, label %508, label %559

508:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  store i32 0, ptr %74, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN6qtorch4NodeEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %73, ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %509 unwind label %541

509:                                              ; preds = %508
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  %510 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 11
  %511 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %510) #6
  %512 = trunc i64 %511 to i32
  %513 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  %514 = getelementptr inbounds %"class.qtorch::Node", ptr %513, i32 0, i32 2
  store i32 %512, ptr %514, align 4, !tbaa !59
  %515 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %516 = getelementptr inbounds %"class.qtorch::Node", ptr %515, i32 0, i32 2
  %517 = load i32, ptr %516, align 4, !tbaa !59
  %518 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  %519 = getelementptr inbounds %"class.qtorch::Node", ptr %518, i32 0, i32 5
  %520 = getelementptr inbounds %"struct.std::pair", ptr %519, i32 0, i32 0
  store i32 %517, ptr %520, align 8, !tbaa !60
  %521 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %522 = getelementptr inbounds %"class.qtorch::Node", ptr %521, i32 0, i32 2
  %523 = load i32, ptr %522, align 4, !tbaa !59
  %524 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  %525 = getelementptr inbounds %"class.qtorch::Node", ptr %524, i32 0, i32 5
  %526 = getelementptr inbounds %"struct.std::pair", ptr %525, i32 0, i32 1
  store i32 %523, ptr %526, align 4, !tbaa !61
  %527 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 11
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %527, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %528 unwind label %545

528:                                              ; preds = %509
  %529 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 13
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  invoke void @_ZNK6qtorch7Network13FindAndRemoveERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_(ptr noundef nonnull align 8 dereferenceable(380) %81, ptr noundef nonnull align 8 dereferenceable(24) %529, ptr noundef %75)
          to label %530 unwind label %549

530:                                              ; preds = %528
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #6
  %531 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 13
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  invoke void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %81, ptr noundef nonnull align 8 dereferenceable(24) %531, ptr noundef %76, ptr noundef %77)
          to label %532 unwind label %553

532:                                              ; preds = %530
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #6
  %533 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  invoke void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %533)
          to label %534 unwind label %545

534:                                              ; preds = %532
  %535 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  invoke void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %535)
          to label %536 unwind label %545

536:                                              ; preds = %534
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  store i32 1, ptr %35, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #6
  br label %599

537:                                              ; preds = %503
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %14, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %15, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #6
  br label %600

541:                                              ; preds = %508
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %14, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  br label %558

545:                                              ; preds = %534, %532, %509
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %14, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %15, align 4
  br label %557

549:                                              ; preds = %528
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %14, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %15, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #6
  br label %557

553:                                              ; preds = %530
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %14, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %15, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #6
  br label %557

557:                                              ; preds = %553, %549, %545
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #6
  br label %558

558:                                              ; preds = %557, %541
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #6
  br label %600

559:                                              ; preds = %504
  %560 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  invoke void @_ZNSt5mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(40) %560)
          to label %561 unwind label %473

561:                                              ; preds = %559
  %562 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 11
  %563 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %562) #6
  %564 = trunc i64 %563 to i32
  %565 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  %566 = getelementptr inbounds %"class.qtorch::Node", ptr %565, i32 0, i32 2
  store i32 %564, ptr %566, align 4, !tbaa !59
  %567 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %568 = getelementptr inbounds %"class.qtorch::Node", ptr %567, i32 0, i32 2
  %569 = load i32, ptr %568, align 4, !tbaa !59
  %570 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  %571 = getelementptr inbounds %"class.qtorch::Node", ptr %570, i32 0, i32 5
  %572 = getelementptr inbounds %"struct.std::pair", ptr %571, i32 0, i32 0
  store i32 %569, ptr %572, align 8, !tbaa !60
  %573 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %574 = getelementptr inbounds %"class.qtorch::Node", ptr %573, i32 0, i32 2
  %575 = load i32, ptr %574, align 4, !tbaa !59
  %576 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %59) #6
  %577 = getelementptr inbounds %"class.qtorch::Node", ptr %576, i32 0, i32 5
  %578 = getelementptr inbounds %"struct.std::pair", ptr %577, i32 0, i32 1
  store i32 %575, ptr %578, align 4, !tbaa !61
  %579 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 11
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %579, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %580 unwind label %473

580:                                              ; preds = %561
  %581 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  invoke void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %581)
          to label %582 unwind label %473

582:                                              ; preds = %580
  %583 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  invoke void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %583)
          to label %584 unwind label %473

584:                                              ; preds = %582
  %585 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 13
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  invoke void @_ZNK6qtorch7Network13FindAndRemoveERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_(ptr noundef nonnull align 8 dereferenceable(380) %81, ptr noundef nonnull align 8 dereferenceable(24) %585, ptr noundef %78)
          to label %586 unwind label %591

586:                                              ; preds = %584
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #6
  %587 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 13
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  invoke void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %81, ptr noundef nonnull align 8 dereferenceable(24) %587, ptr noundef %79, ptr noundef %80)
          to label %588 unwind label %595

588:                                              ; preds = %586
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #6
  %589 = getelementptr inbounds %"class.qtorch::Network", ptr %81, i32 0, i32 5
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %589)
          to label %590 unwind label %473

590:                                              ; preds = %588
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  store i32 1, ptr %35, align 4
  br label %599

591:                                              ; preds = %584
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %14, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %15, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #6
  br label %600

595:                                              ; preds = %586
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %14, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %15, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #6
  br label %600

599:                                              ; preds = %590, %536
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #6
  br label %607

600:                                              ; preds = %595, %591, %558, %537, %497, %473
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #6
  br label %601

601:                                              ; preds = %600, %469
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #6
  br label %602

602:                                              ; preds = %601, %465
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #6
  br label %603

603:                                              ; preds = %602, %461
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  br label %604

604:                                              ; preds = %603, %457
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  br label %605

605:                                              ; preds = %604, %453
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #6
  br label %606

606:                                              ; preds = %605, %449
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #6
  br label %608

607:                                              ; preds = %599, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #6
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  br label %613

608:                                              ; preds = %606, %376, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %609

609:                                              ; preds = %608, %238, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %610

610:                                              ; preds = %609, %142
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #6
  br label %611

611:                                              ; preds = %610, %138
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #6
  br label %612

612:                                              ; preds = %611, %134
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  br label %614

613:                                              ; preds = %607, %92
  ret void

614:                                              ; preds = %612
  %615 = load ptr, ptr %14, align 8
  %616 = load i32, ptr %15, align 4
  %617 = insertvalue { ptr, i32 } poison, ptr %615, 0
  %618 = insertvalue { ptr, i32 } %617, i32 %616, 1
  resume { ptr, i32 } %618
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZSt8generateIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZN6qtorch7Network13ContractNodesESt10shared_ptrINS9_4NodeEESD_iE3$_0EvT_SF_T0_"(ptr, ptr, ptr noundef byval(%class.anon.124) align 8) #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN6qtorch4NodeEJmEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS5_SaIS5_EEEEZNS3_7Network13ContractNodesES2_INS3_4NodeEESD_iE3$_1ET0_T_SG_SF_"(ptr dead_on_unwind noalias writable sret(%class.anon.125) align 8, ptr, ptr, ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6qtorch7Network15ContractIndicesERKSt6vectorISt4pairIbiESaIS3_EERKS1_IS2_IiiESaIS8_EERS1_IiSaIiEESF_St10shared_ptrINS_4NodeEESI_SI_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN6qtorch4NodeEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef) #3 align 2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 20}
!12 = !{!"_ZTSN6qtorch4NodeE", !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !14, i64 24, !13, i64 32, !15, i64 40, !19, i64 64, !23, i64 88, !27, i64 112, !28, i64 120}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSSt4pairIiiE", !10, i64 0, !10, i64 4}
!15 = !{!"_ZTSSt6vectorISt7complexIdESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt7complexIdESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIiSaIiEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSN6qtorch8GateTypeE", !7, i64 0}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !29, i64 0, !30, i64 8, !7, i64 16}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!30 = !{!"long", !7, i64 0}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!12, !10, i64 8}
!34 = !{!13, !13, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = !{!30, !30, i64 0}
!39 = distinct !{!39, !36}
!40 = !{!41, !13, i64 176}
!41 = !{!"_ZTSN6qtorch7NetworkE", !42, i64 0, !19, i64 24, !28, i64 48, !28, i64 80, !46, i64 112, !47, i64 128, !10, i64 168, !10, i64 172, !13, i64 176, !13, i64 177, !42, i64 184, !49, i64 208, !42, i64 232, !53, i64 256, !53, i64 312, !58, i64 368, !10, i64 376}
!42 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt7complexIdE", !7, i64 0}
!47 = !{!"_ZTSSt5mutex", !48, i64 0}
!48 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!49 = !{!"_ZTSSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S5_EEE", !54, i64 0}
!54 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !30, i64 8, !55, i64 16, !30, i64 24, !56, i64 32, !6, i64 48}
!55 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!56 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !57, i64 0, !30, i64 8}
!57 = !{!"float", !7, i64 0}
!58 = !{!"long long", !7, i64 0}
!59 = !{!12, !10, i64 12}
!60 = !{!12, !10, i64 24}
!61 = !{!12, !10, i64 28}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::weak_ptr" = type { %"class.std::__weak_ptr" }
%"class.std::__weak_ptr" = type { ptr, %"class.std::__weak_count" }
%"class.std::__weak_count" = type { ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = type { %"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<bool, int>, std::allocator<std::pair<bool, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<qtorch::Wire>, std::allocator<std::shared_ptr<qtorch::Wire>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.115" = type { ptr }
%"struct.std::pair.116" = type { i8, i32 }
%"class.std::vector.118" = type { %"struct.std::_Vector_base.119" }
%"struct.std::_Vector_base.119" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.120" = type { i8 }
%class.anon.124 = type { ptr, ptr, ptr }
%class.anon.125 = type { %"class.std::shared_ptr", %"class.std::shared_ptr", %"class.std::shared_ptr" }
%"class.std::allocator.11" = type { i8 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.33 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [14 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind noalias writable sret(%"class.std::weak_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind noalias writable sret(%"class.std::weak_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::vector.9", align 8
  %7 = alloca %"class.std::vector.9", align 8
  %8 = alloca %"class.std::vector.110", align 8
  %9 = alloca %"class.std::vector.4", align 8
  %10 = alloca %"class.std::vector.4", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %14 = alloca %"class.std::shared_ptr", align 8
  %15 = alloca %"class.std::weak_ptr", align 8
  %16 = alloca %"class.std::shared_ptr", align 8
  %17 = alloca %"class.std::weak_ptr", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::pair.116", align 8
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.115", align 8
  %24 = alloca %"class.std::shared_ptr", align 8
  %25 = alloca %"class.std::weak_ptr", align 8
  %26 = alloca %"class.std::shared_ptr", align 8
  %27 = alloca %"class.std::weak_ptr", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"struct.std::pair.116", align 8
  %30 = alloca i8, align 1
  %31 = alloca %"class.std::vector.118", align 8
  %32 = alloca %"class.std::allocator.120", align 1
  %33 = alloca i32, align 4
  %34 = alloca %class.anon.124, align 8
  %35 = alloca %"class.std::shared_ptr", align 8
  %36 = alloca i64, align 8
  %37 = alloca %class.anon.125, align 8
  %38 = alloca %class.anon.125, align 8
  %39 = alloca %"class.std::vector.9", align 8
  %40 = alloca %"class.std::allocator.11", align 1
  %41 = alloca %"class.std::vector.9", align 8
  %42 = alloca %"class.std::allocator.11", align 1
  %43 = alloca %"class.std::shared_ptr", align 8
  %44 = alloca %"class.std::shared_ptr", align 8
  %45 = alloca %"class.std::shared_ptr", align 8
  %46 = alloca %"class.std::shared_ptr", align 8
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::shared_ptr", align 8
  %49 = alloca %"class.std::shared_ptr", align 8
  %50 = alloca %"class.std::shared_ptr", align 8
  %51 = alloca %"class.std::shared_ptr", align 8
  %52 = alloca %"class.std::shared_ptr", align 8
  %53 = alloca %"class.std::shared_ptr", align 8
  %54 = getelementptr inbounds i8, ptr %1, i64 128
  tail call void @_ZNSt5mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
  %55 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %56 = getelementptr inbounds i8, ptr %55, i64 20
  %57 = load i8, ptr %56, align 4, !tbaa !5, !range !29, !noundef !30
  %58 = trunc nuw i8 %57 to i1
  br i1 %58, label %64, label %59

59:                                               ; preds = %5
  %60 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %61 = getelementptr inbounds i8, ptr %60, i64 20
  %62 = load i8, ptr %61, align 4, !tbaa !5, !range !29, !noundef !30
  %63 = trunc nuw i8 %62 to i1
  br i1 %63, label %64, label %65

64:                                               ; preds = %59, %5
  tail call void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
  tail call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  br label %368

65:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %66 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = load i32, ptr %67, align 8, !tbaa !31
  %69 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %70 = getelementptr inbounds i8, ptr %69, i64 8
  %71 = load i32, ptr %70, align 8, !tbaa !31
  %72 = add nsw i32 %71, %68
  %73 = sext i32 %72 to i64
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %73)
          to label %74 unwind label %100

74:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %75 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  %77 = load i32, ptr %76, align 8, !tbaa !31
  %78 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %79 = getelementptr inbounds i8, ptr %78, i64 8
  %80 = load i32, ptr %79, align 8, !tbaa !31
  %81 = add nsw i32 %80, %77
  %82 = sext i32 %81 to i64
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %82)
          to label %83 unwind label %102

83:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %84 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %85 = getelementptr inbounds i8, ptr %84, i64 8
  %86 = load i32, ptr %85, align 8, !tbaa !31
  %87 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %88 = getelementptr inbounds i8, ptr %87, i64 8
  %89 = load i32, ptr %88, align 8, !tbaa !31
  %90 = add nsw i32 %89, %86
  %91 = sext i32 %90 to i64
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %91)
          to label %92 unwind label %104

92:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 0, ptr %11, align 4, !tbaa !32
  %93 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %94 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %93)
          to label %95 unwind label %106

95:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %96 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #6
  store ptr %96, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %97 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #6
  store ptr %97, ptr %13, align 8
  %98 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  br i1 %98, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %128, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  %99 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %.not108 = icmp eq i64 %99, 0
  br i1 %.not108, label %._crit_edge99, label %.lr.ph98

100:                                              ; preds = %65
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %367

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

104:                                              ; preds = %83
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %365

106:                                              ; preds = %92
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %364

.lr.ph:                                           ; preds = %95, %128
  %108 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  %109 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %15, ptr noundef nonnull align 8 dereferenceable(44) %109)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  %110 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  br i1 %110, label %.critedge94, label %.critedge

.critedge:                                        ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #6
  %111 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  call void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %17, ptr noundef nonnull align 8 dereferenceable(44) %111)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  %112 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br i1 %112, label %113, label %117

.critedge94:                                      ; preds = %.lr.ph
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %113

113:                                              ; preds = %.critedge94, %.critedge
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %114 unwind label %115

114:                                              ; preds = %113
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %128 unwind label %115

115:                                              ; preds = %114, %113
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %133

117:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  %118 = load i32, ptr %11, align 4, !tbaa !32
  store i32 %118, ptr %18, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  store i8 1, ptr %20, align 1, !tbaa !33
  %119 = invoke i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1) %20, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %120 unwind label %123

120:                                              ; preds = %117
  store i64 %119, ptr %19, align 8
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %121 unwind label %123

121:                                              ; preds = %120
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(16) %108)
          to label %122 unwind label %125

122:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %128

123:                                              ; preds = %120, %117
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  br label %127

125:                                              ; preds = %121
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %127

127:                                              ; preds = %125, %123
  %.pn78 = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %133

128:                                              ; preds = %114, %122
  %129 = load i32, ptr %11, align 4, !tbaa !32
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %11, align 4, !tbaa !32
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  %132 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  br i1 %132, label %.lr.ph, label %._crit_edge

133:                                              ; preds = %127, %115
  %.pn80 = phi { ptr, i32 } [ %116, %115 ], [ %.pn78, %127 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  br label %364

._crit_edge99:                                    ; preds = %143, %._crit_edge
  %134 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %135 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %134)
          to label %161 unwind label %167

.lr.ph98:                                         ; preds = %._crit_edge, %143
  %indvars.iv = phi i64 [ %indvars.iv.next, %143 ], [ 0, %._crit_edge ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  br label %136

136:                                              ; preds = %158, %.lr.ph98
  %storemerge = phi i32 [ 0, %.lr.ph98 ], [ %160, %158 ]
  store i32 %storemerge, ptr %21, align 4, !tbaa !32
  %137 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %138 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %137)
          to label %139 unwind label %146

139:                                              ; preds = %136
  %140 = sext i32 %storemerge to i64
  %141 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #6
  %142 = icmp ugt i64 %141, %140
  br i1 %142, label %148, label %143

143:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %144 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %145 = icmp ugt i64 %144, %indvars.iv.next
  br i1 %145, label %.lr.ph98, label %._crit_edge99, !llvm.loop !34

146:                                              ; preds = %157, %148, %136
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  br label %364

148:                                              ; preds = %139
  %149 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv) #6
  %150 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %151 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %150)
          to label %152 unwind label %146

152:                                              ; preds = %148
  %153 = load i32, ptr %21, align 4, !tbaa !32
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %154) #6
  %156 = call noundef zeroext i1 @_ZSteqIN6qtorch4WireES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 8 dereferenceable(16) %155) #6
  br i1 %156, label %157, label %158

157:                                              ; preds = %152
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %158 unwind label %146

158:                                              ; preds = %152, %157
  %159 = load i32, ptr %21, align 4, !tbaa !32
  %160 = add nsw i32 %159, 1
  br label %136, !llvm.loop !36

161:                                              ; preds = %._crit_edge99
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %162 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #6
  store ptr %162, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  %163 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #6
  store ptr %163, ptr %23, align 8
  %164 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br i1 %164, label %.lr.ph102, label %._crit_edge103

._crit_edge103:                                   ; preds = %184, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  %165 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  %166 = icmp eq i64 %165, 0
  br i1 %166, label %188, label %190

167:                                              ; preds = %._crit_edge99
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %364

.lr.ph102:                                        ; preds = %161, %184
  %.061100 = phi i32 [ %185, %184 ], [ 0, %161 ]
  %169 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  %170 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %169) #6
  call void @_ZN6qtorch4Wire8GetNodeBEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %25, ptr noundef nonnull align 8 dereferenceable(44) %170)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  %171 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  br i1 %171, label %.critedge95, label %.critedge90

.critedge90:                                      ; preds = %.lr.ph102
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  %172 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %169) #6
  call void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %27, ptr noundef nonnull align 8 dereferenceable(44) %172)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %27) #6
  %173 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br i1 %173, label %184, label %174

174:                                              ; preds = %.critedge90
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  store i32 %.061100, ptr %28, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #6
  store i8 0, ptr %30, align 1, !tbaa !33
  %175 = invoke i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %176 unwind label %179

176:                                              ; preds = %174
  store i64 %175, ptr %29, align 8
  invoke void @_ZNSt6vectorISt4pairIbiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(8) %29)
          to label %177 unwind label %179

177:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(16) %169)
          to label %178 unwind label %181

178:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  br label %184

179:                                              ; preds = %176, %174
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  br label %183

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

183:                                              ; preds = %181, %179
  %.pn74 = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %364

.critedge95:                                      ; preds = %.lr.ph102
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #6
  br label %184

184:                                              ; preds = %.critedge95, %178, %.critedge90
  %185 = add nuw nsw i32 %.061100, 1
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  %187 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #6
  br i1 %187, label %.lr.ph102, label %._crit_edge103

188:                                              ; preds = %._crit_edge103
  %189 = call noundef i64 @_ZNKSt6vectorISt4pairIbiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  %.not = icmp eq i64 %189, 0
  br i1 %.not, label %190, label %211

190:                                              ; preds = %188, %._crit_edge103
  %191 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %192 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %193 = getelementptr inbounds i8, ptr %192, i64 8
  %194 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %195 = getelementptr inbounds i8, ptr %194, i64 8
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %193, ptr noundef nonnull align 4 dereferenceable(4) %195)
  %197 = load i32, ptr %196, align 4, !tbaa !32
  %198 = add nsw i32 %197, %4
  %199 = sext i32 %198 to i64
  %200 = icmp ugt i64 %191, %199
  br i1 %200, label %211, label %201

201:                                              ; preds = %190
  %202 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %203 = getelementptr inbounds i8, ptr %202, i64 20
  %204 = load i8, ptr %203, align 4, !tbaa !5, !range !29, !noundef !30
  %205 = trunc nuw i8 %204 to i1
  br i1 %205, label %211, label %206

206:                                              ; preds = %201
  %207 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %208 = getelementptr inbounds i8, ptr %207, i64 20
  %209 = load i8, ptr %208, align 4, !tbaa !5, !range !29, !noundef !30
  %210 = trunc nuw i8 %209 to i1
  br i1 %210, label %211, label %215

211:                                              ; preds = %206, %201, %190, %188
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
          to label %212 unwind label %213

212:                                              ; preds = %211
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  br label %363

213:                                              ; preds = %211
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %364

215:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  %216 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  call void @_ZNSaISt4pairIiiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt6vectorISt4pairIiiESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %216, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %217 unwind label %269

217:                                              ; preds = %215
  call void @_ZNSt15__new_allocatorISt4pairIiiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  store i32 0, ptr %33, align 4, !tbaa !32
  %218 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  %219 = call ptr @_ZNSt6vectorISt4pairIiiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  store ptr %6, ptr %34, align 8, !tbaa !37
  %220 = getelementptr inbounds i8, ptr %34, i64 8
  store ptr %7, ptr %220, align 8, !tbaa !37
  %221 = getelementptr inbounds i8, ptr %34, i64 16
  store ptr %33, ptr %221, align 8, !tbaa !37
  invoke void @"_ZSt8generateIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZN6qtorch7Network13ContractNodesESt10shared_ptrINS9_4NodeEESD_iE3$_0EvT_SF_T0_"(ptr %218, ptr %219, ptr noundef nonnull byval(%class.anon.124) align 8 %34)
          to label %222 unwind label %271

222:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  %223 = call noundef i64 @_ZNKSt6vectorISt4pairIbiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  store i64 %223, ptr %36, align 8, !tbaa !38
  invoke void @_ZSt11make_sharedIN6qtorch4NodeEJmEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %224 unwind label %273

224:                                              ; preds = %222
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  %225 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %226 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  %227 = getelementptr inbounds i8, ptr %38, i64 16
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %227, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  %228 = getelementptr inbounds i8, ptr %38, i64 32
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %228, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  invoke void @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS5_SaIS5_EEEEZNS3_7Network13ContractNodesES2_INS3_4NodeEESD_iE3$_1ET0_T_SG_SF_"(ptr dead_on_unwind nonnull writable sret(%class.anon.125) align 8 %37, ptr %225, ptr %226, ptr noundef nonnull %38)
          to label %229 unwind label %275

229:                                              ; preds = %224
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %37) #6
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %38) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #6
  %230 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %231 = getelementptr inbounds i8, ptr %230, i64 8
  %232 = load i32, ptr %231, align 8, !tbaa !31
  %233 = sext i32 %232 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %233, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %234 unwind label %277

234:                                              ; preds = %229
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #6
  %235 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %236 = getelementptr inbounds i8, ptr %235, i64 8
  %237 = load i32, ptr %236, align 8, !tbaa !31
  %238 = sext i32 %237 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %238, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %239 unwind label %279

239:                                              ; preds = %234
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  %240 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %241 = getelementptr inbounds i8, ptr %240, i64 8
  %242 = load i32, ptr %241, align 8, !tbaa !31
  %243 = icmp sgt i32 %242, 7
  br i1 %243, label %244, label %283

244:                                              ; preds = %239
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.33)
          to label %246 unwind label %281

246:                                              ; preds = %244
  %247 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %248 = getelementptr inbounds i8, ptr %247, i64 8
  %249 = load i32, ptr %248, align 8, !tbaa !31
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %245, i32 noundef %249)
          to label %251 unwind label %281

251:                                              ; preds = %246
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @.str.34)
          to label %253 unwind label %281

253:                                              ; preds = %251
  %254 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %255 = getelementptr inbounds i8, ptr %254, i64 8
  %256 = load i32, ptr %255, align 8, !tbaa !31
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %252, i32 noundef %256)
          to label %258 unwind label %281

258:                                              ; preds = %253
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @.str.35)
          to label %260 unwind label %281

260:                                              ; preds = %258
  %261 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %262 = getelementptr inbounds i8, ptr %261, i64 8
  %263 = load i32, ptr %262, align 8, !tbaa !31
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %259, i32 noundef %263)
          to label %265 unwind label %281

265:                                              ; preds = %260
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef nonnull @.str.36)
          to label %267 unwind label %281

267:                                              ; preds = %265
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %283 unwind label %281

269:                                              ; preds = %215
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIiiEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  br label %362

271:                                              ; preds = %217
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %361

273:                                              ; preds = %222
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  br label %360

275:                                              ; preds = %224
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48) %38) #6
  br label %359

277:                                              ; preds = %229
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #6
  br label %358

279:                                              ; preds = %234
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %357

281:                                              ; preds = %351, %331, %330, %._crit_edge107, %267, %265, %260, %258, %253, %251, %246, %244
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %356

283:                                              ; preds = %267, %239
  %284 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %285 = getelementptr inbounds i8, ptr %284, i64 20
  store i8 1, ptr %285, align 4, !tbaa !5
  %286 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %287 = getelementptr inbounds i8, ptr %286, i64 20
  store i8 1, ptr %287, align 4, !tbaa !5
  %288 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %.not109 = icmp eq i64 %288, 0
  br i1 %.not109, label %._crit_edge107, label %.lr.ph106

._crit_edge107:                                   ; preds = %.lr.ph106, %283
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
          to label %293 unwind label %281

.lr.ph106:                                        ; preds = %283, %.lr.ph106
  %indvars.iv111 = phi i64 [ %indvars.iv.next112, %.lr.ph106 ], [ 0, %283 ]
  %289 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv111) #6
  %290 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %289) #6
  call void @_ZN6qtorch4Wire15SetIsContractedEb(ptr noundef nonnull align 8 dereferenceable(44) %290, i1 noundef zeroext true)
  %indvars.iv.next112 = add nuw nsw i64 %indvars.iv111, 1
  %291 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  %292 = icmp ugt i64 %291, %indvars.iv.next112
  br i1 %292, label %.lr.ph106, label %._crit_edge107, !llvm.loop !39

293:                                              ; preds = %._crit_edge107
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  invoke void @_ZN6qtorch7Network15ContractIndicesERKSt6vectorISt4pairIbiESaIS3_EERKS1_IS2_IiiESaIS8_EERS1_IiSaIiEESF_St10shared_ptrINS_4NodeEESI_SI_(ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45)
          to label %294 unwind label %320

294:                                              ; preds = %293
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  %295 = getelementptr inbounds i8, ptr %1, i64 176
  %296 = load i8, ptr %295, align 8, !tbaa !40, !range !29, !noundef !30
  %297 = trunc nuw i8 %296 to i1
  br i1 %297, label %298, label %330

298:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #6
  store i32 0, ptr %47, align 4, !tbaa !32
  invoke void @_ZSt11make_sharedIN6qtorch4NodeEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %46, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %299 unwind label %322

299:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  %300 = getelementptr inbounds i8, ptr %1, i64 184
  %301 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %300) #6
  %302 = trunc i64 %301 to i32
  %303 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  %304 = getelementptr inbounds i8, ptr %303, i64 12
  store i32 %302, ptr %304, align 4, !tbaa !59
  %305 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %306 = getelementptr inbounds i8, ptr %305, i64 12
  %307 = load i32, ptr %306, align 4, !tbaa !59
  %308 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  %309 = getelementptr inbounds i8, ptr %308, i64 24
  store i32 %307, ptr %309, align 8, !tbaa !60
  %310 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %311 = getelementptr inbounds i8, ptr %310, i64 12
  %312 = load i32, ptr %311, align 4, !tbaa !59
  %313 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  %314 = getelementptr inbounds i8, ptr %313, i64 28
  store i32 %312, ptr %314, align 4, !tbaa !61
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %300, ptr noundef nonnull align 8 dereferenceable(16) %46)
          to label %315 unwind label %324

315:                                              ; preds = %299
  %316 = getelementptr inbounds i8, ptr %1, i64 232
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  invoke void @_ZNK6qtorch7Network13FindAndRemoveERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_(ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef nonnull align 8 dereferenceable(24) %316, ptr noundef nonnull %48)
          to label %317 unwind label %326

317:                                              ; preds = %315
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef nonnull align 8 dereferenceable(24) %316, ptr noundef nonnull %49, ptr noundef nonnull %50)
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #6
  %318 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %318)
  %319 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %319)
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #6
  br label %355

320:                                              ; preds = %293
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  br label %356

322:                                              ; preds = %298
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  br label %329

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

326:                                              ; preds = %315
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #6
  br label %328

328:                                              ; preds = %326, %324
  %.pn = phi { ptr, i32 } [ %327, %326 ], [ %325, %324 ]
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #6
  br label %329

329:                                              ; preds = %328, %322
  %.pn.pn = phi { ptr, i32 } [ %.pn, %328 ], [ %323, %322 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #6
  br label %356

330:                                              ; preds = %294
  invoke void @_ZNSt5mutex4lockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
          to label %331 unwind label %281

331:                                              ; preds = %330
  %332 = getelementptr inbounds i8, ptr %1, i64 184
  %333 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %332) #6
  %334 = trunc i64 %333 to i32
  %335 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %336 = getelementptr inbounds i8, ptr %335, i64 12
  store i32 %334, ptr %336, align 4, !tbaa !59
  %337 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  %338 = getelementptr inbounds i8, ptr %337, i64 12
  %339 = load i32, ptr %338, align 4, !tbaa !59
  %340 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %341 = getelementptr inbounds i8, ptr %340, i64 24
  store i32 %339, ptr %341, align 8, !tbaa !60
  %342 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  %343 = getelementptr inbounds i8, ptr %342, i64 12
  %344 = load i32, ptr %343, align 4, !tbaa !59
  %345 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %346 = getelementptr inbounds i8, ptr %345, i64 28
  store i32 %344, ptr %346, align 4, !tbaa !61
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %332, ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %347 unwind label %281

347:                                              ; preds = %331
  %348 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %348)
  %349 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @_ZN6qtorch4Node13ClearNodeDataEv(ptr noundef nonnull align 8 dereferenceable(152) %349)
  %350 = getelementptr inbounds i8, ptr %1, i64 232
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %2) #6
  invoke void @_ZNK6qtorch7Network13FindAndRemoveERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_(ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull %51)
          to label %351 unwind label %353

351:                                              ; preds = %347
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(16) %3) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %1, ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull %52, ptr noundef nonnull %53)
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  invoke void @_ZNSt5mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(40) %54)
          to label %352 unwind label %281

352:                                              ; preds = %351
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  br label %355

353:                                              ; preds = %347
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  br label %356

355:                                              ; preds = %352, %317
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %363

356:                                              ; preds = %353, %329, %320, %281
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %329 ], [ %282, %281 ], [ %354, %353 ], [ %321, %320 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  br label %357

357:                                              ; preds = %356, %279
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %356 ], [ %280, %279 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  br label %358

358:                                              ; preds = %357, %277
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %357 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  br label %359

359:                                              ; preds = %358, %275
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %358 ], [ %276, %275 ]
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  br label %360

360:                                              ; preds = %359, %273
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %359 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  br label %361

361:                                              ; preds = %360, %271
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %360 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @_ZNSt6vectorISt4pairIiiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  br label %362

362:                                              ; preds = %361, %269
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %361 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  br label %364

363:                                              ; preds = %355, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  br label %368

364:                                              ; preds = %213, %362, %183, %167, %106, %133, %146
  %.pn80.pn.pn = phi { ptr, i32 } [ %147, %146 ], [ %.pn80, %133 ], [ %107, %106 ], [ %214, %213 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %362 ], [ %.pn74, %183 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %365

365:                                              ; preds = %364, %104
  %.pn80.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn, %364 ], [ %105, %104 ]
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %366

366:                                              ; preds = %365, %102
  %.pn80.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn, %365 ], [ %103, %102 ]
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  br label %367

367:                                              ; preds = %366, %100
  %.pn80.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn80.pn.pn.pn.pn, %366 ], [ %101, %100 ]
  call void @_ZNSt6vectorISt4pairIbiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  resume { ptr, i32 } %.pn80.pn.pn.pn.pn.pn

368:                                              ; preds = %363, %64
  ret void
}

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIbiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIbiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIbiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairIbiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZSt8generateIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEZN6qtorch7Network13ContractNodesESt10shared_ptrINS9_4NodeEESD_iE3$_0EvT_SF_T0_"(ptr, ptr, ptr noundef byval(%class.anon.124) align 8) local_unnamed_addr #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN6qtorch4NodeEJmEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4WireEESt6vectorIS5_SaIS5_EEEEZNS3_7Network13ContractNodesES2_INS3_4NodeEESD_iE3$_1ET0_T_SG_SF_"(ptr dead_on_unwind noalias writable sret(%class.anon.125) align 8, ptr, ptr, ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_iEN3$_1D2Ev"(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6qtorch7Network15ContractIndicesERKSt6vectorISt4pairIbiESaIS3_EERKS1_IS2_IiiESaIS8_EERS1_IiSaIiEESF_St10shared_ptrINS_4NodeEESI_SI_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN6qtorch4NodeEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES4_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6qtorch7Network13FindAndRemoveERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorISt10shared_ptrINS_4NodeEESaIS4_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

!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, !10, i64 20}
!6 = !{!"_ZTSN6qtorch4NodeE", !7, i64 8, !7, i64 12, !7, i64 16, !10, i64 20, !11, i64 24, !10, i64 32, !12, i64 40, !17, i64 64, !21, i64 88, !25, i64 112, !26, i64 120}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSSt4pairIiiE", !7, i64 0, !7, i64 4}
!12 = !{!"_ZTSSt6vectorISt7complexIdESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseISt7complexIdESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!21 = !{!"_ZTSSt6vectorIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!25 = !{!"_ZTSN6qtorch8GateTypeE", !8, i64 0}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !27, i64 0, !28, i64 8, !8, i64 16}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!28 = !{!"long", !8, i64 0}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!6, !7, i64 8}
!32 = !{!7, !7, i64 0}
!33 = !{!10, !10, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!16, !16, i64 0}
!38 = !{!28, !28, i64 0}
!39 = distinct !{!39, !35}
!40 = !{!41, !10, i64 176}
!41 = !{!"_ZTSN6qtorch7NetworkE", !42, i64 0, !17, i64 24, !26, i64 48, !26, i64 80, !46, i64 112, !47, i64 128, !7, i64 168, !7, i64 172, !10, i64 176, !10, i64 177, !42, i64 184, !49, i64 208, !42, i64 232, !53, i64 256, !53, i64 312, !58, i64 368, !7, i64 376}
!42 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!46 = !{!"_ZTSSt7complexIdE", !8, i64 0}
!47 = !{!"_ZTSSt5mutex", !48, i64 0}
!48 = !{!"_ZTSSt12__mutex_base", !8, i64 0}
!49 = !{!"_ZTSSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!53 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S5_EEE", !54, i64 0}
!54 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !28, i64 8, !55, i64 16, !28, i64 24, !56, i64 32, !16, i64 48}
!55 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!56 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !57, i64 0, !28, i64 8}
!57 = !{!"float", !8, i64 0}
!58 = !{!"long long", !8, i64 0}
!59 = !{!6, !7, i64 12}
!60 = !{!6, !7, i64 24}
!61 = !{!6, !7, i64 28}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass