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

; 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::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.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::allocator.21" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.138" = type { ptr }
%"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::allocator" = type { i8 }
%"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::allocator.16" = type { i8 }
%"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::allocator.11" = type { i8 }
%"class.std::vector.139" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.144" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.147" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.148 = 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::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.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::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 }

@.str.38 = external hidden unnamed_addr constant [23 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: 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 #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152)) #3 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)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef) #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 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)) #1 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 #1 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)) #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6qtorch7Network13ReduceCircuitEv(ptr noundef nonnull align 8 dereferenceable(380) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::vector.19", align 8
  %4 = alloca %"class.std::allocator.21", align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.std::shared_ptr", align 8
  %18 = alloca %"class.std::shared_ptr", align 8
  %19 = alloca %"class.std::shared_ptr", align 8
  %20 = alloca %"class.std::shared_ptr", align 8
  %21 = alloca %"class.std::weak_ptr", align 8
  %22 = alloca %"class.std::shared_ptr", align 8
  %23 = alloca %"class.std::weak_ptr", 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::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::shared_ptr", align 8
  %30 = alloca %"class.std::shared_ptr", align 8
  %31 = alloca %"class.std::shared_ptr", align 8
  %32 = alloca %"class.std::shared_ptr", align 8
  %33 = alloca %"class.std::vector.19", align 8
  %34 = alloca %"class.std::allocator.21", align 1
  %35 = alloca %"class.std::vector.14", align 8
  %36 = alloca %"class.std::allocator.16", align 1
  %37 = alloca %"class.std::vector.9", align 8
  %38 = alloca %"class.std::allocator.11", align 1
  %39 = alloca %"class.std::vector.139", align 8
  %40 = alloca %"class.std::allocator.144", align 1
  %41 = alloca %"struct.std::_Bit_iterator", align 8
  %42 = alloca { ptr, i32 }, align 8
  %43 = alloca %"struct.std::_Bit_iterator", align 8
  %44 = alloca { ptr, i32 }, align 8
  %45 = alloca i8, align 1
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %48 = alloca i32, align 4
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca i32, align 4
  %52 = alloca %"struct.std::_Bit_reference", align 8
  %53 = alloca %"class.std::shared_ptr", align 8
  %54 = alloca %"struct.std::_Bit_reference", align 8
  %55 = alloca %"struct.std::_Bit_reference", align 8
  %56 = alloca %"struct.std::_Bit_reference", align 8
  %57 = alloca %"class.std::shared_ptr", align 8
  %58 = alloca %"class.std::shared_ptr", align 8
  %59 = alloca %"class.std::shared_ptr", align 8
  %60 = alloca %"struct.std::_Bit_reference", align 8
  %61 = alloca %"struct.std::_Bit_reference", align 8
  %62 = alloca i32, align 4
  %63 = alloca %"struct.std::_Bit_reference", align 8
  %64 = alloca %"class.std::shared_ptr", align 8
  %65 = alloca %"struct.std::_Bit_iterator", align 8
  %66 = alloca { ptr, i32 }, align 8
  %67 = alloca %"struct.std::_Bit_iterator", align 8
  %68 = alloca { ptr, i32 }, align 8
  %69 = alloca %class.anon.148, align 1
  %70 = alloca %"struct.std::_Bit_iterator", align 8
  %71 = alloca { ptr, i32 }, align 8
  %72 = alloca %"struct.std::_Bit_iterator", align 8
  %73 = alloca { ptr, i32 }, align 8
  %74 = alloca i8, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %75 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #6
  %76 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %77 = load i32, ptr %76, align 8, !tbaa !9
  %78 = sext i32 %77 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  call void @_ZNSaISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %78, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %79 unwind label %90

79:                                               ; preds = %1
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  store i32 0, ptr %7, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %80 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  store ptr %80, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = call ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #6
  %83 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %9, i32 0, i32 0
  store ptr %82, ptr %83, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = call ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #6
  %86 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %10, i32 0, i32 0
  store ptr %85, ptr %86, align 8
  br label %87

87:                                               ; preds = %246, %79
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  br i1 %88, label %94, label %89

89:                                               ; preds = %87
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  br label %248

90:                                               ; preds = %1
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %5, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %6, align 4
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  br label %772

94:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %95 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  store ptr %95, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %96, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %97) #6
  %99 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %14, i32 0, i32 0
  store ptr %98, ptr %99, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %100 = load ptr, ptr %13, align 8, !tbaa !5
  %101 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #6
  %102 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %15, i32 0, i32 0
  store ptr %101, ptr %102, align 8
  br label %103

103:                                              ; preds = %240, %94
  %104 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  br i1 %104, label %106, label %105

105:                                              ; preds = %103
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %243

106:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %107 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  store ptr %107, ptr %16, align 8, !tbaa !5
  %108 = load ptr, ptr %16, align 8, !tbaa !5
  %109 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %108) #6
  %110 = getelementptr inbounds %"class.qtorch::Node", ptr %109, i32 0, i32 1
  %111 = load i32, ptr %110, align 8, !tbaa !38
  %112 = icmp eq i32 %111, 2
  br i1 %112, label %113, label %229

113:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #6
  %114 = load i32, ptr %7, align 4, !tbaa !37
  %115 = sext i32 %114 to i64
  %116 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %115) #6
  %117 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %116) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %117) #6
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %118) #6
  invoke void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %17, ptr noundef nonnull align 8 dereferenceable(380) %75, ptr noundef %18, ptr noundef %19, i32 noundef 0)
          to label %119 unwind label %160

119:                                              ; preds = %113
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  %120 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  %121 = load ptr, ptr %16, align 8, !tbaa !5
  %122 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %121) #6
  %123 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %122)
          to label %124 unwind label %164

124:                                              ; preds = %119
  %125 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef 0) #6
  %126 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %125) #6
  invoke void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %21, ptr noundef nonnull align 8 dereferenceable(44) %126)
          to label %127 unwind label %164

127:                                              ; preds = %124
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %21) #6
  %128 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  %129 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %128)
          to label %130 unwind label %168

130:                                              ; preds = %127
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef 0) #6
  %132 = load i32, ptr %131, align 4, !tbaa !37
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %120, i32 noundef %132)
          to label %133 unwind label %168

133:                                              ; preds = %130
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #6
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %134) #6
  %136 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %135)
          to label %137 unwind label %173

137:                                              ; preds = %133
  %138 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef 0) #6
  %139 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %138) #6
  invoke void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %23, ptr noundef nonnull align 8 dereferenceable(44) %139)
          to label %140 unwind label %173

140:                                              ; preds = %137
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  %141 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  %142 = getelementptr inbounds %"class.qtorch::Node", ptr %141, i32 0, i32 1
  %143 = load i32, ptr %142, align 8, !tbaa !38
  %144 = icmp sgt i32 %143, 2
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br i1 %144, label %145, label %186

145:                                              ; preds = %140
  %146 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %147) #6
  %149 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %148)
          to label %150 unwind label %177

150:                                              ; preds = %145
  %151 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef 0) #6
  %152 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %151) #6
  invoke void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind writable sret(%"class.std::weak_ptr") align 8 %25, ptr noundef nonnull align 8 dereferenceable(44) %152)
          to label %153 unwind label %177

153:                                              ; preds = %150
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  %154 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  %155 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %154)
          to label %156 unwind label %181

156:                                              ; preds = %153
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef 1) #6
  %158 = load i32, ptr %157, align 4, !tbaa !37
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %146, i32 noundef %158)
          to label %159 unwind label %181

159:                                              ; preds = %156
  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 %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  br label %186

160:                                              ; preds = %113
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %5, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  br label %228

164:                                              ; preds = %124, %119
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %5, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %6, align 4
  br label %172

168:                                              ; preds = %130, %127
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %5, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #6
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #6
  br label %172

172:                                              ; preds = %168, %164
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  br label %227

173:                                              ; preds = %137, %133
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %5, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  br label %227

177:                                              ; preds = %150, %145
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %5, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %6, align 4
  br label %185

181:                                              ; preds = %156, %153
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %5, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %6, align 4
  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
  br label %185

185:                                              ; preds = %181, %177
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  br label %227

186:                                              ; preds = %159, %140
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #6
  %187 = load i32, ptr %7, align 4, !tbaa !37
  %188 = sext i32 %187 to i64
  %189 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %188) #6
  %190 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %190) #6
  %191 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  %192 = invoke noundef i32 @_ZNK6qtorch4Node13GetTypeOfNodeEv(ptr noundef nonnull align 8 dereferenceable(152) %191)
          to label %193 unwind label %201

193:                                              ; preds = %186
  %194 = icmp eq i32 %192, 14
  br i1 %194, label %195, label %214

195:                                              ; preds = %193
  %196 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZN6qtorch4Node13SetTypeOfNodeENS_8GateTypeE(ptr noundef nonnull align 8 dereferenceable(152) %196, i32 noundef 14)
          to label %197 unwind label %201

197:                                              ; preds = %195
  %198 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %199 unwind label %205

199:                                              ; preds = %197
  invoke void @_ZN6qtorch4Node19SetTypeOfNodeStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %198, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %200 unwind label %209

200:                                              ; preds = %199
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %214

201:                                              ; preds = %195, %186
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %5, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %6, align 4
  br label %226

205:                                              ; preds = %197
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %5, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %6, align 4
  br label %213

209:                                              ; preds = %199
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %5, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %213

213:                                              ; preds = %209, %205
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  br label %226

214:                                              ; preds = %200, %193
  %215 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  invoke void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorIS1_ISt10shared_ptrINS_4NodeEESaIS4_EESaIS6_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %75, ptr noundef nonnull align 8 dereferenceable(24) %215, ptr noundef %29, ptr noundef %30)
          to label %216 unwind label %218

216:                                              ; preds = %214
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  invoke void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorIS1_ISt10shared_ptrINS_4NodeEESaIS4_EESaIS6_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %75, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef %31, ptr noundef %32)
          to label %217 unwind label %222

217:                                              ; preds = %216
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #6
  br label %239

218:                                              ; preds = %214
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %5, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  br label %226

222:                                              ; preds = %216
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %5, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  br label %226

226:                                              ; preds = %222, %218, %213, %201
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  br label %227

227:                                              ; preds = %226, %185, %173, %172
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  br label %228

228:                                              ; preds = %227, %160
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #6
  br label %242

229:                                              ; preds = %106
  %230 = load i32, ptr %7, align 4, !tbaa !37
  %231 = sext i32 %230 to i64
  %232 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %231) #6
  %233 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %232, ptr noundef nonnull align 8 dereferenceable(16) %233)
          to label %234 unwind label %235

234:                                              ; preds = %229
  br label %239

235:                                              ; preds = %229
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %5, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %6, align 4
  br label %242

239:                                              ; preds = %234, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %240

240:                                              ; preds = %239
  %241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  br label %103

242:                                              ; preds = %235, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  br label %771

243:                                              ; preds = %105
  %244 = load i32, ptr %7, align 4, !tbaa !37
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %7, align 4, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br label %246

246:                                              ; preds = %243
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  br label %87

248:                                              ; preds = %89
  %249 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %250 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %249, ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #6
  %251 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %252 = load i32, ptr %251, align 8, !tbaa !9
  %253 = sext i32 %252 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @_ZNSaISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %253, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %254 unwind label %298

254:                                              ; preds = %248
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #6
  %255 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %256 = load i32, ptr %255, align 8, !tbaa !9
  %257 = sext i32 %256 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaISt10shared_ptrIN6qtorch4NodeEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %257, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %258 unwind label %302

258:                                              ; preds = %254
  call void @_ZNSt15__new_allocatorISt10shared_ptrIN6qtorch4NodeEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #6
  %259 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %260 = load i32, ptr %259, align 8, !tbaa !9
  %261 = sext i32 %260 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %261, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %262 unwind label %306

262:                                              ; preds = %258
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr %39) #6
  %263 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %264 = load i32, ptr %263, align 8, !tbaa !9
  %265 = sext i32 %264 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #6
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %265, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %266 unwind label %310

266:                                              ; preds = %262
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  %267 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %267, ptr %42, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %41, ptr align 8 %42, i64 12, i1 false)
  %268 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %268, ptr %44, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %44, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  store i8 0, ptr %45, align 1, !tbaa !50
  %269 = getelementptr inbounds { ptr, i32 }, ptr %41, i32 0, i32 0
  %270 = load ptr, ptr %269, align 8
  %271 = getelementptr inbounds { ptr, i32 }, ptr %41, i32 0, i32 1
  %272 = load i32, ptr %271, align 8
  %273 = getelementptr inbounds { ptr, i32 }, ptr %43, i32 0, i32 0
  %274 = load ptr, ptr %273, align 8
  %275 = getelementptr inbounds { ptr, i32 }, ptr %43, i32 0, i32 1
  %276 = load i32, ptr %275, align 8
  invoke void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr %270, i32 %272, ptr %274, i32 %276, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %277 unwind label %314

277:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  %278 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %46, i32 0, i32 0
  store ptr %278, ptr %279, align 8
  %280 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %281 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %47, i32 0, i32 0
  store ptr %280, ptr %281, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 0, ptr %48, align 4, !tbaa !37
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %46, i32 0, i32 0
  %283 = load ptr, ptr %282, align 8
  %284 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %47, i32 0, i32 0
  %285 = load ptr, ptr %284, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_RKT0_(ptr %283, ptr %285, ptr noundef nonnull align 4 dereferenceable(4) %48)
          to label %286 unwind label %318

286:                                              ; preds = %277
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  store i8 0, ptr %49, align 1, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  store i8 0, ptr %50, align 1, !tbaa !50
  br label %287

287:                                              ; preds = %757, %286
  %288 = load i8, ptr %49, align 1, !tbaa !50, !range !51, !noundef !52
  %289 = trunc i8 %288 to i1
  %290 = xor i1 %289, true
  br i1 %290, label %291, label %762

291:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 0, ptr %51, align 4, !tbaa !37
  br label %292

292:                                              ; preds = %647, %291
  %293 = load i32, ptr %51, align 4, !tbaa !37
  %294 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 6
  %295 = load i32, ptr %294, align 8, !tbaa !9
  %296 = icmp slt i32 %293, %295
  br i1 %296, label %322, label %297

297:                                              ; preds = %292
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %652

298:                                              ; preds = %248
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %5, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %6, align 4
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  br label %770

302:                                              ; preds = %254
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %5, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %6, align 4
  call void @_ZNSt15__new_allocatorISt10shared_ptrIN6qtorch4NodeEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  br label %769

306:                                              ; preds = %258
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %5, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  br label %768

310:                                              ; preds = %262
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %5, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #6
  br label %767

314:                                              ; preds = %266
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %5, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %766

318:                                              ; preds = %277
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %5, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %766

322:                                              ; preds = %292
  %323 = load i32, ptr %51, align 4, !tbaa !37
  %324 = sext i32 %323 to i64
  %325 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %324) #6
  %326 = load i32, ptr %325, align 4, !tbaa !37
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %329 = load i32, ptr %51, align 4, !tbaa !37
  %330 = sext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %328, i64 noundef %330) #6
  %332 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %331) #6
  %333 = icmp uge i64 %327, %332
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  br i1 %333, label %344, label %334

334:                                              ; preds = %322
  %335 = load i32, ptr %51, align 4, !tbaa !37
  %336 = sext i32 %335 to i64
  %337 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %336)
          to label %338 unwind label %347

338:                                              ; preds = %334
  %339 = getelementptr inbounds { ptr, i64 }, ptr %52, i32 0, i32 0
  %340 = extractvalue { ptr, i64 } %337, 0
  store ptr %340, ptr %339, align 8
  %341 = getelementptr inbounds { ptr, i64 }, ptr %52, i32 0, i32 1
  %342 = extractvalue { ptr, i64 } %337, 1
  store i64 %342, ptr %341, align 8
  %343 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %52) #6
  br label %344

344:                                              ; preds = %338, %322
  %345 = phi i1 [ true, %322 ], [ %343, %338 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  br i1 %345, label %346, label %351

346:                                              ; preds = %344
  br label %647

347:                                              ; preds = %334
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %5, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  br label %651

351:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #6
  %352 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %353 = load i32, ptr %51, align 4, !tbaa !37
  %354 = sext i32 %353 to i64
  %355 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %352, i64 noundef %354) #6
  %356 = load i32, ptr %51, align 4, !tbaa !37
  %357 = sext i32 %356 to i64
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %357) #6
  %359 = load i32, ptr %358, align 4, !tbaa !37
  %360 = sext i32 %359 to i64
  %361 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %360) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 8 dereferenceable(16) %361) #6
  %362 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %363 = getelementptr inbounds %"class.qtorch::Node", ptr %362, i32 0, i32 1
  %364 = load i32, ptr %363, align 8, !tbaa !38
  %365 = icmp eq i32 %364, 1
  br i1 %365, label %366, label %399

366:                                              ; preds = %351
  %367 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %368 = load i32, ptr %51, align 4, !tbaa !37
  %369 = sext i32 %368 to i64
  %370 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %369) #6
  %371 = load i32, ptr %51, align 4, !tbaa !37
  %372 = sext i32 %371 to i64
  %373 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %372) #6
  %374 = load i32, ptr %373, align 4, !tbaa !37
  %375 = sext i32 %374 to i64
  %376 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef %375) #6
  %377 = load i32, ptr %51, align 4, !tbaa !37
  %378 = sext i32 %377 to i64
  %379 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %378) #6
  %380 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %379, ptr noundef nonnull align 8 dereferenceable(16) %376) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #6
  %381 = load i32, ptr %51, align 4, !tbaa !37
  %382 = sext i32 %381 to i64
  %383 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %382)
          to label %384 unwind label %395

384:                                              ; preds = %366
  %385 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 0
  %386 = extractvalue { ptr, i64 } %383, 0
  store ptr %386, ptr %385, align 8
  %387 = getelementptr inbounds { ptr, i64 }, ptr %54, i32 0, i32 1
  %388 = extractvalue { ptr, i64 } %383, 1
  store i64 %388, ptr %387, align 8
  %389 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %54, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #6
  %390 = load i32, ptr %51, align 4, !tbaa !37
  %391 = sext i32 %390 to i64
  %392 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %391) #6
  %393 = load i32, ptr %392, align 4, !tbaa !37
  %394 = add nsw i32 %393, 1
  store i32 %394, ptr %392, align 4, !tbaa !37
  store i32 10, ptr %11, align 4
  br label %644

395:                                              ; preds = %366
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %5, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #6
  br label %650

399:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #6
  %400 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #6
  %401 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %400)
          to label %402 unwind label %544

402:                                              ; preds = %399
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef 1) #6
  %404 = load i32, ptr %403, align 4, !tbaa !37
  %405 = sext i32 %404 to i64
  %406 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %405)
          to label %407 unwind label %544

407:                                              ; preds = %402
  %408 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 0
  %409 = extractvalue { ptr, i64 } %406, 0
  store ptr %409, ptr %408, align 8
  %410 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 1
  %411 = extractvalue { ptr, i64 } %406, 1
  store i64 %411, ptr %410, align 8
  %412 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55) #6
  br i1 %412, label %428, label %413

413:                                              ; preds = %407
  %414 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %415 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %414)
          to label %416 unwind label %548

416:                                              ; preds = %413
  %417 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %415, i64 noundef 0) #6
  %418 = load i32, ptr %417, align 4, !tbaa !37
  %419 = sext i32 %418 to i64
  %420 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %419)
          to label %421 unwind label %548

421:                                              ; preds = %416
  %422 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 0
  %423 = extractvalue { ptr, i64 } %420, 0
  store ptr %423, ptr %422, align 8
  %424 = getelementptr inbounds { ptr, i64 }, ptr %56, i32 0, i32 1
  %425 = extractvalue { ptr, i64 } %420, 1
  store i64 %425, ptr %424, align 8
  %426 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %56) #6
  %427 = xor i1 %426, true
  br label %428

428:                                              ; preds = %421, %407
  %429 = phi i1 [ false, %407 ], [ %427, %421 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  br i1 %429, label %430, label %642

430:                                              ; preds = %428
  %431 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %432 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %433 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %432)
          to label %434 unwind label %553

434:                                              ; preds = %430
  %435 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %433, i64 noundef 0) #6
  %436 = load i32, ptr %435, align 4, !tbaa !37
  %437 = sext i32 %436 to i64
  %438 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %437) #6
  %439 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %440 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %439)
          to label %441 unwind label %553

441:                                              ; preds = %434
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %440, i64 noundef 0) #6
  %443 = load i32, ptr %442, align 4, !tbaa !37
  %444 = sext i32 %443 to i64
  %445 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %444) #6
  %446 = load i32, ptr %445, align 4, !tbaa !37
  %447 = sext i32 %446 to i64
  %448 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %438, i64 noundef %447) #6
  %449 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %450 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %451 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %450)
          to label %452 unwind label %553

452:                                              ; preds = %441
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %451, i64 noundef 1) #6
  %454 = load i32, ptr %453, align 4, !tbaa !37
  %455 = sext i32 %454 to i64
  %456 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %449, i64 noundef %455) #6
  %457 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %458 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %457)
          to label %459 unwind label %553

459:                                              ; preds = %452
  %460 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %458, i64 noundef 1) #6
  %461 = load i32, ptr %460, align 4, !tbaa !37
  %462 = sext i32 %461 to i64
  %463 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %462) #6
  %464 = load i32, ptr %463, align 4, !tbaa !37
  %465 = sext i32 %464 to i64
  %466 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %456, i64 noundef %465) #6
  %467 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull align 8 dereferenceable(16) %466) #6
  br i1 %467, label %468, label %641

468:                                              ; preds = %459
  %469 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %470 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %469)
          to label %471 unwind label %553

471:                                              ; preds = %468
  %472 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %470, i64 noundef 0) #6
  %473 = load i32, ptr %472, align 4, !tbaa !37
  %474 = sext i32 %473 to i64
  %475 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %474) #6
  %476 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %477 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %476)
          to label %478 unwind label %553

478:                                              ; preds = %471
  %479 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %477, i64 noundef 1) #6
  %480 = load i32, ptr %479, align 4, !tbaa !37
  %481 = sext i32 %480 to i64
  %482 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %481) #6
  %483 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %475, ptr noundef nonnull align 8 dereferenceable(16) %482) #6
  br i1 %483, label %484, label %571

484:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %58, ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  %485 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %486 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %485)
          to label %487 unwind label %557

487:                                              ; preds = %484
  %488 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %486, i64 noundef 0) #6
  %489 = load i32, ptr %488, align 4, !tbaa !37
  %490 = sext i32 %489 to i64
  %491 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %490) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull align 8 dereferenceable(16) %491) #6
  invoke void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %57, ptr noundef nonnull align 8 dereferenceable(380) %75, ptr noundef %58, ptr noundef %59, i32 noundef 0)
          to label %492 unwind label %561

492:                                              ; preds = %487
  %493 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %494 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %493)
          to label %495 unwind label %565

495:                                              ; preds = %492
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %494, i64 noundef 0) #6
  %497 = load i32, ptr %496, align 4, !tbaa !37
  %498 = sext i32 %497 to i64
  %499 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %498) #6
  %500 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %499, ptr noundef nonnull align 8 dereferenceable(16) %57) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #6
  %501 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %502 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %501)
          to label %503 unwind label %553

503:                                              ; preds = %495
  %504 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %502, i64 noundef 0) #6
  %505 = load i32, ptr %504, align 4, !tbaa !37
  %506 = sext i32 %505 to i64
  %507 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %506) #6
  %508 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %509 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %508)
          to label %510 unwind label %553

510:                                              ; preds = %503
  %511 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %509, i64 noundef 1) #6
  %512 = load i32, ptr %511, align 4, !tbaa !37
  %513 = sext i32 %512 to i64
  %514 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %513) #6
  %515 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %514, ptr noundef nonnull align 8 dereferenceable(16) %507) #6
  %516 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %517 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %516)
          to label %518 unwind label %553

518:                                              ; preds = %510
  %519 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %517, i64 noundef 0) #6
  %520 = load i32, ptr %519, align 4, !tbaa !37
  %521 = sext i32 %520 to i64
  %522 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %521) #6
  %523 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %522) #6
  %524 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %525 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %524)
          to label %526 unwind label %553

526:                                              ; preds = %518
  %527 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %525, i64 noundef 0) #6
  %528 = load i32, ptr %527, align 4, !tbaa !37
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %523, i32 noundef %528)
          to label %529 unwind label %553

529:                                              ; preds = %526
  %530 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %531 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %530)
          to label %532 unwind label %553

532:                                              ; preds = %529
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %531, i64 noundef 0) #6
  %534 = load i32, ptr %533, align 4, !tbaa !37
  %535 = sext i32 %534 to i64
  %536 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %535) #6
  %537 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %536) #6
  %538 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %539 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %538)
          to label %540 unwind label %553

540:                                              ; preds = %532
  %541 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %539, i64 noundef 1) #6
  %542 = load i32, ptr %541, align 4, !tbaa !37
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %537, i32 noundef %542)
          to label %543 unwind label %553

543:                                              ; preds = %540
  store i8 1, ptr %50, align 1, !tbaa !50
  br label %588

544:                                              ; preds = %402, %399
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %5, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %6, align 4
  br label %552

548:                                              ; preds = %416, %413
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %5, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #6
  br label %552

552:                                              ; preds = %548, %544
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  br label %650

553:                                              ; preds = %591, %588, %574, %571, %540, %532, %529, %526, %518, %510, %503, %495, %471, %468, %452, %441, %434, %430
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %5, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %6, align 4
  br label %650

557:                                              ; preds = %484
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %5, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %6, align 4
  br label %570

561:                                              ; preds = %487
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %5, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %6, align 4
  br label %569

565:                                              ; preds = %492
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %5, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #6
  br label %569

569:                                              ; preds = %565, %561
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #6
  br label %570

570:                                              ; preds = %569, %557
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #6
  br label %650

571:                                              ; preds = %478
  %572 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %573 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %572)
          to label %574 unwind label %553

574:                                              ; preds = %571
  %575 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %573, i64 noundef 0) #6
  %576 = load i32, ptr %575, align 4, !tbaa !37
  %577 = sext i32 %576 to i64
  %578 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %577) #6
  %579 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %578, ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  %580 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %581 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %580)
          to label %582 unwind label %553

582:                                              ; preds = %574
  %583 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %581, i64 noundef 1) #6
  %584 = load i32, ptr %583, align 4, !tbaa !37
  %585 = sext i32 %584 to i64
  %586 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %585) #6
  %587 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %586, ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  br label %588

588:                                              ; preds = %582, %543
  %589 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %590 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %589)
          to label %591 unwind label %553

591:                                              ; preds = %588
  %592 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %590, i64 noundef 0) #6
  %593 = load i32, ptr %592, align 4, !tbaa !37
  %594 = sext i32 %593 to i64
  %595 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %594) #6
  %596 = load i32, ptr %595, align 4, !tbaa !37
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %595, align 4, !tbaa !37
  %598 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %599 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %598)
          to label %600 unwind label %553

600:                                              ; preds = %591
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef 1) #6
  %602 = load i32, ptr %601, align 4, !tbaa !37
  %603 = sext i32 %602 to i64
  %604 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %603) #6
  %605 = load i32, ptr %604, align 4, !tbaa !37
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr %604, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #6
  %607 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %608 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %607)
          to label %609 unwind label %633

609:                                              ; preds = %600
  %610 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %608, i64 noundef 0) #6
  %611 = load i32, ptr %610, align 4, !tbaa !37
  %612 = sext i32 %611 to i64
  %613 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %612)
          to label %614 unwind label %633

614:                                              ; preds = %609
  %615 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 0
  %616 = extractvalue { ptr, i64 } %613, 0
  store ptr %616, ptr %615, align 8
  %617 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 1
  %618 = extractvalue { ptr, i64 } %613, 1
  store i64 %618, ptr %617, align 8
  %619 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %60, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #6
  %620 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %621 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %620)
          to label %622 unwind label %637

622:                                              ; preds = %614
  %623 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %621, i64 noundef 1) #6
  %624 = load i32, ptr %623, align 4, !tbaa !37
  %625 = sext i32 %624 to i64
  %626 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %625)
          to label %627 unwind label %637

627:                                              ; preds = %622
  %628 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 0
  %629 = extractvalue { ptr, i64 } %626, 0
  store ptr %629, ptr %628, align 8
  %630 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 1
  %631 = extractvalue { ptr, i64 } %626, 1
  store i64 %631, ptr %630, align 8
  %632 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %61, i1 noundef zeroext true) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #6
  br label %641

633:                                              ; preds = %609, %600
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %5, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  br label %650

637:                                              ; preds = %622, %614
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %5, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #6
  br label %650

641:                                              ; preds = %627, %459
  br label %642

642:                                              ; preds = %641, %428
  br label %643

643:                                              ; preds = %642
  store i32 0, ptr %11, align 4
  br label %644

644:                                              ; preds = %643, %384
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  %645 = load i32, ptr %11, align 4
  switch i32 %645, label %778 [
    i32 0, label %646
    i32 10, label %647
  ]

646:                                              ; preds = %644
  br label %647

647:                                              ; preds = %646, %644, %346
  %648 = load i32, ptr %51, align 4, !tbaa !37
  %649 = add nsw i32 %648, 1
  store i32 %649, ptr %51, align 4, !tbaa !37
  br label %292, !llvm.loop !53

650:                                              ; preds = %637, %633, %570, %553, %552, %395
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  br label %651

651:                                              ; preds = %650, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %765

652:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  store i32 0, ptr %62, align 4, !tbaa !37
  br label %653

653:                                              ; preds = %724, %652
  %654 = load i32, ptr %62, align 4, !tbaa !37
  %655 = sext i32 %654 to i64
  %656 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  %657 = icmp ult i64 %655, %656
  br i1 %657, label %659, label %658

658:                                              ; preds = %653
  store i32 11, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %728

659:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #6
  %660 = load i32, ptr %62, align 4, !tbaa !37
  %661 = sext i32 %660 to i64
  %662 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %661)
          to label %663 unwind label %681

663:                                              ; preds = %659
  %664 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %665 = extractvalue { ptr, i64 } %662, 0
  store ptr %665, ptr %664, align 8
  %666 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %667 = extractvalue { ptr, i64 } %662, 1
  store i64 %667, ptr %666, align 8
  %668 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %63) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #6
  br i1 %668, label %669, label %698

669:                                              ; preds = %663
  %670 = load i8, ptr %50, align 1, !tbaa !50, !range !51, !noundef !52
  %671 = trunc i8 %670 to i1
  br i1 %671, label %672, label %685

672:                                              ; preds = %669
  %673 = load i32, ptr %62, align 4, !tbaa !37
  %674 = sext i32 %673 to i64
  %675 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %674) #6
  %676 = load i32, ptr %62, align 4, !tbaa !37
  %677 = sext i32 %676 to i64
  %678 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %677) #6
  %679 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %678) #6
  %680 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %679, ptr noundef nonnull align 8 dereferenceable(16) %675) #6
  br label %697

681:                                              ; preds = %659
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %5, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #6
  br label %727

685:                                              ; preds = %669
  %686 = load i32, ptr %62, align 4, !tbaa !37
  %687 = sext i32 %686 to i64
  %688 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %687) #6
  %689 = load i32, ptr %62, align 4, !tbaa !37
  %690 = sext i32 %689 to i64
  %691 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %690) #6
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %688, ptr noundef nonnull align 8 dereferenceable(16) %691)
          to label %692 unwind label %693

692:                                              ; preds = %685
  br label %697

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

697:                                              ; preds = %692, %672
  br label %723

698:                                              ; preds = %663
  %699 = load i32, ptr %62, align 4, !tbaa !37
  %700 = sext i32 %699 to i64
  %701 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %700) #6
  %702 = load i32, ptr %701, align 4, !tbaa !37
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %705 = load i32, ptr %62, align 4, !tbaa !37
  %706 = sext i32 %705 to i64
  %707 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %704, i64 noundef %706) #6
  %708 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %707) #6
  %709 = icmp ult i64 %703, %708
  br i1 %709, label %710, label %722

710:                                              ; preds = %698
  %711 = load i8, ptr %50, align 1, !tbaa !50, !range !51, !noundef !52
  %712 = trunc i8 %711 to i1
  br i1 %712, label %722, label %713

713:                                              ; preds = %710
  %714 = load i32, ptr %62, align 4, !tbaa !37
  %715 = sext i32 %714 to i64
  %716 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %715) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #6
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr null) #6
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %716, ptr noundef nonnull align 8 dereferenceable(16) %64)
          to label %717 unwind label %718

717:                                              ; preds = %713
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #6
  br label %722

718:                                              ; preds = %713
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %5, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %6, align 4
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #6
  br label %727

722:                                              ; preds = %717, %710, %698
  br label %723

723:                                              ; preds = %722, %697
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %62, align 4, !tbaa !37
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %62, align 4, !tbaa !37
  br label %653, !llvm.loop !55

727:                                              ; preds = %718, %693, %681
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %765

728:                                              ; preds = %658
  %729 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %729, ptr %66, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %66, i64 12, i1 false)
  %730 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %730, ptr %68, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %67, ptr align 8 %68, i64 12, i1 false)
  %731 = getelementptr inbounds { ptr, i32 }, ptr %65, i32 0, i32 0
  %732 = load ptr, ptr %731, align 8
  %733 = getelementptr inbounds { ptr, i32 }, ptr %65, i32 0, i32 1
  %734 = load i32, ptr %733, align 8
  %735 = getelementptr inbounds { ptr, i32 }, ptr %67, i32 0, i32 0
  %736 = load ptr, ptr %735, align 8
  %737 = getelementptr inbounds { ptr, i32 }, ptr %67, i32 0, i32 1
  %738 = load i32, ptr %737, align 8
  %739 = invoke noundef zeroext i1 @"_ZSt6all_ofISt13_Bit_iteratorZN6qtorch7Network13ReduceCircuitEvE3$_0EbT_S4_T0_"(ptr %732, i32 %734, ptr %736, i32 %738)
          to label %740 unwind label %742

740:                                              ; preds = %728
  br i1 %739, label %741, label %746

741:                                              ; preds = %740
  store i8 1, ptr %49, align 1, !tbaa !50
  br label %746

742:                                              ; preds = %728
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %5, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %6, align 4
  br label %765

746:                                              ; preds = %741, %740
  %747 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %747, ptr %71, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %70, ptr align 8 %71, i64 12, i1 false)
  %748 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  store { ptr, i32 } %748, ptr %73, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %73, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #6
  store i8 0, ptr %74, align 1, !tbaa !50
  %749 = getelementptr inbounds { ptr, i32 }, ptr %70, i32 0, i32 0
  %750 = load ptr, ptr %749, align 8
  %751 = getelementptr inbounds { ptr, i32 }, ptr %70, i32 0, i32 1
  %752 = load i32, ptr %751, align 8
  %753 = getelementptr inbounds { ptr, i32 }, ptr %72, i32 0, i32 0
  %754 = load ptr, ptr %753, align 8
  %755 = getelementptr inbounds { ptr, i32 }, ptr %72, i32 0, i32 1
  %756 = load i32, ptr %755, align 8
  invoke void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr %750, i32 %752, ptr %754, i32 %756, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %757 unwind label %758

757:                                              ; preds = %746
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  store i8 0, ptr %50, align 1, !tbaa !50
  br label %287, !llvm.loop !56

758:                                              ; preds = %746
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %5, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  br label %765

762:                                              ; preds = %287
  %763 = getelementptr inbounds %"class.qtorch::Network", ptr %75, i32 0, i32 12
  %764 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %763, ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #6
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #6
  ret void

765:                                              ; preds = %758, %742, %727, %651
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %766

766:                                              ; preds = %765, %318, %314
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #6
  br label %767

767:                                              ; preds = %766, %310
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  br label %768

768:                                              ; preds = %767, %306
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #6
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  br label %769

769:                                              ; preds = %768, %302
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #6
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  br label %770

770:                                              ; preds = %769, %298
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #6
  br label %771

771:                                              ; preds = %770, %242
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  br label %772

772:                                              ; preds = %771, %90
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #6
  br label %773

773:                                              ; preds = %772
  %774 = load ptr, ptr %5, align 8
  %775 = load i32, ptr %6, align 4
  %776 = insertvalue { ptr, i32 } poison, ptr %774, 0
  %777 = insertvalue { ptr, i32 } %776, i32 %775, 1
  resume { ptr, i32 } %777

778:                                              ; preds = %644
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(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(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_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_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6qtorch4Node19SetTypeOfNodeStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6all_ofISt13_Bit_iteratorZN6qtorch7Network13ReduceCircuitEvE3$_0EbT_S4_T0_"(ptr, i32, ptr, i32) #4

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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, !25, i64 168}
!10 = !{!"_ZTSN6qtorch7NetworkE", !11, i64 0, !15, i64 24, !19, i64 48, !19, i64 80, !22, i64 112, !23, i64 128, !25, i64 168, !25, i64 172, !26, i64 176, !26, i64 177, !11, i64 184, !27, i64 208, !11, i64 232, !31, i64 256, !31, i64 312, !36, i64 368, !25, i64 376}
!11 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !20, i64 0, !21, i64 8, !7, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTSSt7complexIdE", !7, i64 0}
!23 = !{!"_ZTSSt5mutex", !24, i64 0}
!24 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!25 = !{!"int", !7, i64 0}
!26 = !{!"bool", !7, i64 0}
!27 = !{!"_ZTSSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S5_EEE", !32, i64 0}
!32 = !{!"_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, !21, i64 8, !33, i64 16, !21, i64 24, !34, i64 32, !6, i64 48}
!33 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!34 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !35, i64 0, !21, i64 8}
!35 = !{!"float", !7, i64 0}
!36 = !{!"long long", !7, i64 0}
!37 = !{!25, !25, i64 0}
!38 = !{!39, !25, i64 8}
!39 = !{!"_ZTSN6qtorch4NodeE", !25, i64 8, !25, i64 12, !25, i64 16, !26, i64 20, !40, i64 24, !26, i64 32, !41, i64 40, !15, i64 64, !45, i64 88, !49, i64 112, !19, i64 120}
!40 = !{!"_ZTSSt4pairIiiE", !25, i64 0, !25, i64 4}
!41 = !{!"_ZTSSt6vectorISt7complexIdESaIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseISt7complexIdESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorIiSaIiEE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSN6qtorch8GateTypeE", !7, i64 0}
!50 = !{!26, !26, i64 0}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = distinct !{!55, !54}
!56 = distinct !{!56, !54}


; 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::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.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::allocator.21" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.138" = type { ptr }
%"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::allocator" = type { i8 }
%"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::allocator.16" = type { i8 }
%"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::allocator.11" = type { i8 }
%"class.std::vector.139" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::allocator.144" = type { i8 }
%"struct.std::_Bit_reference" = type { ptr, i64 }

@.str.38 = external hidden unnamed_addr constant [23 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: 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 #1 align 2

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

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

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

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

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

; 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 #1 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_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: inlinehint mustprogress uwtable
declare dso_local void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 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 #1 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 #1 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 #1 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 #1 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 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 #1 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 #1 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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, ptr noundef, i32 noundef) 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 #1 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 #4

; 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 uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6qtorch7Network13ReduceCircuitEv(ptr noundef nonnull align 8 dereferenceable(380) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector.19", align 8
  %3 = alloca %"class.std::allocator.21", align 1
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %8 = alloca %"class.std::shared_ptr", align 8
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::shared_ptr", align 8
  %11 = alloca %"class.std::shared_ptr", align 8
  %12 = alloca %"class.std::weak_ptr", align 8
  %13 = alloca %"class.std::shared_ptr", align 8
  %14 = alloca %"class.std::weak_ptr", align 8
  %15 = alloca %"class.std::shared_ptr", align 8
  %16 = alloca %"class.std::weak_ptr", align 8
  %17 = alloca %"class.std::shared_ptr", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::shared_ptr", align 8
  %21 = alloca %"class.std::shared_ptr", align 8
  %22 = alloca %"class.std::shared_ptr", align 8
  %23 = alloca %"class.std::shared_ptr", align 8
  %24 = alloca %"class.std::vector.19", align 8
  %25 = alloca %"class.std::allocator.21", align 1
  %26 = alloca %"class.std::vector.14", align 8
  %27 = alloca %"class.std::allocator.16", align 1
  %28 = alloca %"class.std::vector.9", align 8
  %29 = alloca %"class.std::allocator.11", align 1
  %30 = alloca %"class.std::vector.139", align 8
  %31 = alloca %"class.std::allocator.144", align 1
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca %"struct.std::_Bit_reference", align 8
  %35 = alloca %"class.std::shared_ptr", align 8
  %36 = alloca %"struct.std::_Bit_reference", align 8
  %37 = alloca %"struct.std::_Bit_reference", align 8
  %38 = alloca %"struct.std::_Bit_reference", align 8
  %39 = alloca %"class.std::shared_ptr", align 8
  %40 = alloca %"class.std::shared_ptr", align 8
  %41 = alloca %"class.std::shared_ptr", align 8
  %42 = alloca %"struct.std::_Bit_reference", align 8
  %43 = alloca %"struct.std::_Bit_reference", align 8
  %44 = alloca %"struct.std::_Bit_reference", align 8
  %45 = alloca %"class.std::shared_ptr", align 8
  %46 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #5
  %47 = getelementptr inbounds i8, ptr %0, i64 168
  %48 = load i32, ptr %47, align 8, !tbaa !5
  %49 = sext i32 %48 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #5
  call void @_ZNSaISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #5
  invoke void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %49, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %50 unwind label %58

50:                                               ; preds = %1
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #5
  %51 = getelementptr inbounds i8, ptr %0, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  %52 = call ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #5
  store ptr %52, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  %53 = call ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #5
  store ptr %53, ptr %5, align 8
  %54 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  br i1 %54, label %.lr.ph142, label %._crit_edge143

._crit_edge143:                                   ; preds = %._crit_edge, %50
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  %55 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #5
  %56 = load i32, ptr %47, align 8, !tbaa !5
  %57 = sext i32 %56 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #5
  call void @_ZNSaISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  invoke void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %57, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %147 unwind label %174

58:                                               ; preds = %1
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #5
  br label %470

.lr.ph142:                                        ; preds = %50, %._crit_edge
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %50 ]
  %60 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %61 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #5
  store ptr %61, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %62 = call ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #5
  store ptr %62, ptr %7, align 8
  %63 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  br i1 %63, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %143, %.lr.ph142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #5
  %65 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS5_EES1_IS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  br i1 %65, label %.lr.ph142, label %._crit_edge143

.lr.ph:                                           ; preds = %.lr.ph142, %143
  %66 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %67 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %66) #5
  %68 = getelementptr inbounds i8, ptr %67, i64 8
  %69 = load i32, ptr %68, align 8, !tbaa !36
  %70 = icmp eq i32 %69, 2
  br i1 %70, label %71, label %139

71:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  %72 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv) #5
  %73 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %73) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %66) #5
  invoke void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %8, ptr noundef nonnull align 8 dereferenceable(380) %0, ptr noundef nonnull %9, ptr noundef nonnull %10, i32 noundef 0)
          to label %74 unwind label %107

74:                                               ; preds = %71
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  %75 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  %76 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %66) #5
  %77 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %76)
          to label %78 unwind label %109

78:                                               ; preds = %74
  %79 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef 0) #5
  %80 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %79) #5
  call void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %12, ptr noundef nonnull align 8 dereferenceable(44) %80)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  %81 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %11) #5
  %82 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %81)
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef 0) #5
  %84 = load i32, ptr %83, align 4, !tbaa !48
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %75, i32 noundef %84)
          to label %85 unwind label %111

85:                                               ; preds = %78
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  %86 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %66) #5
  %87 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %86)
          to label %88 unwind label %114

88:                                               ; preds = %85
  %89 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef 0) #5
  %90 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %89) #5
  call void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %14, ptr noundef nonnull align 8 dereferenceable(44) %90)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  %91 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %13) #5
  %92 = getelementptr inbounds i8, ptr %91, i64 8
  %93 = load i32, ptr %92, align 8, !tbaa !36
  %94 = icmp sgt i32 %93, 2
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  br i1 %94, label %95, label %121

95:                                               ; preds = %88
  %96 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  %97 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %66) #5
  %98 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6qtorch4Node8GetWiresEv(ptr noundef nonnull align 8 dereferenceable(152) %97)
          to label %99 unwind label %116

99:                                               ; preds = %95
  %100 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef 0) #5
  %101 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4WireELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %100) #5
  call void @_ZN6qtorch4Wire8GetNodeAEv(ptr dead_on_unwind nonnull writable sret(%"class.std::weak_ptr") align 8 %16, ptr noundef nonnull align 8 dereferenceable(44) %101)
  call void @_ZNKSt8weak_ptrIN6qtorch4NodeEE4lockEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  %102 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %15) #5
  %103 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %102)
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef 1) #5
  %105 = load i32, ptr %104, align 4, !tbaa !48
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %96, i32 noundef %105)
          to label %106 unwind label %118

106:                                              ; preds = %99
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br label %121

107:                                              ; preds = %71
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  br label %138

109:                                              ; preds = %74
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %113

111:                                              ; preds = %78
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  br label %113

113:                                              ; preds = %111, %109
  %.pn120 = phi { ptr, i32 } [ %112, %111 ], [ %110, %109 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br label %138

114:                                              ; preds = %85
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  br label %138

116:                                              ; preds = %95
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %120

118:                                              ; preds = %99
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @_ZNSt10__weak_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  br label %120

120:                                              ; preds = %118, %116
  %.pn122 = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br label %138

121:                                              ; preds = %106, %88
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  %122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv) #5
  %123 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %122) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %123) #5
  %124 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %17) #5
  %125 = call noundef i32 @_ZNK6qtorch4Node13GetTypeOfNodeEv(ptr noundef nonnull align 8 dereferenceable(152) %124)
  %126 = icmp eq i32 %125, 14
  br i1 %126, label %127, label %137

127:                                              ; preds = %121
  %128 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #5
  call void @_ZN6qtorch4Node13SetTypeOfNodeENS_8GateTypeE(ptr noundef nonnull align 8 dereferenceable(152) %128, i32 noundef 14)
  %129 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.38, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %130 unwind label %132

130:                                              ; preds = %127
  invoke void @_ZN6qtorch4Node19SetTypeOfNodeStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %129, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %131 unwind label %134

131:                                              ; preds = %130
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  br label %137

132:                                              ; preds = %127
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %136

134:                                              ; preds = %130
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #5
  br label %136

136:                                              ; preds = %134, %132
  %.pn124 = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  br label %138

137:                                              ; preds = %131, %121
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorIS1_ISt10shared_ptrINS_4NodeEESaIS4_EESaIS6_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %0, ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull %20, ptr noundef nonnull %21)
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @_ZNK6qtorch7Network14FindAndReplaceERSt6vectorIS1_ISt10shared_ptrINS_4NodeEESaIS4_EESaIS6_EES4_S4_(ptr noundef nonnull align 8 dereferenceable(380) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull %22, ptr noundef nonnull %23)
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %143

138:                                              ; preds = %113, %114, %120, %136, %107
  %.sink = phi ptr [ %9, %107 ], [ %8, %136 ], [ %8, %120 ], [ %8, %114 ], [ %8, %113 ]
  %.pn124.pn.pn = phi { ptr, i32 } [ %108, %107 ], [ %.pn124, %136 ], [ %.pn122, %120 ], [ %115, %114 ], [ %.pn120, %113 ]
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.sink) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %146

139:                                              ; preds = %.lr.ph
  %140 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %indvars.iv) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef nonnull align 8 dereferenceable(16) %66)
          to label %143 unwind label %141

141:                                              ; preds = %139
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %146

143:                                              ; preds = %139, %137
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %145 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN6qtorch4NodeEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  br i1 %145, label %.lr.ph, label %._crit_edge

146:                                              ; preds = %141, %138
  %.pn124.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn, %138 ], [ %142, %141 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  br label %469

147:                                              ; preds = %._crit_edge143
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #5
  %148 = load i32, ptr %47, align 8, !tbaa !5
  %149 = sext i32 %148 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #5
  call void @_ZNSaISt10shared_ptrIN6qtorch4NodeEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %149, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %150 unwind label %176

150:                                              ; preds = %147
  call void @_ZNSt15__new_allocatorISt10shared_ptrIN6qtorch4NodeEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #5
  %151 = load i32, ptr %47, align 8, !tbaa !5
  %152 = sext i32 %151 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #5
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #5
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %152, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %153 unwind label %178

153:                                              ; preds = %150
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %30) #5
  %154 = load i32, ptr %47, align 8, !tbaa !5
  %155 = sext i32 %154 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #5
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %155, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %156 unwind label %180

156:                                              ; preds = %153
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  %157 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract55 = extractvalue { ptr, i32 } %157, 0
  %.fca.1.extract56 = extractvalue { ptr, i32 } %157, 1
  %158 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract49 = extractvalue { ptr, i32 } %158, 0
  %.fca.1.extract50 = extractvalue { ptr, i32 } %158, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #5
  store i8 0, ptr %32, align 1, !tbaa !49
  invoke void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr %.fca.0.extract55, i32 %.fca.1.extract56, ptr %.fca.0.extract49, i32 %.fca.1.extract50, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %159 unwind label %182

159:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #5
  %160 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  %161 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  store i32 0, ptr %33, align 4, !tbaa !48
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_RKT0_(ptr %160, ptr %161, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %162 unwind label %184

162:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  %163 = getelementptr inbounds i8, ptr %34, i64 8
  %164 = getelementptr inbounds i8, ptr %37, i64 8
  %165 = getelementptr inbounds i8, ptr %38, i64 8
  %166 = getelementptr inbounds i8, ptr %42, i64 8
  %167 = getelementptr inbounds i8, ptr %43, i64 8
  %168 = getelementptr inbounds i8, ptr %36, i64 8
  %169 = getelementptr inbounds i8, ptr %44, i64 8
  br label %.preheader131

.preheader131:                                    ; preds = %162, %459
  %170 = load i32, ptr %47, align 8, !tbaa !5
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %.lr.ph146, label %.preheader

.preheader:                                       ; preds = %412, %.preheader131
  %.1100.lcssa = phi i8 [ 0, %.preheader131 ], [ %.5104, %412 ]
  %172 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.not152 = icmp eq i64 %172, 0
  br i1 %.not152, label %._crit_edge149, label %.lr.ph148

.lr.ph148:                                        ; preds = %.preheader
  %173 = trunc nuw i8 %.1100.lcssa to i1
  br label %420

174:                                              ; preds = %._crit_edge143
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  br label %468

176:                                              ; preds = %147
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt10shared_ptrIN6qtorch4NodeEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  br label %467

178:                                              ; preds = %150
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  br label %466

180:                                              ; preds = %153
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  br label %465

182:                                              ; preds = %156
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #5
  br label %464

184:                                              ; preds = %159
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  br label %464

.lr.ph146:                                        ; preds = %.preheader131, %412
  %indvars.iv154 = phi i64 [ %indvars.iv.next155, %412 ], [ 0, %.preheader131 ]
  %.1100145 = phi i8 [ %.5104, %412 ], [ 0, %.preheader131 ]
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv154) #5
  %187 = load i32, ptr %186, align 4, !tbaa !48
  %188 = sext i32 %187 to i64
  %189 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv154) #5
  %190 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #5
  %.not = icmp ugt i64 %190, %188
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #5
  br i1 %.not, label %191, label %.critedge

191:                                              ; preds = %.lr.ph146
  %192 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %indvars.iv154)
          to label %193 unwind label %197

193:                                              ; preds = %191
  %194 = extractvalue { ptr, i64 } %192, 0
  store ptr %194, ptr %34, align 8
  %195 = extractvalue { ptr, i64 } %192, 1
  store i64 %195, ptr %163, align 8
  %196 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  br i1 %196, label %412, label %199

.critedge:                                        ; preds = %.lr.ph146
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  br label %412

197:                                              ; preds = %191
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  br label %464

199:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #5
  %200 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv154) #5
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv154) #5
  %202 = load i32, ptr %201, align 4, !tbaa !48
  %203 = sext i32 %202 to i64
  %204 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %203) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %204) #5
  %205 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = load i32, ptr %206, align 8, !tbaa !36
  %208 = icmp eq i32 %207, 1
  br i1 %208, label %209, label %227

209:                                              ; preds = %199
  %210 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv154) #5
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv154) #5
  %212 = load i32, ptr %211, align 4, !tbaa !48
  %213 = sext i32 %212 to i64
  %214 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %210, i64 noundef %213) #5
  %215 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv154) #5
  %216 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 8 dereferenceable(16) %214) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #5
  %217 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %indvars.iv154)
          to label %218 unwind label %225

218:                                              ; preds = %209
  %219 = extractvalue { ptr, i64 } %217, 0
  store ptr %219, ptr %36, align 8
  %220 = extractvalue { ptr, i64 } %217, 1
  store i64 %220, ptr %168, align 8
  %221 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %36, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #5
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv154) #5
  %223 = load i32, ptr %222, align 4, !tbaa !48
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %222, align 4, !tbaa !48
  br label %411

225:                                              ; preds = %209
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #5
  br label %416

227:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #5
  %228 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #5
  %229 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %228)
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %229, i64 noundef 1) #5
  %231 = load i32, ptr %230, align 4, !tbaa !48
  %232 = sext i32 %231 to i64
  %233 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %232)
          to label %234 unwind label %346

234:                                              ; preds = %227
  %235 = extractvalue { ptr, i64 } %233, 0
  store ptr %235, ptr %37, align 8
  %236 = extractvalue { ptr, i64 } %233, 1
  store i64 %236, ptr %164, align 8
  %237 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  br i1 %237, label %.critedge2, label %238

238:                                              ; preds = %234
  %239 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %240 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %239)
  %241 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef 0) #5
  %242 = load i32, ptr %241, align 4, !tbaa !48
  %243 = sext i32 %242 to i64
  %244 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %243)
          to label %245 unwind label %348

245:                                              ; preds = %238
  %246 = extractvalue { ptr, i64 } %244, 0
  store ptr %246, ptr %38, align 8
  %247 = extractvalue { ptr, i64 } %244, 1
  store i64 %247, ptr %165, align 8
  %248 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #5
  br i1 %248, label %411, label %249

249:                                              ; preds = %245
  %250 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %251 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %250)
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #5
  %253 = load i32, ptr %252, align 4, !tbaa !48
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %254) #5
  %256 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %257 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %256)
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef 0) #5
  %259 = load i32, ptr %258, align 4, !tbaa !48
  %260 = sext i32 %259 to i64
  %261 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %260) #5
  %262 = load i32, ptr %261, align 4, !tbaa !48
  %263 = sext i32 %262 to i64
  %264 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef %263) #5
  %265 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %266 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %265)
  %267 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef 1) #5
  %268 = load i32, ptr %267, align 4, !tbaa !48
  %269 = sext i32 %268 to i64
  %270 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %269) #5
  %271 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %272 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %271)
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef 1) #5
  %274 = load i32, ptr %273, align 4, !tbaa !48
  %275 = sext i32 %274 to i64
  %276 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %275) #5
  %277 = load i32, ptr %276, align 4, !tbaa !48
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %270, i64 noundef %278) #5
  %280 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %264, ptr noundef nonnull align 8 dereferenceable(16) %279) #5
  br i1 %280, label %281, label %411

281:                                              ; preds = %249
  %282 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %283 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %282)
  %284 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef 0) #5
  %285 = load i32, ptr %284, align 4, !tbaa !48
  %286 = sext i32 %285 to i64
  %287 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %286) #5
  %288 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %289 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %288)
  %290 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef 1) #5
  %291 = load i32, ptr %290, align 4, !tbaa !48
  %292 = sext i32 %291 to i64
  %293 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %292) #5
  %294 = call noundef zeroext i1 @_ZSteqIN6qtorch4NodeES1_EbRKSt10shared_ptrIT_ERKS2_IT0_E(ptr noundef nonnull align 8 dereferenceable(16) %287, ptr noundef nonnull align 8 dereferenceable(16) %293) #5
  br i1 %294, label %295, label %355

295:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  %296 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %297 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %296)
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef 0) #5
  %299 = load i32, ptr %298, align 4, !tbaa !48
  %300 = sext i32 %299 to i64
  %301 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %300) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %301) #5
  invoke void @_ZN6qtorch7Network13ContractNodesESt10shared_ptrINS_4NodeEES3_i(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %39, ptr noundef nonnull align 8 dereferenceable(380) %0, ptr noundef nonnull %40, ptr noundef nonnull %41, i32 noundef 0)
          to label %302 unwind label %353

302:                                              ; preds = %295
  %303 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %304 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %303)
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %304, i64 noundef 0) #5
  %306 = load i32, ptr %305, align 4, !tbaa !48
  %307 = sext i32 %306 to i64
  %308 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %307) #5
  %309 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(16) %308, ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #5
  %310 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %311 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %310)
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef 0) #5
  %313 = load i32, ptr %312, align 4, !tbaa !48
  %314 = sext i32 %313 to i64
  %315 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %314) #5
  %316 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %317 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %316)
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef 1) #5
  %319 = load i32, ptr %318, align 4, !tbaa !48
  %320 = sext i32 %319 to i64
  %321 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %320) #5
  %322 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %321, ptr noundef nonnull align 8 dereferenceable(16) %315) #5
  %323 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %324 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %323)
  %325 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef 0) #5
  %326 = load i32, ptr %325, align 4, !tbaa !48
  %327 = sext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %327) #5
  %329 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %328) #5
  %330 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %331 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %330)
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %331, i64 noundef 0) #5
  %333 = load i32, ptr %332, align 4, !tbaa !48
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %329, i32 noundef %333)
          to label %334 unwind label %351

334:                                              ; preds = %302
  %335 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %336 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %335)
  %337 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef 0) #5
  %338 = load i32, ptr %337, align 4, !tbaa !48
  %339 = sext i32 %338 to i64
  %340 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %339) #5
  %341 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %340) #5
  %342 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %343 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %342)
  %344 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %343, i64 noundef 1) #5
  %345 = load i32, ptr %344, align 4, !tbaa !48
  invoke void @_ZN6qtorch4Node13AddWireNumberEi(ptr noundef nonnull align 8 dereferenceable(152) %341, i32 noundef %345)
          to label %370 unwind label %351

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

348:                                              ; preds = %238
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  br label %350

350:                                              ; preds = %348, %346
  %.pn109 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #5
  br label %416

351:                                              ; preds = %334, %302
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %416

353:                                              ; preds = %295
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #5
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #5
  br label %416

355:                                              ; preds = %281
  %356 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %357 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %356)
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %357, i64 noundef 0) #5
  %359 = load i32, ptr %358, align 4, !tbaa !48
  %360 = sext i32 %359 to i64
  %361 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %360) #5
  %362 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %361, ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  %363 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %364 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %363)
  %365 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef 1) #5
  %366 = load i32, ptr %365, align 4, !tbaa !48
  %367 = sext i32 %366 to i64
  %368 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %367) #5
  %369 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %368, ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %370

370:                                              ; preds = %334, %355
  %.2101 = phi i8 [ %.1100145, %355 ], [ 1, %334 ]
  %371 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %372 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %371)
  %373 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef 0) #5
  %374 = load i32, ptr %373, align 4, !tbaa !48
  %375 = sext i32 %374 to i64
  %376 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %375) #5
  %377 = load i32, ptr %376, align 4, !tbaa !48
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %376, align 4, !tbaa !48
  %379 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %380 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %379)
  %381 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %380, i64 noundef 1) #5
  %382 = load i32, ptr %381, align 4, !tbaa !48
  %383 = sext i32 %382 to i64
  %384 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %383) #5
  %385 = load i32, ptr %384, align 4, !tbaa !48
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %384, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #5
  %387 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %388 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %387)
  %389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef 0) #5
  %390 = load i32, ptr %389, align 4, !tbaa !48
  %391 = sext i32 %390 to i64
  %392 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %391)
          to label %393 unwind label %407

393:                                              ; preds = %370
  %394 = extractvalue { ptr, i64 } %392, 0
  store ptr %394, ptr %42, align 8
  %395 = extractvalue { ptr, i64 } %392, 1
  store i64 %395, ptr %166, align 8
  %396 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %42, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #5
  %397 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  %398 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6qtorch4Node13GetWireNumberEv(ptr noundef nonnull align 8 dereferenceable(152) %397)
  %399 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %398, i64 noundef 1) #5
  %400 = load i32, ptr %399, align 4, !tbaa !48
  %401 = sext i32 %400 to i64
  %402 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %401)
          to label %403 unwind label %409

403:                                              ; preds = %393
  %404 = extractvalue { ptr, i64 } %402, 0
  store ptr %404, ptr %43, align 8
  %405 = extractvalue { ptr, i64 } %402, 1
  store i64 %405, ptr %167, align 8
  %406 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %43, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #5
  br label %411

407:                                              ; preds = %370
  %408 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #5
  br label %416

409:                                              ; preds = %393
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #5
  br label %416

.critedge2:                                       ; preds = %234
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #5
  br label %411

411:                                              ; preds = %249, %403, %.critedge2, %245, %218
  %.4103 = phi i8 [ %.1100145, %218 ], [ %.1100145, %.critedge2 ], [ %.2101, %403 ], [ %.1100145, %249 ], [ %.1100145, %245 ]
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #5
  br label %412

412:                                              ; preds = %411, %193, %.critedge
  %.5104 = phi i8 [ %.1100145, %.critedge ], [ %.1100145, %193 ], [ %.4103, %411 ]
  %indvars.iv.next155 = add nuw nsw i64 %indvars.iv154, 1
  %413 = load i32, ptr %47, align 8, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = icmp slt i64 %indvars.iv.next155, %414
  br i1 %415, label %.lr.ph146, label %.preheader, !llvm.loop !50

416:                                              ; preds = %409, %407, %353, %351, %350, %225
  %.pn111 = phi { ptr, i32 } [ %226, %225 ], [ %410, %409 ], [ %408, %407 ], [ %352, %351 ], [ %354, %353 ], [ %.pn109, %350 ]
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #5
  br label %464

._crit_edge149:                                   ; preds = %451, %.preheader
  %417 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract17 = extractvalue { ptr, i32 } %417, 0
  %.fca.1.extract18 = extractvalue { ptr, i32 } %417, 1
  %418 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract11 = extractvalue { ptr, i32 } %418, 0
  %.fca.1.extract12 = extractvalue { ptr, i32 } %418, 1
  %419 = invoke noundef zeroext i1 @"_ZSt6all_ofISt13_Bit_iteratorZN6qtorch7Network13ReduceCircuitEvE3$_0EbT_S4_T0_"(ptr %.fca.0.extract17, i32 %.fca.1.extract18, ptr %.fca.0.extract11, i32 %.fca.1.extract12)
          to label %454 unwind label %457

420:                                              ; preds = %.lr.ph148, %451
  %indvars.iv156 = phi i64 [ 0, %.lr.ph148 ], [ %indvars.iv.next157, %451 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #5
  %421 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %indvars.iv156)
          to label %422 unwind label %432

422:                                              ; preds = %420
  %423 = extractvalue { ptr, i64 } %421, 0
  store ptr %423, ptr %44, align 8
  %424 = extractvalue { ptr, i64 } %421, 1
  store i64 %424, ptr %169, align 8
  %425 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #5
  br i1 %425, label %426, label %439

426:                                              ; preds = %422
  br i1 %173, label %427, label %434

427:                                              ; preds = %426
  %428 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv156) #5
  %429 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv156) #5
  %430 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %429) #5
  %431 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN6qtorch4NodeEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %430, ptr noundef nonnull align 8 dereferenceable(16) %428) #5
  br label %451

432:                                              ; preds = %420
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #5
  br label %464

434:                                              ; preds = %426
  %435 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv156) #5
  %436 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv156) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %435, ptr noundef nonnull align 8 dereferenceable(16) %436)
          to label %451 unwind label %437

437:                                              ; preds = %434
  %438 = landingpad { ptr, i32 }
          cleanup
  br label %464

439:                                              ; preds = %422
  %440 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv156) #5
  %441 = load i32, ptr %440, align 4, !tbaa !48
  %442 = sext i32 %441 to i64
  %443 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %indvars.iv156) #5
  %444 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %443) #5
  %445 = icmp ule i64 %444, %442
  %brmerge = select i1 %445, i1 true, i1 %173
  br i1 %brmerge, label %451, label %446

446:                                              ; preds = %439
  %447 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv156) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #5
  call void @_ZNSt10shared_ptrIN6qtorch4NodeEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr null) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %447, ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %448 unwind label %449

448:                                              ; preds = %446
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #5
  br label %451

449:                                              ; preds = %446
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN6qtorch4NodeELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #5
  br label %464

451:                                              ; preds = %439, %434, %427, %448
  %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1
  %452 = call noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %453 = icmp ugt i64 %452, %indvars.iv.next157
  br i1 %453, label %420, label %._crit_edge149, !llvm.loop !52

454:                                              ; preds = %._crit_edge149
  %455 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract5 = extractvalue { ptr, i32 } %455, 0
  %.fca.1.extract6 = extractvalue { ptr, i32 } %455, 1
  %456 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  %.fca.0.extract = extractvalue { ptr, i32 } %456, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %456, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #5
  store i8 0, ptr %46, align 1, !tbaa !49
  invoke void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr %.fca.0.extract5, i32 %.fca.1.extract6, ptr %.fca.0.extract, i32 %.fca.1.extract, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %459 unwind label %460

457:                                              ; preds = %._crit_edge149
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %464

459:                                              ; preds = %454
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  br i1 %419, label %462, label %.preheader131, !llvm.loop !53

460:                                              ; preds = %454
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  br label %464

462:                                              ; preds = %459
  %463 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EEaSEOS7_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #5
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #5
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #5
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #5
  ret void

464:                                              ; preds = %457, %460, %416, %197, %449, %437, %432, %184, %182
  %.pn111.pn.pn.pn = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ], [ %461, %460 ], [ %458, %457 ], [ %.pn111, %416 ], [ %198, %197 ], [ %438, %437 ], [ %450, %449 ], [ %433, %432 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #5
  br label %465

465:                                              ; preds = %464, %180
  %.pn111.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn.pn, %464 ], [ %181, %180 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %30) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #5
  br label %466

466:                                              ; preds = %465, %178
  %.pn111.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn.pn.pn, %465 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #5
  call void @_ZNSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  br label %467

467:                                              ; preds = %466, %176
  %.pn111.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn.pn.pn.pn, %466 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #5
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  br label %468

468:                                              ; preds = %467, %174
  %.pn111.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn111.pn.pn.pn.pn.pn.pn, %467 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #5
  br label %469

469:                                              ; preds = %468, %146
  %.pn124.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn, %146 ], [ %.pn111.pn.pn.pn.pn.pn.pn.pn, %468 ]
  call void @_ZNSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  br label %470

470:                                              ; preds = %469, %58
  %.pn124.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn.pn, %469 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn124.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6qtorch4Node13GetTypeOfNodeEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillISt13_Bit_iteratorbEvT_S1_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_RKT0_(ptr, ptr, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6all_ofISt13_Bit_iteratorZN6qtorch7Network13ReduceCircuitEvE3$_0EbT_S4_T0_"(ptr, i32, ptr, i32) local_unnamed_addr #3

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !24, i64 168}
!6 = !{!"_ZTSN6qtorch7NetworkE", !7, i64 0, !14, i64 24, !18, i64 48, !18, i64 80, !21, i64 112, !22, i64 128, !24, i64 168, !24, i64 172, !25, i64 176, !25, i64 177, !7, i64 184, !26, i64 208, !7, i64 232, !30, i64 256, !30, i64 312, !35, i64 368, !24, i64 376}
!7 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4NodeEESaIS3_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSSt6vectorISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN6qtorch4WireEESaIS3_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !12, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!20 = !{!"long", !12, i64 0}
!21 = !{!"_ZTSSt7complexIdE", !12, i64 0}
!22 = !{!"_ZTSSt5mutex", !23, i64 0}
!23 = !{!"_ZTSSt12__mutex_base", !12, i64 0}
!24 = !{!"int", !12, i64 0}
!25 = !{!"bool", !12, i64 0}
!26 = !{!"_ZTSSt6vectorIS_ISt10shared_ptrIN6qtorch4NodeEESaIS3_EESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt10shared_ptrIN6qtorch4NodeEESaIS4_EESaIS6_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!30 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S5_EEE", !31, i64 0}
!31 = !{!"_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", !11, i64 0, !20, i64 8, !32, i64 16, !20, i64 24, !33, i64 32, !11, i64 48}
!32 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !11, i64 0}
!33 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !34, i64 0, !20, i64 8}
!34 = !{!"float", !12, i64 0}
!35 = !{!"long long", !12, i64 0}
!36 = !{!37, !24, i64 8}
!37 = !{!"_ZTSN6qtorch4NodeE", !24, i64 8, !24, i64 12, !24, i64 16, !25, i64 20, !38, i64 24, !25, i64 32, !39, i64 40, !14, i64 64, !43, i64 88, !47, i64 112, !18, i64 120}
!38 = !{!"_ZTSSt4pairIiiE", !24, i64 0, !24, i64 4}
!39 = !{!"_ZTSSt6vectorISt7complexIdESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseISt7complexIdESaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt7complexIdESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!43 = !{!"_ZTSSt6vectorIiSaIiEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!47 = !{!"_ZTSN6qtorch8GateTypeE", !12, i64 0}
!48 = !{!24, !24, i64 0}
!49 = !{!25, !25, i64 0}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = distinct !{!52, !51}
!53 = distinct !{!53, !51}


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass