; LLVM IR from todo314/pruned-monte-carlo :: src/pmc.ll (ZN15PrunedEstimater5sigmaEi)

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

%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::queue" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%class.PrunedEstimater = type <{ i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.0", i32, [4 x i8], %"class.std::vector.0", %"class.std::vector.0", i8, [7 x i8] }>
%"class.std::vector.0" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %0, i32 noundef %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"struct.std::_Bit_reference", align 8
  %7 = alloca %"struct.std::_Bit_reference", align 8
  %8 = alloca %"struct.std::_Bit_reference", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca %"struct.std::_Bit_reference", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::queue", align 8
  %17 = alloca i8, align 1
  %18 = alloca %"struct.std::_Bit_reference", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"struct.std::_Bit_reference", align 8
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.std::_Bit_reference", align 8
  %25 = alloca %"struct.std::_Bit_reference", align 8
  %26 = alloca %"struct.std::_Bit_reference", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.std::_Bit_reference", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  %29 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #5
  %30 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 8
  %31 = load i32, ptr %5, align 4, !tbaa !9
  %32 = sext i32 %31 to i64
  %33 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %30, i64 noundef %32)
  %34 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 0
  %35 = extractvalue { ptr, i64 } %33, 0
  store ptr %35, ptr %34, align 8
  %36 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 1
  %37 = extractvalue { ptr, i64 } %33, 1
  store i64 %37, ptr %36, align 8
  %38 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #5
  br i1 %38, label %39, label %45

39:                                               ; preds = %2
  %40 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 4
  %41 = load i32, ptr %5, align 4, !tbaa !9
  %42 = sext i32 %41 to i64
  %43 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %42) #5
  %44 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %44, ptr %3, align 4
  br label %341

45:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #5
  %46 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 8
  %47 = load i32, ptr %5, align 4, !tbaa !9
  %48 = sext i32 %47 to i64
  %49 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %46, i64 noundef %48)
  %50 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 0
  %51 = extractvalue { ptr, i64 } %49, 0
  store ptr %51, ptr %50, align 8
  %52 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 1
  %53 = extractvalue { ptr, i64 } %49, 1
  store i64 %53, ptr %52, align 8
  %54 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %7, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #5
  %55 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 9
  %56 = load i32, ptr %5, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %55, i64 noundef %57)
  %59 = getelementptr inbounds { ptr, i64 }, ptr %8, i32 0, i32 0
  %60 = extractvalue { ptr, i64 } %58, 0
  store ptr %60, ptr %59, align 8
  %61 = getelementptr inbounds { ptr, i64 }, ptr %8, i32 0, i32 1
  %62 = extractvalue { ptr, i64 } %58, 1
  store i64 %62, ptr %61, align 8
  %63 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #5
  br i1 %63, label %64, label %69

64:                                               ; preds = %45
  %65 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 4
  %66 = load i32, ptr %5, align 4, !tbaa !9
  %67 = sext i32 %66 to i64
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %67) #5
  store i32 0, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %3, align 4
  br label %341

69:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %70 = load i32, ptr %5, align 4, !tbaa !9
  %71 = call noundef i32 @_ZN15PrunedEstimater12unique_childEi(ptr noundef nonnull align 8 dereferenceable(457) %29, i32 noundef %70)
  store i32 %71, ptr %9, align 4, !tbaa !9
  %72 = load i32, ptr %9, align 4, !tbaa !9
  %73 = icmp eq i32 %72, -1
  br i1 %73, label %74, label %84

74:                                               ; preds = %69
  %75 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 2
  %76 = load i32, ptr %5, align 4, !tbaa !9
  %77 = sext i32 %76 to i64
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %77) #5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 4
  %81 = load i32, ptr %5, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %82) #5
  store i32 %79, ptr %83, align 4, !tbaa !9
  store i32 %79, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %340

84:                                               ; preds = %69
  %85 = load i32, ptr %9, align 4, !tbaa !9
  %86 = icmp sge i32 %85, 0
  br i1 %86, label %87, label %100

87:                                               ; preds = %84
  %88 = load i32, ptr %9, align 4, !tbaa !9
  %89 = call noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %29, i32 noundef %88)
  %90 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 2
  %91 = load i32, ptr %5, align 4, !tbaa !9
  %92 = sext i32 %91 to i64
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %92) #5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = add nsw i32 %89, %94
  %96 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 4
  %97 = load i32, ptr %5, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %98) #5
  store i32 %95, ptr %99, align 4, !tbaa !9
  store i32 %95, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %340

100:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #5
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #5
  %101 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 14
  %102 = load i32, ptr %5, align 4, !tbaa !9
  %103 = sext i32 %102 to i64
  %104 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %101, i64 noundef %103)
          to label %105 unwind label %134

105:                                              ; preds = %100
  %106 = getelementptr inbounds { ptr, i64 }, ptr %13, i32 0, i32 0
  %107 = extractvalue { ptr, i64 } %104, 0
  store ptr %107, ptr %106, align 8
  %108 = getelementptr inbounds { ptr, i64 }, ptr %13, i32 0, i32 1
  %109 = extractvalue { ptr, i64 } %104, 1
  store i64 %109, ptr %108, align 8
  %110 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %13, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %111 unwind label %138

111:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 80, ptr %16) #5
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %16)
          to label %112 unwind label %142

112:                                              ; preds = %111
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %113 unwind label %146

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #5
  %114 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 18
  %115 = load i32, ptr %5, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %114, i64 noundef %116)
          to label %118 unwind label %150

118:                                              ; preds = %113
  %119 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 0
  %120 = extractvalue { ptr, i64 } %117, 0
  store ptr %120, ptr %119, align 8
  %121 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 1
  %122 = extractvalue { ptr, i64 } %117, 1
  store i64 %122, ptr %121, align 8
  %123 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  %124 = zext i1 %123 to i8
  store i8 %124, ptr %17, align 1, !tbaa !11
  %125 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %158

127:                                              ; preds = %118
  %128 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 15
  %129 = load i32, ptr %128, align 8, !tbaa !15
  %130 = invoke noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %29, i32 noundef %129)
          to label %131 unwind label %154

131:                                              ; preds = %127
  %132 = load i32, ptr %11, align 4, !tbaa !9
  %133 = add nsw i32 %132, %130
  store i32 %133, ptr %11, align 4, !tbaa !9
  br label %158

134:                                              ; preds = %100
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %14, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #5
  br label %339

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

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

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

150:                                              ; preds = %113
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %14, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  br label %336

154:                                              ; preds = %159, %127
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %14, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %15, align 4
  br label %336

158:                                              ; preds = %131, %118
  br label %159

159:                                              ; preds = %300, %298, %158
  %160 = invoke noundef zeroext i1 @_ZNKSt5queueIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %16)
          to label %161 unwind label %154

161:                                              ; preds = %159
  %162 = xor i1 %160, true
  br i1 %162, label %163, label %302

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %164 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5queueIiSt5dequeIiSaIiEEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %16)
          to label %165 unwind label %179

165:                                              ; preds = %163
  %166 = load i32, ptr %164, align 4, !tbaa !9
  store i32 %166, ptr %19, align 4, !tbaa !9
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %16)
          to label %167 unwind label %179

167:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  %168 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 9
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %168, i64 noundef %170)
          to label %172 unwind label %183

172:                                              ; preds = %167
  %173 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 0
  %174 = extractvalue { ptr, i64 } %171, 0
  store ptr %174, ptr %173, align 8
  %175 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 1
  %176 = extractvalue { ptr, i64 } %171, 1
  store i64 %176, ptr %175, align 8
  %177 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br i1 %177, label %178, label %187

178:                                              ; preds = %172
  store i32 3, ptr %10, align 4
  br label %298, !llvm.loop !27

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

183:                                              ; preds = %167
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %14, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %301

187:                                              ; preds = %172
  %188 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %189 = trunc i8 %188 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #5
  br i1 %189, label %190, label %201

190:                                              ; preds = %187
  %191 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 17
  %192 = load i32, ptr %19, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %191, i64 noundef %193)
          to label %195 unwind label %204

195:                                              ; preds = %190
  %196 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %197 = extractvalue { ptr, i64 } %194, 0
  store ptr %197, ptr %196, align 8
  %198 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %199 = extractvalue { ptr, i64 } %194, 1
  store i64 %199, ptr %198, align 8
  %200 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %201

201:                                              ; preds = %195, %187
  %202 = phi i1 [ false, %187 ], [ %200, %195 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #5
  br i1 %202, label %203, label %208

203:                                              ; preds = %201
  store i32 3, ptr %10, align 4
  br label %298, !llvm.loop !27

204:                                              ; preds = %190
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %14, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #5
  br label %301

208:                                              ; preds = %201
  %209 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 2
  %210 = load i32, ptr %19, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %211) #5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = load i32, ptr %11, align 4, !tbaa !9
  %215 = add nsw i32 %214, %213
  store i32 %215, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %216 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 12
  %217 = load i32, ptr %19, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %216, i64 noundef %218) #5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  store i32 %220, ptr %22, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %293, %208
  %222 = load i32, ptr %22, align 4, !tbaa !9
  %223 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 12
  %224 = load i32, ptr %19, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  %226 = sext i32 %225 to i64
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %226) #5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp slt i32 %222, %228
  br i1 %229, label %231, label %230

230:                                              ; preds = %221
  store i32 4, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %297

231:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %232 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 10
  %233 = load i32, ptr %22, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %232, i64 noundef %234) #5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  store i32 %236, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #5
  %237 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 9
  %238 = load i32, ptr %23, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %237, i64 noundef %239)
          to label %241 unwind label %248

241:                                              ; preds = %231
  %242 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %243 = extractvalue { ptr, i64 } %240, 0
  store ptr %243, ptr %242, align 8
  %244 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %245 = extractvalue { ptr, i64 } %240, 1
  store i64 %245, ptr %244, align 8
  %246 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  br i1 %246, label %247, label %252

247:                                              ; preds = %241
  store i32 6, ptr %10, align 4
  br label %290

248:                                              ; preds = %231
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %14, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  br label %296

252:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #5
  %253 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 14
  %254 = load i32, ptr %23, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %253, i64 noundef %255)
          to label %257 unwind label %277

257:                                              ; preds = %252
  %258 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 0
  %259 = extractvalue { ptr, i64 } %256, 0
  store ptr %259, ptr %258, align 8
  %260 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 1
  %261 = extractvalue { ptr, i64 } %256, 1
  store i64 %261, ptr %260, align 8
  %262 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  %263 = xor i1 %262, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  br i1 %263, label %264, label %289

264:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  %265 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 14
  %266 = load i32, ptr %23, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %265, i64 noundef %267)
          to label %269 unwind label %281

269:                                              ; preds = %264
  %270 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %271 = extractvalue { ptr, i64 } %268, 0
  store ptr %271, ptr %270, align 8
  %272 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %273 = extractvalue { ptr, i64 } %268, 1
  store i64 %273, ptr %272, align 8
  %274 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %26, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %275 unwind label %285

275:                                              ; preds = %269
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %276 unwind label %285

276:                                              ; preds = %275
  br label %289

277:                                              ; preds = %252
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %14, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  br label %296

281:                                              ; preds = %264
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %14, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  br label %296

285:                                              ; preds = %275, %269
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %14, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %15, align 4
  br label %296

289:                                              ; preds = %276, %257
  store i32 0, ptr %10, align 4
  br label %290

290:                                              ; preds = %289, %247
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  %291 = load i32, ptr %10, align 4
  switch i32 %291, label %348 [
    i32 0, label %292
    i32 6, label %293
  ]

292:                                              ; preds = %290
  br label %293

293:                                              ; preds = %292, %290
  %294 = load i32, ptr %22, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %22, align 4, !tbaa !9
  br label %221, !llvm.loop !29

296:                                              ; preds = %285, %281, %277, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %301

297:                                              ; preds = %230
  store i32 0, ptr %10, align 4
  br label %298

298:                                              ; preds = %297, %203, %178
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  %299 = load i32, ptr %10, align 4
  switch i32 %299, label %348 [
    i32 0, label %300
    i32 3, label %159
  ]

300:                                              ; preds = %298
  br label %159, !llvm.loop !27

301:                                              ; preds = %296, %204, %183, %179
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %336

302:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %323, %302
  %304 = load i32, ptr %27, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %307 = icmp ult i64 %305, %306
  br i1 %307, label %309, label %308

308:                                              ; preds = %303
  store i32 7, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %330

309:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  %310 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 14
  %311 = load i32, ptr %27, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %312) #5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %310, i64 noundef %315)
          to label %317 unwind label %326

317:                                              ; preds = %309
  %318 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 0
  %319 = extractvalue { ptr, i64 } %316, 0
  store ptr %319, ptr %318, align 8
  %320 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 1
  %321 = extractvalue { ptr, i64 } %316, 1
  store i64 %321, ptr %320, align 8
  %322 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %28, i1 noundef zeroext false) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  br label %323

323:                                              ; preds = %317
  %324 = load i32, ptr %27, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %27, align 4, !tbaa !9
  br label %303, !llvm.loop !30

326:                                              ; preds = %309
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %14, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %336

330:                                              ; preds = %308
  %331 = load i32, ptr %11, align 4, !tbaa !9
  %332 = getelementptr inbounds %class.PrunedEstimater, ptr %29, i32 0, i32 4
  %333 = load i32, ptr %5, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %334) #5
  store i32 %331, ptr %335, align 4, !tbaa !9
  store i32 %331, ptr %3, align 4
  store i32 1, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  call void @_ZNSt5queueIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %16) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %16) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %340

336:                                              ; preds = %326, %301, %154, %150
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  br label %337

337:                                              ; preds = %336, %146
  call void @_ZNSt5queueIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %16) #5
  br label %338

338:                                              ; preds = %337, %142
  call void @llvm.lifetime.end.p0(i64 80, ptr %16) #5
  br label %339

339:                                              ; preds = %338, %138, %134
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %343

340:                                              ; preds = %330, %87, %74
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %341

341:                                              ; preds = %340, %64, %39
  %342 = load i32, ptr %3, align 4
  ret i32 %342

343:                                              ; preds = %339
  %344 = load ptr, ptr %14, align 8
  %345 = load i32, ptr %15, align 4
  %346 = insertvalue { ptr, i32 } poison, ptr %344, 0
  %347 = insertvalue { ptr, i32 } %346, i32 %345, 1
  resume { ptr, i32 } %347

348:                                              ; preds = %298, %290
  unreachable
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN15PrunedEstimater12unique_childEi(ptr noundef nonnull align 8 dereferenceable(457), i32 noundef) #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt5queueIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5queueIiSt5dequeIiSaIiEEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5queueIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) #0 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !10, i64 368}
!16 = !{!"_ZTS15PrunedEstimater", !10, i64 0, !10, i64 4, !17, i64 8, !17, i64 32, !17, i64 56, !17, i64 80, !17, i64 104, !17, i64 128, !21, i64 152, !21, i64 192, !17, i64 232, !17, i64 256, !17, i64 280, !17, i64 304, !21, i64 328, !10, i64 368, !21, i64 376, !21, i64 416, !12, i64 456}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIbSaIbEE", !22, i64 0}
!22 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !23, i64 0}
!23 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !25, i64 0, !25, i64 16, !6, i64 32}
!25 = !{!"_ZTSSt13_Bit_iterator", !26, i64 0}
!26 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !10, i64 8}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = distinct !{!30, !28}


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

%"struct.std::_Bit_reference" = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::queue" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %0, i32 noundef %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca %"struct.std::_Bit_reference", align 8
  %5 = alloca %"struct.std::_Bit_reference", align 8
  %6 = alloca %"struct.std::_Bit_reference", align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"struct.std::_Bit_reference", align 8
  %9 = alloca %"class.std::queue", align 8
  %10 = alloca %"struct.std::_Bit_reference", align 8
  %11 = alloca %"struct.std::_Bit_reference", align 8
  %12 = alloca %"struct.std::_Bit_reference", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.std::_Bit_reference", align 8
  %15 = alloca %"struct.std::_Bit_reference", align 8
  %16 = alloca %"struct.std::_Bit_reference", align 8
  %17 = alloca %"struct.std::_Bit_reference", align 8
  store i32 %1, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  %18 = getelementptr inbounds i8, ptr %0, i64 152
  %19 = sext i32 %1 to i64
  %20 = tail call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %19)
  %21 = extractvalue { ptr, i64 } %20, 0
  store ptr %21, ptr %4, align 8
  %22 = getelementptr inbounds i8, ptr %4, i64 8
  %23 = extractvalue { ptr, i64 } %20, 1
  store i64 %23, ptr %22, align 8
  %24 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  br i1 %24, label %25, label %29

25:                                               ; preds = %2
  %26 = getelementptr inbounds i8, ptr %0, i64 56
  %27 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %19) #5
  %28 = load i32, ptr %27, align 4, !tbaa !5
  br label %219

29:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #5
  %30 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %19)
  %31 = extractvalue { ptr, i64 } %30, 0
  store ptr %31, ptr %5, align 8
  %32 = getelementptr inbounds i8, ptr %5, i64 8
  %33 = extractvalue { ptr, i64 } %30, 1
  store i64 %33, ptr %32, align 8
  %34 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %5, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #5
  %35 = getelementptr inbounds i8, ptr %0, i64 192
  %36 = load i32, ptr %3, align 4, !tbaa !5
  %37 = sext i32 %36 to i64
  %38 = call { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %37)
  %39 = extractvalue { ptr, i64 } %38, 0
  store ptr %39, ptr %6, align 8
  %40 = getelementptr inbounds i8, ptr %6, i64 8
  %41 = extractvalue { ptr, i64 } %38, 1
  store i64 %41, ptr %40, align 8
  %42 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  br i1 %42, label %43, label %48

43:                                               ; preds = %29
  %44 = getelementptr inbounds i8, ptr %0, i64 56
  %45 = load i32, ptr %3, align 4, !tbaa !5
  %46 = sext i32 %45 to i64
  %47 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %46) #5
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %219

48:                                               ; preds = %29
  %49 = load i32, ptr %3, align 4, !tbaa !5
  %50 = call noundef i32 @_ZN15PrunedEstimater12unique_childEi(ptr noundef nonnull align 8 dereferenceable(457) %0, i32 noundef %49)
  %51 = icmp eq i32 %50, -1
  br i1 %51, label %52, label %62

52:                                               ; preds = %48
  %53 = getelementptr inbounds i8, ptr %0, i64 8
  %54 = load i32, ptr %3, align 4, !tbaa !5
  %55 = sext i32 %54 to i64
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef %55) #5
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %0, i64 56
  %59 = load i32, ptr %3, align 4, !tbaa !5
  %60 = sext i32 %59 to i64
  %61 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %60) #5
  store i32 %57, ptr %61, align 4, !tbaa !5
  br label %219

62:                                               ; preds = %48
  %63 = icmp sgt i32 %50, -1
  br i1 %63, label %64, label %76

64:                                               ; preds = %62
  %65 = call noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %0, i32 noundef %50)
  %66 = getelementptr inbounds i8, ptr %0, i64 8
  %67 = load i32, ptr %3, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %68) #5
  %70 = load i32, ptr %69, align 4, !tbaa !5
  %71 = add nsw i32 %70, %65
  %72 = getelementptr inbounds i8, ptr %0, i64 56
  %73 = load i32, ptr %3, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %74) #5
  store i32 %71, ptr %75, align 4, !tbaa !5
  br label %219

76:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #5
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  %77 = getelementptr inbounds i8, ptr %0, i64 328
  %78 = load i32, ptr %3, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %77, i64 noundef %79)
          to label %81 unwind label %102

81:                                               ; preds = %76
  %82 = extractvalue { ptr, i64 } %80, 0
  store ptr %82, ptr %8, align 8
  %83 = getelementptr inbounds i8, ptr %8, i64 8
  %84 = extractvalue { ptr, i64 } %80, 1
  store i64 %84, ptr %83, align 8
  %85 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %86 unwind label %104

86:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #5
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %87 unwind label %106

87:                                               ; preds = %86
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %88 unwind label %108

88:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  %89 = getelementptr inbounds i8, ptr %0, i64 416
  %90 = load i32, ptr %3, align 4, !tbaa !5
  %91 = sext i32 %90 to i64
  %92 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %89, i64 noundef %91)
          to label %93 unwind label %110

93:                                               ; preds = %88
  %94 = extractvalue { ptr, i64 } %92, 0
  store ptr %94, ptr %10, align 8
  %95 = getelementptr inbounds i8, ptr %10, i64 8
  %96 = extractvalue { ptr, i64 } %92, 1
  store i64 %96, ptr %95, align 8
  %97 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  br i1 %97, label %98, label %114

98:                                               ; preds = %93
  %99 = getelementptr inbounds i8, ptr %0, i64 368
  %100 = load i32, ptr %99, align 8, !tbaa !9
  %101 = invoke noundef i32 @_ZN15PrunedEstimater5sigmaEi(ptr noundef nonnull align 8 dereferenceable(457) %0, i32 noundef %100)
          to label %114 unwind label %112

102:                                              ; preds = %76
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %218

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

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

108:                                              ; preds = %87
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %216

110:                                              ; preds = %88
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  br label %216

112:                                              ; preds = %98
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %216

114:                                              ; preds = %98, %93
  %.032 = phi i32 [ 0, %93 ], [ %101, %98 ]
  %115 = call noundef zeroext i1 @_ZNKSt5queueIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  br i1 %115, label %.preheader, label %.lr.ph51

.lr.ph51:                                         ; preds = %114
  %116 = getelementptr inbounds i8, ptr %11, i64 8
  %117 = getelementptr inbounds i8, ptr %0, i64 376
  %118 = getelementptr inbounds i8, ptr %12, i64 8
  %119 = getelementptr inbounds i8, ptr %0, i64 8
  %120 = getelementptr inbounds i8, ptr %0, i64 280
  %121 = getelementptr inbounds i8, ptr %0, i64 232
  %122 = getelementptr inbounds i8, ptr %14, i64 8
  %123 = getelementptr inbounds i8, ptr %15, i64 8
  %124 = getelementptr inbounds i8, ptr %16, i64 8
  br label %127

.preheader:                                       ; preds = %.loopexit, %114
  %.133.lcssa = phi i32 [ %.032, %114 ], [ %.234, %.loopexit ]
  %125 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  %.not = icmp eq i64 %125, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph53

.lr.ph53:                                         ; preds = %.preheader
  %126 = getelementptr inbounds i8, ptr %17, i64 8
  br label %203

127:                                              ; preds = %.lr.ph51, %.loopexit
  %.13350 = phi i32 [ %.032, %.lr.ph51 ], [ %.234, %.loopexit ]
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5queueIiSt5dequeIiSaIiEEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %129 = load i32, ptr %128, align 4, !tbaa !5
  call void @_ZNSt5queueIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  %130 = sext i32 %129 to i64
  %131 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %130)
          to label %132 unwind label %136

132:                                              ; preds = %127
  %133 = extractvalue { ptr, i64 } %131, 0
  store ptr %133, ptr %11, align 8
  %134 = extractvalue { ptr, i64 } %131, 1
  store i64 %134, ptr %116, align 8
  %135 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br i1 %135, label %.loopexit, label %138, !llvm.loop !23

136:                                              ; preds = %127
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br label %216

138:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  br i1 %97, label %139, label %.critedge

139:                                              ; preds = %138
  %140 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %117, i64 noundef %130)
          to label %141 unwind label %145

141:                                              ; preds = %139
  %142 = extractvalue { ptr, i64 } %140, 0
  store ptr %142, ptr %12, align 8
  %143 = extractvalue { ptr, i64 } %140, 1
  store i64 %143, ptr %118, align 8
  %144 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  br i1 %144, label %.loopexit, label %147, !llvm.loop !23

145:                                              ; preds = %139
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  br label %216

.critedge:                                        ; preds = %138
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  br label %147

147:                                              ; preds = %.critedge, %141
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %130) #5
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = add nsw i32 %149, %.13350
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %130) #5
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = add nsw i32 %129, 1
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %154) #5
  %156 = load i32, ptr %155, align 4, !tbaa !5
  %157 = icmp slt i32 %152, %156
  br i1 %157, label %.lr.ph.preheader, label %.loopexit

.lr.ph.preheader:                                 ; preds = %147
  %158 = sext i32 %152 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %192
  %indvars.iv = phi i64 [ %158, %.lr.ph.preheader ], [ %indvars.iv.next, %192 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %indvars.iv) #5
  %160 = load i32, ptr %159, align 4, !tbaa !5
  store i32 %160, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  %161 = sext i32 %160 to i64
  %162 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %35, i64 noundef %161)
          to label %163 unwind label %167

163:                                              ; preds = %.lr.ph
  %164 = extractvalue { ptr, i64 } %162, 0
  store ptr %164, ptr %14, align 8
  %165 = extractvalue { ptr, i64 } %162, 1
  store i64 %165, ptr %122, align 8
  %166 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  br i1 %166, label %192, label %169

167:                                              ; preds = %.lr.ph
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  br label %197

169:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  %170 = load i32, ptr %13, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %77, i64 noundef %171)
          to label %173 unwind label %186

173:                                              ; preds = %169
  %174 = extractvalue { ptr, i64 } %172, 0
  store ptr %174, ptr %15, align 8
  %175 = extractvalue { ptr, i64 } %172, 1
  store i64 %175, ptr %123, align 8
  %176 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br i1 %176, label %192, label %177

177:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  %178 = load i32, ptr %13, align 4, !tbaa !5
  %179 = sext i32 %178 to i64
  %180 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %77, i64 noundef %179)
          to label %181 unwind label %188

181:                                              ; preds = %177
  %182 = extractvalue { ptr, i64 } %180, 0
  store ptr %182, ptr %16, align 8
  %183 = extractvalue { ptr, i64 } %180, 1
  store i64 %183, ptr %124, align 8
  %184 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %16, i1 noundef zeroext true) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %185 unwind label %190

185:                                              ; preds = %181
  invoke void @_ZNSt5queueIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %192 unwind label %190

186:                                              ; preds = %169
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br label %197

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

190:                                              ; preds = %185, %181
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %197

192:                                              ; preds = %173, %185, %163
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %154) #5
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = icmp slt i64 %indvars.iv.next, %195
  br i1 %196, label %.lr.ph, label %.loopexit, !llvm.loop !25

197:                                              ; preds = %190, %188, %186, %167
  %.pn = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ], [ %187, %186 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  br label %216

.loopexit:                                        ; preds = %192, %147, %141, %132
  %.234 = phi i32 [ %.13350, %132 ], [ %.13350, %141 ], [ %150, %147 ], [ %150, %192 ]
  %198 = call noundef zeroext i1 @_ZNKSt5queueIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  br i1 %198, label %.preheader, label %127

._crit_edge:                                      ; preds = %208, %.preheader
  %199 = getelementptr inbounds i8, ptr %0, i64 56
  %200 = load i32, ptr %3, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %201) #5
  store i32 %.133.lcssa, ptr %202, align 4, !tbaa !5
  call void @_ZNSt5queueIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #5
  br label %219

203:                                              ; preds = %.lr.ph53, %208
  %indvars.iv55 = phi i64 [ 0, %.lr.ph53 ], [ %indvars.iv.next56, %208 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv55) #5
  %205 = load i32, ptr %204, align 4, !tbaa !5
  %206 = sext i32 %205 to i64
  %207 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %77, i64 noundef %206)
          to label %208 unwind label %214

208:                                              ; preds = %203
  %209 = extractvalue { ptr, i64 } %207, 0
  store ptr %209, ptr %17, align 8
  %210 = extractvalue { ptr, i64 } %207, 1
  store i64 %210, ptr %126, align 8
  %211 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %17, i1 noundef zeroext false) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1
  %212 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  %213 = icmp ugt i64 %212, %indvars.iv.next56
  br i1 %213, label %203, label %._crit_edge, !llvm.loop !26

214:                                              ; preds = %203
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  br label %216

216:                                              ; preds = %110, %112, %214, %197, %145, %136, %108
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %109, %108 ], [ %215, %214 ], [ %113, %112 ], [ %111, %110 ], [ %.pn, %197 ], [ %146, %145 ], [ %137, %136 ]
  call void @_ZNSt5queueIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #5
  br label %217

217:                                              ; preds = %216, %106
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %216 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #5
  br label %218

218:                                              ; preds = %217, %104, %102
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %217 ], [ %105, %104 ], [ %103, %102 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #5
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn

219:                                              ; preds = %52, %64, %._crit_edge, %43, %25
  %.1 = phi i32 [ %28, %25 ], [ 0, %43 ], [ %57, %52 ], [ %71, %64 ], [ %.133.lcssa, %._crit_edge ]
  ret i32 %.1
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN15PrunedEstimater12unique_childEi(ptr noundef nonnull align 8 dereferenceable(457), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt5queueIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5queueIiSt5dequeIiSaIiEEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5queueIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #0 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 368}
!10 = !{!"_ZTS15PrunedEstimater", !6, i64 0, !6, i64 4, !11, i64 8, !11, i64 32, !11, i64 56, !11, i64 80, !11, i64 104, !11, i64 128, !16, i64 152, !16, i64 192, !11, i64 232, !11, i64 256, !11, i64 280, !11, i64 304, !16, i64 328, !6, i64 368, !16, i64 376, !16, i64 416, !22, i64 456}
!11 = !{!"_ZTSSt6vectorIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIbSaIbEE", !17, i64 0}
!17 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !18, i64 0}
!18 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !20, i64 0, !20, i64 16, !15, i64 32}
!20 = !{!"_ZTSSt13_Bit_iterator", !21, i64 0}
!21 = !{!"_ZTSSt18_Bit_iterator_base", !15, i64 0, !6, i64 8}
!22 = !{!"bool", !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = distinct !{!26, !24}


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