; LLVM IR from gstonge/spreading_CR :: src/StaticNetworkSIR.ll (ZN3net16StaticNetworkSIRC2ERSt6vectorISt4pairIjjESaIS3_EEdddd)

; 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::allocator.7" = type { i8 }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.50" }
%"class.std::_Hashtable.50" = 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.std::allocator.12" = type { i8 }
%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.net::HashPropensity" = type <{ double, double, double, i8, [7 x i8] }>
%"class.net::BinaryTree" = type { ptr, ptr, %"class.std::vector.15", %"class.std::unordered_map" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = type { %"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.net::StaticNetworkSIR" = type { %"class.net::Network", double, double, double, double, i8, i8, i8, i8, [4 x i8], %"class.net::HashPropensity", i64, %"class.std::vector", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.5", %"class.net::BinaryTree", %"class.std::unordered_map.25", i64, i64 }
%"class.net::Network" = type { %"class.std::shared_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" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<std::unordered_set<unsigned int>, std::allocator<std::unordered_set<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unordered_set<unsigned int>, std::allocator<std::unordered_set<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unordered_set<unsigned int>, std::allocator<std::unordered_set<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unordered_set<unsigned int>, std::allocator<std::unordered_set<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.25" = type { %"class.std::_Hashtable.26" }
%"class.std::_Hashtable.26" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3net16StaticNetworkSIRC2ERSt6vectorISt4pairIjjESaIS3_EEdddd(ptr noundef nonnull align 8 dereferenceable(384) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::allocator.7", align 1
  %17 = alloca %"class.std::unordered_set", align 8
  %18 = alloca %"class.std::allocator.12", align 1
  %19 = alloca i32, align 4
  %20 = alloca %"struct.std::pair", align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca %"class.net::HashPropensity", align 8
  %32 = alloca %"class.net::BinaryTree", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.std::vector.69", align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca double, align 8
  %38 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store double %2, ptr %9, align 8, !tbaa !9
  store double %3, ptr %10, align 8, !tbaa !9
  store double %4, ptr %11, align 8, !tbaa !9
  store double %5, ptr %12, align 8, !tbaa !9
  %39 = load ptr, ptr %7, align 8
  %40 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN3net7NetworkC2ERSt6vectorISt4pairIjjESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(24) %40)
  %41 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %42 = load double, ptr %9, align 8, !tbaa !9
  store double %42, ptr %41, align 8, !tbaa !11
  %43 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %44 = load double, ptr %10, align 8, !tbaa !9
  store double %44, ptr %43, align 8, !tbaa !48
  %45 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %46 = load double, ptr %11, align 8, !tbaa !9
  store double %46, ptr %45, align 8, !tbaa !49
  %47 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 4
  %48 = load double, ptr %12, align 8, !tbaa !9
  store double %48, ptr %47, align 8, !tbaa !50
  %49 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 5
  store i8 0, ptr %49, align 8, !tbaa !51
  %50 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 6
  store i8 0, ptr %50, align 1, !tbaa !52
  %51 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 7
  store i8 0, ptr %51, align 2, !tbaa !53
  %52 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 8
  store i8 0, ptr %52, align 1, !tbaa !54
  %53 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 10
  invoke void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25) %53, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00)
          to label %54 unwind label %77

54:                                               ; preds = %6
  %55 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 11
  store i64 0, ptr %55, align 8, !tbaa !55
  %56 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  call void @llvm.memset.p0.i64(ptr align 8 %56, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %57 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 13
  call void @llvm.memset.p0.i64(ptr align 8 %57, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  %58 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 14
  %59 = invoke noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %60 unwind label %81

60:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #9
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %59, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %61 unwind label %85

61:                                               ; preds = %60
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  %62 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 15
  call void @llvm.lifetime.start.p0(i64 56, ptr %17) #9
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #9
  call void @_ZNSaISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  invoke void @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EEC2EmRKS6_RKS7_(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %63 unwind label %89

63:                                               ; preds = %61
  call void @_ZNSt15__new_allocatorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %17) #9
  %64 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 16
  call void @llvm.memset.p0.i64(ptr align 8 %64, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #9
  %65 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 17
  invoke void @_ZN3net10BinaryTreeC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %65)
          to label %66 unwind label %93

66:                                               ; preds = %63
  %67 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 18
  call void @llvm.memset.p0.i64(ptr align 8 %67, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %67) #9
  %68 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 19
  store i64 0, ptr %68, align 8, !tbaa !58
  %69 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 20
  store i64 0, ptr %69, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 0, ptr %19, align 4, !tbaa !56
  br label %70

70:                                               ; preds = %110, %66
  %71 = load i32, ptr %19, align 4, !tbaa !56
  %72 = zext i32 %71 to i64
  %73 = invoke noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %74 unwind label %97

74:                                               ; preds = %70
  %75 = icmp ult i64 %72, %73
  br i1 %75, label %101, label %76

76:                                               ; preds = %74
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %113

77:                                               ; preds = %6
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %13, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %14, align 4
  br label %403

81:                                               ; preds = %54
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %13, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %14, align 4
  br label %402

85:                                               ; preds = %60
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %13, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %402

89:                                               ; preds = %61
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %13, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %14, align 4
  call void @_ZNSt15__new_allocatorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %17) #9
  br label %401

93:                                               ; preds = %63
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %13, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %14, align 4
  br label %400

97:                                               ; preds = %101, %70
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %13, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %399

101:                                              ; preds = %74
  %102 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 15
  %103 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef 0) #9
  %104 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertERKj(ptr noundef nonnull align 8 dereferenceable(56) %103, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %105 unwind label %97

105:                                              ; preds = %101
  %106 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 0
  %107 = extractvalue { ptr, i8 } %104, 0
  store ptr %107, ptr %106, align 8
  %108 = getelementptr inbounds { ptr, i8 }, ptr %20, i32 0, i32 1
  %109 = extractvalue { ptr, i8 } %104, 1
  store i8 %109, ptr %108, align 8
  br label %110

110:                                              ; preds = %105
  %111 = load i32, ptr %19, align 4, !tbaa !56
  %112 = add i32 %111, 1
  store i32 %112, ptr %19, align 4, !tbaa !56
  br label %70, !llvm.loop !60

113:                                              ; preds = %76
  %114 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %115 = load double, ptr %114, align 8, !tbaa !48
  %116 = fcmp oeq double %115, 0.000000e+00
  br i1 %116, label %117, label %119

117:                                              ; preds = %113
  %118 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 5
  store i8 1, ptr %118, align 8, !tbaa !51
  br label %140

119:                                              ; preds = %113
  %120 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %121 = load double, ptr %120, align 8, !tbaa !49
  %122 = fcmp ogt double %121, 0.000000e+00
  br i1 %122, label %123, label %137

123:                                              ; preds = %119
  %124 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %125 = load double, ptr %124, align 8, !tbaa !49
  %126 = invoke noundef zeroext i1 @_ZSt5isinfd(double noundef %125)
          to label %127 unwind label %130

127:                                              ; preds = %123
  br i1 %126, label %128, label %134

128:                                              ; preds = %127
  %129 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 6
  store i8 1, ptr %129, align 1, !tbaa !52
  br label %136

130:                                              ; preds = %123
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %13, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %14, align 4
  br label %399

134:                                              ; preds = %127
  %135 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 7
  store i8 1, ptr %135, align 2, !tbaa !53
  br label %136

136:                                              ; preds = %134, %128
  br label %139

137:                                              ; preds = %119
  %138 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 8
  store i8 1, ptr %138, align 1, !tbaa !54
  br label %139

139:                                              ; preds = %137, %136
  br label %140

140:                                              ; preds = %139, %117
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %141 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef 0)
          to label %142 unwind label %152

142:                                              ; preds = %140
  store i64 %141, ptr %21, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %143 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef 0)
          to label %144 unwind label %156

144:                                              ; preds = %142
  store i64 %143, ptr %22, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !56
  br label %145

145:                                              ; preds = %185, %144
  %146 = load i32, ptr %23, align 4, !tbaa !56
  %147 = sext i32 %146 to i64
  %148 = invoke noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %149 unwind label %160

149:                                              ; preds = %145
  %150 = icmp ult i64 %147, %148
  br i1 %150, label %164, label %151

151:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %188

152:                                              ; preds = %140
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %13, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %14, align 4
  br label %398

156:                                              ; preds = %142
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %13, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %14, align 4
  br label %397

160:                                              ; preds = %180, %174, %170, %164, %145
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %13, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %397

164:                                              ; preds = %149
  %165 = load i32, ptr %23, align 4, !tbaa !56
  %166 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %165)
          to label %167 unwind label %160

167:                                              ; preds = %164
  %168 = load i64, ptr %21, align 8, !tbaa !62
  %169 = icmp ult i64 %166, %168
  br i1 %169, label %170, label %174

170:                                              ; preds = %167
  %171 = load i32, ptr %23, align 4, !tbaa !56
  %172 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %171)
          to label %173 unwind label %160

173:                                              ; preds = %170
  store i64 %172, ptr %21, align 8, !tbaa !62
  br label %174

174:                                              ; preds = %173, %167
  %175 = load i32, ptr %23, align 4, !tbaa !56
  %176 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %175)
          to label %177 unwind label %160

177:                                              ; preds = %174
  %178 = load i64, ptr %22, align 8, !tbaa !62
  %179 = icmp ugt i64 %176, %178
  br i1 %179, label %180, label %184

180:                                              ; preds = %177
  %181 = load i32, ptr %23, align 4, !tbaa !56
  %182 = invoke noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %39, i32 noundef %181)
          to label %183 unwind label %160

183:                                              ; preds = %180
  store i64 %182, ptr %22, align 8, !tbaa !62
  br label %184

184:                                              ; preds = %183, %177
  br label %185

185:                                              ; preds = %184
  %186 = load i32, ptr %23, align 4, !tbaa !56
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %23, align 4, !tbaa !56
  br label %145, !llvm.loop !63

188:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %189 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 7
  %190 = load i8, ptr %189, align 2, !tbaa !53, !range !64, !noundef !65
  %191 = trunc i8 %190 to i1
  br i1 %191, label %207, label %192

192:                                              ; preds = %188
  %193 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = load i64, ptr %22, align 8, !tbaa !62
  %196 = uitofp i64 %195 to double
  %197 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %198 = load double, ptr %197, align 8, !tbaa !48
  %199 = call double @llvm.fmuladd.f64(double %194, double %196, double %198)
  store double %199, ptr %24, align 8, !tbaa !9
  %200 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %201 = load double, ptr %200, align 8, !tbaa !11
  %202 = load i64, ptr %21, align 8, !tbaa !62
  %203 = uitofp i64 %202 to double
  %204 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %205 = load double, ptr %204, align 8, !tbaa !48
  %206 = call double @llvm.fmuladd.f64(double %201, double %203, double %205)
  store double %206, ptr %25, align 8, !tbaa !9
  br label %238

207:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %208 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = load i64, ptr %22, align 8, !tbaa !62
  %211 = uitofp i64 %210 to double
  %212 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %213 = load double, ptr %212, align 8, !tbaa !48
  %214 = call double @llvm.fmuladd.f64(double %209, double %211, double %213)
  store double %214, ptr %26, align 8, !tbaa !9
  %215 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %215)
          to label %217 unwind label %230

217:                                              ; preds = %207
  %218 = load double, ptr %216, align 8, !tbaa !9
  store double %218, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %219 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %220 = load double, ptr %219, align 8, !tbaa !11
  %221 = load i64, ptr %21, align 8, !tbaa !62
  %222 = uitofp i64 %221 to double
  %223 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %224 = load double, ptr %223, align 8, !tbaa !48
  %225 = call double @llvm.fmuladd.f64(double %220, double %222, double %224)
  store double %225, ptr %27, align 8, !tbaa !9
  %226 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %226)
          to label %228 unwind label %234

228:                                              ; preds = %217
  %229 = load double, ptr %227, align 8, !tbaa !9
  store double %229, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %238

230:                                              ; preds = %207
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %13, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %396

234:                                              ; preds = %217
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %13, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %396

238:                                              ; preds = %228, %192
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %239 = load double, ptr %24, align 8, !tbaa !9
  %240 = load double, ptr %25, align 8, !tbaa !9
  %241 = fdiv double %239, %240
  %242 = call double @log2(double noundef %241) #9
  %243 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 4
  %244 = load double, ptr %243, align 8, !tbaa !50
  %245 = call double @log2(double noundef %244) #9
  %246 = fdiv double %242, %245
  %247 = call double @llvm.ceil.f64(double %246)
  store double %247, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  store double 1.000000e+00, ptr %30, align 8, !tbaa !9
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %249 unwind label %269

249:                                              ; preds = %238
  %250 = load double, ptr %248, align 8, !tbaa !9
  %251 = fptoui double %250 to i64
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  store i64 %251, ptr %28, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #9
  %252 = load double, ptr %25, align 8, !tbaa !9
  %253 = load double, ptr %24, align 8, !tbaa !9
  %254 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 4
  %255 = load double, ptr %254, align 8, !tbaa !50
  invoke void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25) %31, double noundef %252, double noundef %253, double noundef %255)
          to label %256 unwind label %273

256:                                              ; preds = %249
  %257 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %257, ptr align 8 %31, i64 25, i1 false), !tbaa.struct !66
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 96, ptr %32) #9
  %258 = load i64, ptr %28, align 8, !tbaa !62
  %259 = trunc i64 %258 to i32
  invoke void @_ZN3net10BinaryTreeC1Ej(ptr noundef nonnull align 8 dereferenceable(96) %32, i32 noundef %259)
          to label %260 unwind label %277

260:                                              ; preds = %256
  %261 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 17
  %262 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3net10BinaryTreeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(96) %261, ptr noundef nonnull align 8 dereferenceable(96) %32)
          to label %263 unwind label %281

263:                                              ; preds = %260
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  store i64 0, ptr %33, align 8, !tbaa !62
  br label %264

264:                                              ; preds = %297, %263
  %265 = load i64, ptr %33, align 8, !tbaa !62
  %266 = load i64, ptr %28, align 8, !tbaa !62
  %267 = icmp ult i64 %265, %266
  br i1 %267, label %286, label %268

268:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %309

269:                                              ; preds = %238
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %13, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %395

273:                                              ; preds = %249
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %13, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  br label %395

277:                                              ; preds = %256
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %13, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %14, align 4
  br label %285

281:                                              ; preds = %260
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %13, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %14, align 4
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %32) #9
  br label %285

285:                                              ; preds = %281, %277
  call void @llvm.lifetime.end.p0(i64 96, ptr %32) #9
  br label %395

286:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #9
  call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  %287 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 18
  %288 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56) %287, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %289 unwind label %300

289:                                              ; preds = %286
  %290 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjdESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #9
  %291 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 18
  %292 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56) %291, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %293 unwind label %304

293:                                              ; preds = %289
  %294 = invoke noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %295 unwind label %304

295:                                              ; preds = %293
  invoke void @_ZNSt6vectorISt4pairIjdESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef %294)
          to label %296 unwind label %304

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296
  %298 = load i64, ptr %33, align 8, !tbaa !62
  %299 = add i64 %298, 1
  store i64 %299, ptr %33, align 8, !tbaa !62
  br label %264, !llvm.loop !68

300:                                              ; preds = %286
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %13, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %14, align 4
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #9
  br label %308

304:                                              ; preds = %295, %293, %289
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %13, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %14, align 4
  br label %308

308:                                              ; preds = %304, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %395

309:                                              ; preds = %268
  %310 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %311 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 4
  %312 = load double, ptr %311, align 8, !tbaa !50
  %313 = load double, ptr %25, align 8, !tbaa !9
  %314 = fmul double %312, %313
  store double %314, ptr %35, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %310, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %315 unwind label %322

315:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  store i64 0, ptr %36, align 8, !tbaa !62
  br label %316

316:                                              ; preds = %336, %315
  %317 = load i64, ptr %36, align 8, !tbaa !62
  %318 = load i64, ptr %28, align 8, !tbaa !62
  %319 = sub i64 %318, 1
  %320 = icmp ult i64 %317, %319
  br i1 %320, label %326, label %321

321:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %343

322:                                              ; preds = %309
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %13, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %395

326:                                              ; preds = %316
  %327 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %328 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 4
  %329 = load double, ptr %328, align 8, !tbaa !50
  %330 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  %331 = load i64, ptr %36, align 8, !tbaa !62
  %332 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %331) #9
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = fmul double %329, %333
  store double %334, ptr %37, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %327, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %335 unwind label %339

335:                                              ; preds = %326
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %336

336:                                              ; preds = %335
  %337 = load i64, ptr %36, align 8, !tbaa !62
  %338 = add i64 %337, 1
  store i64 %338, ptr %36, align 8, !tbaa !62
  br label %316, !llvm.loop !69

339:                                              ; preds = %326
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %13, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %395

343:                                              ; preds = %321
  %344 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  call void @_ZNSt6vectorIdSaIdEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #9
  %345 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 12
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %346 unwind label %361

346:                                              ; preds = %343
  %347 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 13
  %348 = load i64, ptr %22, align 8, !tbaa !62
  %349 = add i64 1, %348
  invoke void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %347, i64 noundef %349)
          to label %350 unwind label %361

350:                                              ; preds = %346
  %351 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 7
  %352 = load i8, ptr %351, align 2, !tbaa !53, !range !64, !noundef !65
  %353 = trunc i8 %352 to i1
  br i1 %353, label %354, label %365

354:                                              ; preds = %350
  %355 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 10
  %356 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 3
  %357 = load double, ptr %356, align 8, !tbaa !49
  %358 = invoke noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25) %355, double noundef %357)
          to label %359 unwind label %361

359:                                              ; preds = %354
  %360 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 11
  store i64 %358, ptr %360, align 8, !tbaa !55
  br label %365

361:                                              ; preds = %354, %346, %343
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %13, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %14, align 4
  br label %395

365:                                              ; preds = %359, %350
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  store i32 0, ptr %38, align 4, !tbaa !56
  br label %366

366:                                              ; preds = %387, %365
  %367 = load i32, ptr %38, align 4, !tbaa !56
  %368 = sext i32 %367 to i64
  %369 = load i64, ptr %22, align 8, !tbaa !62
  %370 = icmp ule i64 %368, %369
  br i1 %370, label %372, label %371

371:                                              ; preds = %366
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %394

372:                                              ; preds = %366
  %373 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 10
  %374 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 1
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = load i32, ptr %38, align 4, !tbaa !56
  %377 = sitofp i32 %376 to double
  %378 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 2
  %379 = load double, ptr %378, align 8, !tbaa !48
  %380 = call double @llvm.fmuladd.f64(double %375, double %377, double %379)
  %381 = invoke noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25) %373, double noundef %380)
          to label %382 unwind label %390

382:                                              ; preds = %372
  %383 = getelementptr inbounds %"class.net::StaticNetworkSIR", ptr %39, i32 0, i32 13
  %384 = load i32, ptr %38, align 4, !tbaa !56
  %385 = sext i32 %384 to i64
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %385) #9
  store i64 %381, ptr %386, align 8, !tbaa !62
  br label %387

387:                                              ; preds = %382
  %388 = load i32, ptr %38, align 4, !tbaa !56
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %38, align 4, !tbaa !56
  br label %366, !llvm.loop !70

390:                                              ; preds = %372
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %13, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %395

394:                                              ; preds = %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  ret void

395:                                              ; preds = %390, %361, %339, %322, %308, %285, %273, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %396

396:                                              ; preds = %395, %234, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %397

397:                                              ; preds = %396, %160, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %398

398:                                              ; preds = %397, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %399

399:                                              ; preds = %398, %130, %97
  call void @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %67) #9
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %65) #9
  br label %400

400:                                              ; preds = %399, %93
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #9
  call void @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  br label %401

401:                                              ; preds = %400, %89
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #9
  br label %402

402:                                              ; preds = %401, %85, %81
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  br label %403

403:                                              ; preds = %402, %77
  call void @_ZN3net7NetworkD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #9
  br label %404

404:                                              ; preds = %403
  %405 = load ptr, ptr %13, align 8
  %406 = load i32, ptr %14, align 4
  %407 = insertvalue { ptr, i32 } poison, ptr %405, 0
  %408 = insertvalue { ptr, i32 } %407, i32 %406, 1
  resume { ptr, i32 } %408
}

declare void @_ZN3net7NetworkC2ERSt6vectorISt4pairIjjESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25), double noundef, double noundef, double noundef) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3net10BinaryTreeC1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertERKj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #6

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

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

; Function Attrs: nounwind
declare double @log2(double noundef) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #6

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

declare void @_ZN3net10BinaryTreeC1Ej(ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(96) ptr @_ZN3net10BinaryTreeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) #1

; Function Attrs: nounwind
declare void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

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

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

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

declare noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25), double noundef) #1

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"_ZTSN3net16StaticNetworkSIRE", !13, i64 0, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !17, i64 48, !17, i64 49, !17, i64 50, !17, i64 51, !18, i64 56, !19, i64 88, !20, i64 96, !24, i64 120, !28, i64 144, !32, i64 168, !28, i64 192, !36, i64 216, !46, i64 312, !19, i64 368, !19, i64 376}
!13 = !{!"_ZTSN3net7NetworkE", !14, i64 0}
!14 = !{!"_ZTSSt10shared_ptrISt6vectorIS0_IjSaIjEESaIS2_EEE", !15, i64 0}
!15 = !{!"_ZTSSt12__shared_ptrISt6vectorIS0_IjSaIjEESaIS2_EELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !16, i64 8}
!16 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSN3net14HashPropensityE", !10, i64 0, !10, i64 8, !10, i64 16, !17, i64 24}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorImSaImEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseImSaImEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIjSaIjEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSN3net10BinaryTreeE", !6, i64 0, !6, i64 8, !37, i64 16, !41, i64 40}
!37 = !{!"_ZTSSt6vectorIPN3net14BinaryTreeNodeESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt13unordered_mapIPN3net14BinaryTreeNodeEjSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_jEEE", !42, i64 0}
!42 = !{!"_ZTSSt10_HashtableIPN3net14BinaryTreeNodeESt4pairIKS2_jESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !19, i64 8, !43, i64 16, !19, i64 24, !44, i64 32, !6, i64 48}
!43 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!44 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !45, i64 0, !19, i64 8}
!45 = !{!"float", !7, i64 0}
!46 = !{!"_ZTSSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_HashtableImSt4pairIKmSt6vectorIS0_IjdESaIS3_EEESaIS6_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !19, i64 8, !43, i64 16, !19, i64 24, !44, i64 32, !6, i64 48}
!48 = !{!12, !10, i64 24}
!49 = !{!12, !10, i64 32}
!50 = !{!12, !10, i64 40}
!51 = !{!12, !17, i64 48}
!52 = !{!12, !17, i64 49}
!53 = !{!12, !17, i64 50}
!54 = !{!12, !17, i64 51}
!55 = !{!12, !19, i64 88}
!56 = !{!57, !57, i64 0}
!57 = !{!"int", !7, i64 0}
!58 = !{!12, !19, i64 368}
!59 = !{!12, !19, i64 376}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}
!62 = !{!19, !19, i64 0}
!63 = distinct !{!63, !61}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 1, !67}
!67 = !{!17, !17, i64 0}
!68 = distinct !{!68, !61}
!69 = distinct !{!69, !61}
!70 = distinct !{!70, !61}


; 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::allocator.7" = type { i8 }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.50" }
%"class.std::_Hashtable.50" = 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.std::allocator.12" = type { i8 }
%"class.net::HashPropensity" = type <{ double, double, double, i8, [7 x i8] }>
%"class.net::BinaryTree" = type { ptr, ptr, %"class.std::vector.15", %"class.std::unordered_map" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<net::BinaryTreeNode *, std::allocator<net::BinaryTreeNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = type { %"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, double>, std::allocator<std::pair<unsigned int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3net16StaticNetworkSIRC2ERSt6vectorISt4pairIjjESaIS3_EEdddd(ptr noundef nonnull align 8 dereferenceable(384) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::allocator.7", align 1
  %9 = alloca %"class.std::unordered_set", align 8
  %10 = alloca %"class.std::allocator.12", align 1
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca %"class.net::HashPropensity", align 8
  %18 = alloca %"class.net::BinaryTree", align 8
  %19 = alloca i64, align 8
  %20 = alloca %"class.std::vector.69", align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  tail call void @_ZN3net7NetworkC2ERSt6vectorISt4pairIjjESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(24) %1)
  %23 = getelementptr inbounds i8, ptr %0, i64 16
  store double %2, ptr %23, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %0, i64 24
  store double %3, ptr %24, align 8, !tbaa !46
  %25 = getelementptr inbounds i8, ptr %0, i64 32
  store double %4, ptr %25, align 8, !tbaa !47
  %26 = getelementptr inbounds i8, ptr %0, i64 40
  store double %5, ptr %26, align 8, !tbaa !48
  %27 = getelementptr inbounds i8, ptr %0, i64 48
  %28 = getelementptr inbounds i8, ptr %0, i64 49
  %29 = getelementptr inbounds i8, ptr %0, i64 50
  %30 = getelementptr inbounds i8, ptr %0, i64 51
  %31 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 0, ptr %27, align 8
  invoke void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25) %31, double noundef 1.000000e+00, double noundef 1.000000e+00, double noundef 2.000000e+00)
          to label %32 unwind label %49

32:                                               ; preds = %6
  %33 = getelementptr inbounds i8, ptr %0, i64 88
  %34 = getelementptr inbounds i8, ptr %0, i64 96
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %33, i8 0, i64 32, i1 false)
  tail call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #10
  %35 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, i8 0, i64 24, i1 false)
  tail call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  %36 = getelementptr inbounds i8, ptr %0, i64 144
  %37 = tail call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  store i32 0, ptr %7, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #10
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %37, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %38 unwind label %51

38:                                               ; preds = %32
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  %39 = getelementptr inbounds i8, ptr %0, i64 168
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %9, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  call void @_ZNSaISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  invoke void @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EEC2EmRKS6_RKS7_(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef 3, ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %40 unwind label %53

40:                                               ; preds = %38
  call void @_ZNSt15__new_allocatorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #10
  %41 = getelementptr inbounds i8, ptr %0, i64 192
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %41, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  %42 = getelementptr inbounds i8, ptr %0, i64 216
  invoke void @_ZN3net10BinaryTreeC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %42)
          to label %43 unwind label %55

43:                                               ; preds = %40
  %44 = getelementptr inbounds i8, ptr %0, i64 312
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %44, i8 0, i64 56, i1 false)
  call void @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %44) #10
  %45 = getelementptr inbounds i8, ptr %0, i64 368
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %45, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  store i32 0, ptr %11, align 4, !tbaa !49
  %46 = call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %.not79 = icmp eq i64 %46, 0
  br i1 %.not79, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %61, %43
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  %47 = load double, ptr %24, align 8, !tbaa !46
  %48 = fcmp oeq double %47, 0.000000e+00
  br i1 %48, label %67, label %68

49:                                               ; preds = %6
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %196

51:                                               ; preds = %32
  %52 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  br label %195

53:                                               ; preds = %38
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #10
  br label %194

55:                                               ; preds = %40
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %193

57:                                               ; preds = %.lr.ph
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  br label %192

.lr.ph:                                           ; preds = %43, %61
  %59 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef 0) #10
  %60 = invoke { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertERKj(ptr noundef nonnull align 8 dereferenceable(56) %59, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %61 unwind label %57

61:                                               ; preds = %.lr.ph
  %62 = load i32, ptr %11, align 4, !tbaa !49
  %63 = add i32 %62, 1
  store i32 %63, ptr %11, align 4, !tbaa !49
  %64 = zext i32 %63 to i64
  %65 = call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %66 = icmp ugt i64 %65, %64
  br i1 %66, label %.lr.ph, label %._crit_edge, !llvm.loop !51

67:                                               ; preds = %._crit_edge
  store i8 1, ptr %27, align 8, !tbaa !53
  br label %76

68:                                               ; preds = %._crit_edge
  %69 = load double, ptr %25, align 8, !tbaa !47
  %70 = fcmp ogt double %69, 0.000000e+00
  br i1 %70, label %71, label %75

71:                                               ; preds = %68
  %72 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %69)
  br i1 %72, label %73, label %74

73:                                               ; preds = %71
  store i8 1, ptr %28, align 1, !tbaa !54
  br label %76

74:                                               ; preds = %71
  store i8 1, ptr %29, align 2, !tbaa !55
  br label %76

75:                                               ; preds = %68
  store i8 1, ptr %30, align 1, !tbaa !56
  br label %76

76:                                               ; preds = %75, %74, %73, %67
  %77 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 0)
  %78 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 0)
  %79 = call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %.not80 = icmp eq i64 %79, 0
  br i1 %.not80, label %._crit_edge69, label %.lr.ph68

._crit_edge69:                                    ; preds = %92, %76
  %.040.lcssa = phi i64 [ %77, %76 ], [ %.141, %92 ]
  %.038.lcssa = phi i64 [ %78, %76 ], [ %.139, %92 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %80 = load i8, ptr %29, align 2, !tbaa !55, !range !57, !noundef !58
  %81 = trunc nuw i8 %80 to i1
  br i1 %81, label %102, label %95

.lr.ph68:                                         ; preds = %76, %92
  %indvars.iv = phi i64 [ %indvars.iv.next, %92 ], [ 0, %76 ]
  %.03865 = phi i64 [ %.139, %92 ], [ %78, %76 ]
  %.04064 = phi i64 [ %.141, %92 ], [ %77, %76 ]
  %82 = trunc nuw nsw i64 %indvars.iv to i32
  %83 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %82)
  %84 = icmp ult i64 %83, %.04064
  br i1 %84, label %85, label %87

85:                                               ; preds = %.lr.ph68
  %86 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %82)
  br label %87

87:                                               ; preds = %85, %.lr.ph68
  %.141 = phi i64 [ %86, %85 ], [ %.04064, %.lr.ph68 ]
  %88 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %82)
  %89 = icmp ugt i64 %88, %.03865
  br i1 %89, label %90, label %92

90:                                               ; preds = %87
  %91 = call noundef i64 @_ZNK3net7Network6degreeEj(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %82)
  br label %92

92:                                               ; preds = %87, %90
  %.139 = phi i64 [ %91, %90 ], [ %.03865, %87 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %93 = call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  %94 = icmp ugt i64 %93, %indvars.iv.next
  br i1 %94, label %.lr.ph68, label %._crit_edge69, !llvm.loop !59

95:                                               ; preds = %._crit_edge69
  %96 = load double, ptr %23, align 8, !tbaa !5
  %97 = uitofp i64 %.038.lcssa to double
  %98 = load double, ptr %24, align 8, !tbaa !46
  %99 = call double @llvm.fmuladd.f64(double %96, double %97, double %98)
  store double %99, ptr %12, align 8, !tbaa !60
  %100 = uitofp i64 %.040.lcssa to double
  %101 = call double @llvm.fmuladd.f64(double %96, double %100, double %98)
  br label %115

102:                                              ; preds = %._crit_edge69
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %103 = load double, ptr %23, align 8, !tbaa !5
  %104 = uitofp i64 %.038.lcssa to double
  %105 = load double, ptr %24, align 8, !tbaa !46
  %106 = call double @llvm.fmuladd.f64(double %103, double %104, double %105)
  store double %106, ptr %13, align 8, !tbaa !60
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %25)
  %108 = load double, ptr %107, align 8, !tbaa !60
  store double %108, ptr %12, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %109 = load double, ptr %23, align 8, !tbaa !5
  %110 = uitofp i64 %.040.lcssa to double
  %111 = load double, ptr %24, align 8, !tbaa !46
  %112 = call double @llvm.fmuladd.f64(double %109, double %110, double %111)
  store double %112, ptr %14, align 8, !tbaa !60
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %25)
  %114 = load double, ptr %113, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  br label %115

115:                                              ; preds = %102, %95
  %116 = phi double [ %108, %102 ], [ %99, %95 ]
  %.036 = phi double [ %114, %102 ], [ %101, %95 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %117 = fdiv double %116, %.036
  %118 = call double @log2(double noundef %117) #10
  %119 = load double, ptr %26, align 8, !tbaa !48
  %120 = call double @log2(double noundef %119) #10
  %121 = fdiv double %118, %120
  %122 = call double @llvm.ceil.f64(double %121)
  store double %122, ptr %15, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  store double 1.000000e+00, ptr %16, align 8, !tbaa !60
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16)
  %124 = load double, ptr %123, align 8, !tbaa !60
  %125 = fptoui double %124 to i64
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #10
  %126 = load double, ptr %26, align 8, !tbaa !48
  invoke void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25) %17, double noundef %.036, double noundef %116, double noundef %126)
          to label %127 unwind label %134

127:                                              ; preds = %115
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(25) %31, ptr noundef nonnull align 8 dereferenceable(25) %17, i64 25, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %18) #10
  %128 = trunc i64 %125 to i32
  invoke void @_ZN3net10BinaryTreeC1Ej(ptr noundef nonnull align 8 dereferenceable(96) %18, i32 noundef %128)
          to label %129 unwind label %136

129:                                              ; preds = %127
  %130 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3net10BinaryTreeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(96) %42, ptr noundef nonnull align 8 dereferenceable(96) %18)
          to label %131 unwind label %138

131:                                              ; preds = %129
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %18) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  store i64 0, ptr %19, align 8, !tbaa !63
  %.not81 = icmp eq i64 %125, 0
  br i1 %.not81, label %._crit_edge73, label %.lr.ph72

._crit_edge73:                                    ; preds = %147, %131
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %132 = load double, ptr %26, align 8, !tbaa !48
  %133 = fmul double %.036, %132
  store double %133, ptr %21, align 8, !tbaa !60
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %156 unwind label %158

134:                                              ; preds = %115
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  br label %191

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

138:                                              ; preds = %129
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %18) #10
  br label %140

140:                                              ; preds = %138, %136
  %.pn = phi { ptr, i32 } [ %139, %138 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %18) #10
  br label %191

.lr.ph72:                                         ; preds = %131, %147
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  %141 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56) %44, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %142 unwind label %151

142:                                              ; preds = %.lr.ph72
  %143 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIjdESaIS1_EEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %141, ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #10
  %144 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56) %44, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %145 unwind label %153

145:                                              ; preds = %142
  %146 = call noundef i64 @_ZNK3net7Network4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %0)
  invoke void @_ZNSt6vectorISt4pairIjdESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %146)
          to label %147 unwind label %153

147:                                              ; preds = %145
  %148 = load i64, ptr %19, align 8, !tbaa !63
  %149 = add i64 %148, 1
  store i64 %149, ptr %19, align 8, !tbaa !63
  %150 = icmp ult i64 %149, %125
  br i1 %150, label %.lr.ph72, label %._crit_edge73, !llvm.loop !64

151:                                              ; preds = %.lr.ph72
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorISt4pairIjdESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #10
  br label %155

153:                                              ; preds = %145, %142
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %155

155:                                              ; preds = %153, %151
  %.pn55 = phi { ptr, i32 } [ %154, %153 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %191

156:                                              ; preds = %._crit_edge73
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  %157 = add i64 %125, -1
  %.not82 = icmp eq i64 %157, 0
  br i1 %.not82, label %._crit_edge77, label %.lr.ph76

._crit_edge77:                                    ; preds = %164, %156
  call void @_ZNSt6vectorIdSaIdEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #10
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %168 unwind label %177

158:                                              ; preds = %._crit_edge73
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %191

.lr.ph76:                                         ; preds = %156, %164
  %.03474 = phi i64 [ %165, %164 ], [ 0, %156 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  %160 = load double, ptr %26, align 8, !tbaa !48
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %.03474) #10
  %162 = load double, ptr %161, align 8, !tbaa !60
  %163 = fmul double %160, %162
  store double %163, ptr %22, align 8, !tbaa !60
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %164 unwind label %166

164:                                              ; preds = %.lr.ph76
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  %165 = add nuw i64 %.03474, 1
  %exitcond.not = icmp eq i64 %165, %157
  br i1 %exitcond.not, label %._crit_edge77, label %.lr.ph76, !llvm.loop !65

166:                                              ; preds = %.lr.ph76
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %191

168:                                              ; preds = %._crit_edge77
  %169 = add i64 %.038.lcssa, 1
  invoke void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %169)
          to label %170 unwind label %177

170:                                              ; preds = %168
  %171 = load i8, ptr %29, align 2, !tbaa !55, !range !57, !noundef !58
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %173, label %.preheader

.preheader:                                       ; preds = %176, %170
  br label %180

173:                                              ; preds = %170
  %174 = load double, ptr %25, align 8, !tbaa !47
  %175 = invoke noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25) %31, double noundef %174)
          to label %176 unwind label %177

176:                                              ; preds = %173
  store i64 %175, ptr %33, align 8, !tbaa !66
  br label %.preheader

177:                                              ; preds = %173, %168, %._crit_edge77
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %191

179:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  ret void

180:                                              ; preds = %.preheader, %187
  %indvars.iv84 = phi i64 [ %indvars.iv.next85, %187 ], [ 0, %.preheader ]
  %181 = load double, ptr %23, align 8, !tbaa !5
  %182 = trunc nuw nsw i64 %indvars.iv84 to i32
  %183 = uitofp nneg i32 %182 to double
  %184 = load double, ptr %24, align 8, !tbaa !46
  %185 = call double @llvm.fmuladd.f64(double %181, double %183, double %184)
  %186 = invoke noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25) %31, double noundef %185)
          to label %187 unwind label %189

187:                                              ; preds = %180
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %indvars.iv84) #10
  store i64 %186, ptr %188, align 8, !tbaa !63
  %indvars.iv.next85 = add nuw i64 %indvars.iv84, 1
  %exitcond87 = icmp eq i64 %indvars.iv84, %.038.lcssa
  br i1 %exitcond87, label %179, label %180, !llvm.loop !67

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

191:                                              ; preds = %189, %177, %166, %158, %155, %140, %134
  %.pn55.pn = phi { ptr, i32 } [ %.pn55, %155 ], [ %167, %166 ], [ %190, %189 ], [ %178, %177 ], [ %159, %158 ], [ %.pn, %140 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %192

192:                                              ; preds = %191, %57
  %.pn58 = phi { ptr, i32 } [ %58, %57 ], [ %.pn55.pn, %191 ]
  call void @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %44) #10
  call void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %42) #10
  br label %193

193:                                              ; preds = %192, %55
  %.pn58.pn = phi { ptr, i32 } [ %.pn58, %192 ], [ %56, %55 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @_ZNSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #10
  br label %194

194:                                              ; preds = %193, %53
  %.pn58.pn.pn = phi { ptr, i32 } [ %.pn58.pn, %193 ], [ %54, %53 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #10
  br label %195

195:                                              ; preds = %194, %51
  %.pn58.pn.pn.pn = phi { ptr, i32 } [ %.pn58.pn.pn, %194 ], [ %52, %51 ]
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #10
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #10
  br label %196

196:                                              ; preds = %195, %49
  %.pn58.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn58.pn.pn.pn, %195 ], [ %50, %49 ]
  call void @_ZN3net7NetworkD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #10
  resume { ptr, i32 } %.pn58.pn.pn.pn.pn
}

declare void @_ZN3net7NetworkC2ERSt6vectorISt4pairIjjESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN3net14HashPropensityC1Eddd(ptr noundef nonnull align 8 dereferenceable(25), double noundef, double noundef, double noundef) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3net10BinaryTreeC1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE6insertERKj(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #6

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log2(double noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #6

; Function Attrs: mustprogress 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) #8

declare void @_ZN3net10BinaryTreeC1Ej(ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(96) ptr @_ZN3net10BinaryTreeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN3net10BinaryTreeD1Ev(ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #9

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

declare noundef i64 @_ZNK3net14HashPropensityclEd(ptr noundef nonnull align 8 dereferenceable(25), double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

!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, !14, i64 16}
!6 = !{!"_ZTSN3net16StaticNetworkSIRE", !7, i64 0, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !15, i64 48, !15, i64 49, !15, i64 50, !15, i64 51, !16, i64 56, !17, i64 88, !18, i64 96, !22, i64 120, !26, i64 144, !30, i64 168, !26, i64 192, !34, i64 216, !44, i64 312, !17, i64 368, !17, i64 376}
!7 = !{!"_ZTSN3net7NetworkE", !8, i64 0}
!8 = !{!"_ZTSSt10shared_ptrISt6vectorIS0_IjSaIjEESaIS2_EEE", !9, i64 0}
!9 = !{!"_ZTSSt12__shared_ptrISt6vectorIS0_IjSaIjEESaIS2_EELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !13, i64 8}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0}
!14 = !{!"double", !11, i64 0}
!15 = !{!"bool", !11, i64 0}
!16 = !{!"_ZTSN3net14HashPropensityE", !14, i64 0, !14, i64 8, !14, i64 16, !15, i64 24}
!17 = !{!"long", !11, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!22 = !{!"_ZTSSt6vectorImSaImEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseImSaImEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!26 = !{!"_ZTSSt6vectorIjSaIjEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!30 = !{!"_ZTSSt6vectorISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEESaIS6_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!34 = !{!"_ZTSN3net10BinaryTreeE", !10, i64 0, !10, i64 8, !35, i64 16, !39, i64 40}
!35 = !{!"_ZTSSt6vectorIPN3net14BinaryTreeNodeESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN3net14BinaryTreeNodeESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!39 = !{!"_ZTSSt13unordered_mapIPN3net14BinaryTreeNodeEjSt4hashIS2_ESt8equal_toIS2_ESaISt4pairIKS2_jEEE", !40, i64 0}
!40 = !{!"_ZTSSt10_HashtableIPN3net14BinaryTreeNodeESt4pairIKS2_jESaIS5_ENSt8__detail10_Select1stESt8equal_toIS2_ESt4hashIS2_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !17, i64 8, !41, i64 16, !17, i64 24, !42, i64 32, !10, i64 48}
!41 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !10, i64 0}
!42 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !43, i64 0, !17, i64 8}
!43 = !{!"float", !11, i64 0}
!44 = !{!"_ZTSSt13unordered_mapImSt6vectorISt4pairIjdESaIS2_EESt4hashImESt8equal_toImESaIS1_IKmS4_EEE", !45, i64 0}
!45 = !{!"_ZTSSt10_HashtableImSt4pairIKmSt6vectorIS0_IjdESaIS3_EEESaIS6_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !10, i64 0, !17, i64 8, !41, i64 16, !17, i64 24, !42, i64 32, !10, i64 48}
!46 = !{!6, !14, i64 24}
!47 = !{!6, !14, i64 32}
!48 = !{!6, !14, i64 40}
!49 = !{!50, !50, i64 0}
!50 = !{!"int", !11, i64 0}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = !{!6, !15, i64 48}
!54 = !{!6, !15, i64 49}
!55 = !{!6, !15, i64 50}
!56 = !{!6, !15, i64 51}
!57 = !{i8 0, i8 2}
!58 = !{}
!59 = distinct !{!59, !52}
!60 = !{!14, !14, i64 0}
!61 = !{i64 0, i64 8, !60, i64 8, i64 8, !60, i64 16, i64 8, !60, i64 24, i64 1, !62}
!62 = !{!15, !15, i64 0}
!63 = !{!17, !17, i64 0}
!64 = distinct !{!64, !52}
!65 = distinct !{!65, !52}
!66 = !{!6, !17, i64 88}
!67 = distinct !{!67, !52}


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