; LLVM IR from fdabrandao/vpsolver :: src/arcflow.ll (ZN7Arcflow4initERK8Instance)

; 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::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl" }
%"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl" = type { %"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.10" = type { i8 }
%class.Arcflow = type <{ i8, [7 x i8], %"class.std::set", %class.NodeSet, %"class.std::vector.8", %"class.std::map", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector", i32, [4 x i8], i64, %class.Instance, i32, i32, i32, [4 x i8], %"class.std::vector.8", %"class.std::vector.23", i32, [4 x i8] }>
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Arc, Arc, std::_Identity<Arc>, std::less<Arc>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Arc, Arc, std::_Identity<Arc>, std::less<Arc>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.NodeSet = type { %"class.std::map", %"class.std::vector" }
%"class.std::map" = type { %"class.std::_Rb_tree.0" }
%"class.std::_Rb_tree.0" = type { %"struct.std::_Rb_tree<std::vector<int>, std::pair<const std::vector<int>, int>, std::_Select1st<std::pair<const std::vector<int>, int>>, std::less<std::vector<int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::vector<int>, std::pair<const std::vector<int>, int>, std::_Select1st<std::pair<const std::vector<int>, int>>, std::less<std::vector<int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Instance = type { i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.13", i32, i8, i8, i8, %"class.std::vector.18", %"class.std::vector.8", %"class.std::vector.8" }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<Arc, std::allocator<Arc>>::_Vector_impl" }
%"struct.std::_Vector_base<Arc, std::allocator<Arc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Arc, std::allocator<Arc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Arc, std::allocator<Arc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Item = type { %"class.std::vector.8", %"class.std::vector.8", i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare i64 @clock() #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Arcflow4initERK8Instance(ptr noundef nonnull align 8 dereferenceable(604) %0, ptr noundef nonnull align 8 dereferenceable(200) %1) #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [256 x i8], align 16
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::vector.13", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::vector.8", align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::vector.8", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::allocator.10", align 1
  %21 = alloca %"class.std::vector.8", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca [256 x i8], align 16
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca [256 x i8], align 16
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %31 = load ptr, ptr %3, align 8
  %32 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 0
  %33 = load i8, ptr %32, align 8, !tbaa !9, !range !49, !noundef !50
  %34 = trunc i8 %33 to i1
  %35 = zext i1 %34 to i32
  %36 = icmp eq i32 %35, 0
  br i1 %36, label %47, label %37

37:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 256, ptr %5) #7
  %38 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  %39 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %38, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 31) #7
  %40 = call ptr @__cxa_allocate_exception(i64 16) #7
  %41 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef %41)
          to label %42 unwind label %43

42:                                               ; preds = %37
  call void @__cxa_throw(ptr %40, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
  unreachable

43:                                               ; preds = %37
  %44 = landingpad { ptr, i32 }
          cleanup
  %45 = extractvalue { ptr, i32 } %44, 0
  store ptr %45, ptr %6, align 8
  %46 = extractvalue { ptr, i32 } %44, 1
  store i32 %46, ptr %7, align 4
  call void @__cxa_free_exception(ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #7
  br label %403

47:                                               ; preds = %2
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %50 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZN8InstanceaSERKS_(ptr noundef nonnull align 8 dereferenceable(200) %49, ptr noundef nonnull align 8 dereferenceable(200) %48)
  %51 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %52 = getelementptr inbounds %class.Instance, ptr %51, i32 0, i32 2
  %53 = load i32, ptr %52, align 8, !tbaa !51
  %54 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 21
  store i32 %53, ptr %54, align 8, !tbaa !52
  %55 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %56 = getelementptr inbounds %class.Instance, ptr %55, i32 0, i32 0
  %57 = load i32, ptr %56, align 8, !tbaa !53
  %58 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 11
  store i32 %57, ptr %58, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #7
  %59 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  call void @_ZN8Instance12sorted_itemsEv(ptr dead_on_unwind writable sret(%"class.std::vector.13") align 8 %8, ptr noundef nonnull align 8 dereferenceable(200) %59)
  %60 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 9
  %61 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI4ItemSaIS0_EEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @_ZNSt6vectorI4ItemSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #7
  %62 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  %63 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 11
  %64 = load i32, ptr %63, align 8, !tbaa !54
  %65 = sext i32 %64 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !55
  call void @_ZNSt6vectorIiSaIiEE6resizeEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %65, ptr noundef nonnull align 4 dereferenceable(4) %9)
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !55
  br label %66

66:                                               ; preds = %104, %47
  %67 = load i32, ptr %10, align 4, !tbaa !55
  %68 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %69 = getelementptr inbounds %class.Instance, ptr %68, i32 0, i32 0
  %70 = load i32, ptr %69, align 8, !tbaa !53
  %71 = icmp slt i32 %67, %70
  br i1 %71, label %73, label %72

72:                                               ; preds = %66
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %107

73:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !55
  br label %74

74:                                               ; preds = %100, %73
  %75 = load i32, ptr %12, align 4, !tbaa !55
  %76 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %77 = getelementptr inbounds %class.Instance, ptr %76, i32 0, i32 1
  %78 = load i32, ptr %77, align 4, !tbaa !56
  %79 = icmp slt i32 %75, %78
  br i1 %79, label %81, label %80

80:                                               ; preds = %74
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %103

81:                                               ; preds = %74
  %82 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  %83 = load i32, ptr %10, align 4, !tbaa !55
  %84 = sext i32 %83 to i64
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %84) #7
  %86 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %87 = getelementptr inbounds %class.Instance, ptr %86, i32 0, i32 5
  %88 = load i32, ptr %12, align 4, !tbaa !55
  %89 = sext i32 %88 to i64
  %90 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89) #7
  %91 = load i32, ptr %10, align 4, !tbaa !55
  %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) #7
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 4 dereferenceable(4) %93)
  %95 = load i32, ptr %94, align 4, !tbaa !55
  %96 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  %97 = load i32, ptr %10, align 4, !tbaa !55
  %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) #7
  store i32 %95, ptr %99, align 4, !tbaa !55
  br label %100

100:                                              ; preds = %81
  %101 = load i32, ptr %12, align 4, !tbaa !55
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr %12, align 4, !tbaa !55
  br label %74, !llvm.loop !57

103:                                              ; preds = %80
  br label %104

104:                                              ; preds = %103
  %105 = load i32, ptr %10, align 4, !tbaa !55
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr %10, align 4, !tbaa !55
  br label %66, !llvm.loop !59

107:                                              ; preds = %72
  %108 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  %109 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 6
  %110 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %108)
  %111 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %112 = getelementptr inbounds %class.Instance, ptr %111, i32 0, i32 10
  %113 = load i8, ptr %112, align 4, !tbaa !60, !range !49, !noundef !50
  %114 = trunc i8 %113 to i1
  br i1 %114, label %115, label %122

115:                                              ; preds = %107
  %116 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %117 = getelementptr inbounds %class.Instance, ptr %116, i32 0, i32 0
  %118 = load i32, ptr %117, align 8, !tbaa !53
  %119 = add nsw i32 %118, 1
  %120 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 11
  store i32 %119, ptr %120, align 8, !tbaa !54
  %121 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 2147483647, ptr %13, align 4, !tbaa !55
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %121, ptr noundef nonnull align 4 dereferenceable(4) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %122

122:                                              ; preds = %115, %107
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #7
  %123 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  call void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %123)
  %124 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %125 = getelementptr inbounds %class.Instance, ptr %124, i32 0, i32 2
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(4) %125)
          to label %126 unwind label %139

126:                                              ; preds = %122
  %127 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %128 = getelementptr inbounds %class.Instance, ptr %127, i32 0, i32 10
  %129 = load i8, ptr %128, align 4, !tbaa !60, !range !49, !noundef !50
  %130 = trunc i8 %129 to i1
  br i1 %130, label %166, label %131

131:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !55
  br label %132

132:                                              ; preds = %152, %131
  %133 = load i32, ptr %16, align 4, !tbaa !55
  %134 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %135 = getelementptr inbounds %class.Instance, ptr %134, i32 0, i32 2
  %136 = load i32, ptr %135, align 8, !tbaa !51
  %137 = icmp slt i32 %133, %136
  br i1 %137, label %143, label %138

138:                                              ; preds = %132
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %159

139:                                              ; preds = %283, %253, %166, %122
  %140 = landingpad { ptr, i32 }
          cleanup
  %141 = extractvalue { ptr, i32 } %140, 0
  store ptr %141, ptr %6, align 8
  %142 = extractvalue { ptr, i32 } %140, 1
  store i32 %142, ptr %7, align 4
  br label %402

143:                                              ; preds = %132
  %144 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 9
  %145 = load i32, ptr %16, align 4, !tbaa !55
  %146 = sext i32 %145 to i64
  %147 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI4ItemSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %146) #7
  %148 = getelementptr inbounds %class.Item, ptr %147, i32 0, i32 6
  %149 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %148)
          to label %150 unwind label %155

150:                                              ; preds = %143
  %151 = load i32, ptr %149, align 4, !tbaa !55
  store i32 %151, ptr %15, align 4, !tbaa !55
  br label %152

152:                                              ; preds = %150
  %153 = load i32, ptr %16, align 4, !tbaa !55
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %16, align 4, !tbaa !55
  br label %132, !llvm.loop !61

155:                                              ; preds = %143
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %6, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %165

159:                                              ; preds = %138
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %160 unwind label %161

160:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %166

161:                                              ; preds = %159
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %6, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %7, align 4
  br label %165

165:                                              ; preds = %161, %155
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %402

166:                                              ; preds = %160, %126
  %167 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 10
  %168 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %169 = getelementptr inbounds %class.Instance, ptr %168, i32 0, i32 2
  %170 = load i32, ptr %169, align 8, !tbaa !51
  %171 = sext i32 %170 to i64
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %171)
          to label %172 unwind label %139

172:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !55
  br label %173

173:                                              ; preds = %192, %172
  %174 = load i32, ptr %17, align 4, !tbaa !55
  %175 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %176 = getelementptr inbounds %class.Instance, ptr %175, i32 0, i32 2
  %177 = load i32, ptr %176, align 8, !tbaa !51
  %178 = icmp slt i32 %174, %177
  br i1 %178, label %180, label %179

179:                                              ; preds = %173
  store i32 11, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %199

180:                                              ; preds = %173
  %181 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 9
  %182 = load i32, ptr %17, align 4, !tbaa !55
  %183 = sext i32 %182 to i64
  %184 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI4ItemSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %183) #7
  %185 = getelementptr inbounds %class.Item, ptr %184, i32 0, i32 0
  %186 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 10
  %187 = load i32, ptr %17, align 4, !tbaa !55
  %188 = sext i32 %187 to i64
  %189 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %186, i64 noundef %188) #7
  %190 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr noundef nonnull align 8 dereferenceable(24) %185)
          to label %191 unwind label %195

191:                                              ; preds = %180
  br label %192

192:                                              ; preds = %191
  %193 = load i32, ptr %17, align 4, !tbaa !55
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %17, align 4, !tbaa !55
  br label %173, !llvm.loop !62

195:                                              ; preds = %180
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %6, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %402

199:                                              ; preds = %179
  %200 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 10
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  %201 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %202 = getelementptr inbounds %class.Instance, ptr %201, i32 0, i32 0
  %203 = load i32, ptr %202, align 8, !tbaa !53
  %204 = sext i32 %203 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %204, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %205 unwind label %217

205:                                              ; preds = %199
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %206 unwind label %221

206:                                              ; preds = %205
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  %207 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 4
  invoke void @_ZNK7Arcflow13count_max_repERKSt6vectorIiSaIiEEii(ptr dead_on_unwind writable sret(%"class.std::vector.8") align 8 %21, ptr noundef nonnull align 8 dereferenceable(604) %31, ptr noundef nonnull align 8 dereferenceable(24) %207, i32 noundef 0, i32 noundef 0)
          to label %208 unwind label %226

208:                                              ; preds = %206
  %209 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 8
  %210 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %209, ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %22, align 4, !tbaa !55
  br label %211

211:                                              ; preds = %246, %208
  %212 = load i32, ptr %22, align 4, !tbaa !55
  %213 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  %214 = trunc i64 %213 to i32
  %215 = icmp slt i32 %212, %214
  br i1 %215, label %230, label %216

216:                                              ; preds = %211
  store i32 14, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %253

217:                                              ; preds = %199
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %6, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %7, align 4
  br label %225

221:                                              ; preds = %205
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %6, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %7, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  br label %225

225:                                              ; preds = %221, %217
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  br label %402

226:                                              ; preds = %206
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %6, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  br label %402

230:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %231 = load i32, ptr %22, align 4, !tbaa !55
  %232 = sext i32 %231 to i64
  %233 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %232) #7
  %234 = load i32, ptr %233, align 4, !tbaa !55
  store i32 %234, ptr %24, align 4, !tbaa !55
  br label %235

235:                                              ; preds = %238, %230
  %236 = load i32, ptr %24, align 4, !tbaa !55
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = load i32, ptr %23, align 4, !tbaa !55
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %23, align 4, !tbaa !55
  %241 = load i32, ptr %24, align 4, !tbaa !55
  %242 = ashr i32 %241, 1
  store i32 %242, ptr %24, align 4, !tbaa !55
  br label %235, !llvm.loop !63

243:                                              ; preds = %235
  %244 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %244, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %245 unwind label %249

245:                                              ; preds = %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %246

246:                                              ; preds = %245
  %247 = load i32, ptr %22, align 4, !tbaa !55
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %22, align 4, !tbaa !55
  br label %211, !llvm.loop !64

249:                                              ; preds = %243
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %6, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %402

253:                                              ; preds = %216
  %254 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %255 = getelementptr inbounds %class.Instance, ptr %254, i32 0, i32 9
  %256 = load i32, ptr %255, align 8, !tbaa !65
  %257 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %256)
          to label %258 unwind label %139

258:                                              ; preds = %253
  %259 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %260 = getelementptr inbounds %class.Instance, ptr %259, i32 0, i32 9
  %261 = load i32, ptr %260, align 8, !tbaa !65
  %262 = icmp sge i32 %261, -3
  br i1 %262, label %263, label %268

263:                                              ; preds = %258
  %264 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %265 = getelementptr inbounds %class.Instance, ptr %264, i32 0, i32 9
  %266 = load i32, ptr %265, align 8, !tbaa !65
  %267 = icmp sle i32 %266, -3
  br i1 %267, label %283, label %268

268:                                              ; preds = %263, %258
  call void @llvm.lifetime.start.p0(i64 256, ptr %25) #7
  %269 = getelementptr inbounds [256 x i8], ptr %25, i64 0, i64 0
  %270 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %269, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.5, ptr noundef @.str.2, i32 noundef 77) #7
  %271 = call ptr @__cxa_allocate_exception(i64 16) #7
  %272 = getelementptr inbounds [256 x i8], ptr %25, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %271, ptr noundef %272)
          to label %273 unwind label %274

273:                                              ; preds = %268
  invoke void @__cxa_throw(ptr %271, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %408 unwind label %278

274:                                              ; preds = %268
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %6, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %7, align 4
  call void @__cxa_free_exception(ptr %271) #7
  br label %282

278:                                              ; preds = %273
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %6, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %7, align 4
  br label %282

282:                                              ; preds = %278, %274
  call void @llvm.lifetime.end.p0(i64 256, ptr %25) #7
  br label %402

283:                                              ; preds = %263
  invoke void @_ZN7Arcflow5buildEv(ptr noundef nonnull align 8 dereferenceable(604) %31)
          to label %284 unwind label %139

284:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %285 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 3
  %286 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %285)
          to label %287 unwind label %372

287:                                              ; preds = %284
  %288 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %289 = getelementptr inbounds %class.Instance, ptr %288, i32 0, i32 1
  %290 = load i32, ptr %289, align 4, !tbaa !56
  %291 = add nsw i32 %286, %290
  store i32 %291, ptr %26, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %292 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 20
  %293 = call noundef i64 @_ZNKSt6vectorI3ArcSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %292) #7
  %294 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 3
  %295 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %294)
          to label %296 unwind label %376

296:                                              ; preds = %287
  %297 = sub nsw i32 %295, 1
  %298 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 14
  %299 = getelementptr inbounds %class.Instance, ptr %298, i32 0, i32 1
  %300 = load i32, ptr %299, align 4, !tbaa !56
  %301 = mul nsw i32 %297, %300
  %302 = sext i32 %301 to i64
  %303 = add i64 %293, %302
  %304 = add i64 %303, 1
  %305 = trunc i64 %304 to i32
  store i32 %305, ptr %27, align 4, !tbaa !55
  %306 = load i32, ptr %26, align 4, !tbaa !55
  %307 = load i32, ptr %27, align 4, !tbaa !55
  %308 = call i64 @clock() #7
  %309 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 13
  %310 = load i64, ptr %309, align 8, !tbaa !66
  %311 = sub nsw i64 %308, %310
  %312 = sitofp i64 %311 to double
  %313 = fdiv double %312, 1.000000e+06
  %314 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %306, i32 noundef %307, double noundef %313)
          to label %315 unwind label %376

315:                                              ; preds = %296
  invoke void @_ZN7Arcflow22final_compression_stepEv(ptr noundef nonnull align 8 dereferenceable(604) %31)
          to label %316 unwind label %376

316:                                              ; preds = %315
  invoke void @_ZN7Arcflow8finalizeEv(ptr noundef nonnull align 8 dereferenceable(604) %31)
          to label %317 unwind label %376

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %318 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 3
  %319 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %318)
          to label %320 unwind label %380

320:                                              ; preds = %317
  %321 = sext i32 %319 to i64
  %322 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 19
  %323 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %322) #7
  %324 = add i64 %321, %323
  %325 = trunc i64 %324 to i32
  store i32 %325, ptr %28, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %326 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 20
  %327 = call noundef i64 @_ZNKSt6vectorI3ArcSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %326) #7
  %328 = trunc i64 %327 to i32
  store i32 %328, ptr %29, align 4, !tbaa !55
  %329 = load i32, ptr %28, align 4, !tbaa !55
  %330 = load i32, ptr %29, align 4, !tbaa !55
  %331 = call i64 @clock() #7
  %332 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 13
  %333 = load i64, ptr %332, align 8, !tbaa !66
  %334 = sub nsw i64 %331, %333
  %335 = sitofp i64 %334 to double
  %336 = fdiv double %335, 1.000000e+06
  %337 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.7, i32 noundef %329, i32 noundef %330, double noundef %336)
          to label %338 unwind label %384

338:                                              ; preds = %320
  %339 = load i32, ptr %28, align 4, !tbaa !55
  %340 = sitofp i32 %339 to double
  %341 = load i32, ptr %26, align 4, !tbaa !55
  %342 = sitofp i32 %341 to double
  %343 = fdiv double %340, %342
  %344 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.8, double noundef %343)
          to label %345 unwind label %384

345:                                              ; preds = %338
  %346 = load i32, ptr %29, align 4, !tbaa !55
  %347 = sitofp i32 %346 to double
  %348 = load i32, ptr %27, align 4, !tbaa !55
  %349 = sitofp i32 %348 to double
  %350 = fdiv double %347, %349
  %351 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.9, double noundef %350)
          to label %352 unwind label %384

352:                                              ; preds = %345
  %353 = call i64 @clock() #7
  %354 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 13
  %355 = load i64, ptr %354, align 8, !tbaa !66
  %356 = sub nsw i64 %353, %355
  %357 = sitofp i64 %356 to double
  %358 = fdiv double %357, 1.000000e+06
  %359 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10, double noundef %358)
          to label %360 unwind label %384

360:                                              ; preds = %352
  %361 = getelementptr inbounds %class.Arcflow, ptr %31, i32 0, i32 0
  %362 = load i8, ptr %361, align 8, !tbaa !9, !range !49, !noundef !50
  %363 = trunc i8 %362 to i1
  %364 = zext i1 %363 to i32
  %365 = icmp eq i32 %364, 1
  br i1 %365, label %397, label %366

366:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 256, ptr %30) #7
  %367 = getelementptr inbounds [256 x i8], ptr %30, i64 0, i64 0
  %368 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %367, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 94) #7
  %369 = call ptr @__cxa_allocate_exception(i64 16) #7
  %370 = getelementptr inbounds [256 x i8], ptr %30, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef %370)
          to label %371 unwind label %388

371:                                              ; preds = %366
  invoke void @__cxa_throw(ptr %369, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %408 unwind label %392

372:                                              ; preds = %284
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %6, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %7, align 4
  br label %401

376:                                              ; preds = %316, %315, %296, %287
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %6, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %7, align 4
  br label %400

380:                                              ; preds = %317
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %6, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %7, align 4
  br label %399

384:                                              ; preds = %352, %345, %338, %320
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %6, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %7, align 4
  br label %398

388:                                              ; preds = %366
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %6, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %7, align 4
  call void @__cxa_free_exception(ptr %369) #7
  br label %396

392:                                              ; preds = %371
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %6, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %7, align 4
  br label %396

396:                                              ; preds = %392, %388
  call void @llvm.lifetime.end.p0(i64 256, ptr %30) #7
  br label %398

397:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  ret void

398:                                              ; preds = %396, %384
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %399

399:                                              ; preds = %398, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %400

400:                                              ; preds = %399, %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %401

401:                                              ; preds = %400, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %402

402:                                              ; preds = %401, %282, %249, %226, %225, %195, %165, %139
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  br label %403

403:                                              ; preds = %402, %43
  %404 = load ptr, ptr %6, align 8
  %405 = load i32, ptr %7, align 4
  %406 = insertvalue { ptr, i32 } poison, ptr %404, 0
  %407 = insertvalue { ptr, i32 } %406, i32 %405, 1
  resume { ptr, i32 } %407

408:                                              ; preds = %371, %273
  unreachable
}

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #0

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #3

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

declare void @_ZN8Instance12sorted_itemsEv(ptr dead_on_unwind writable sret(%"class.std::vector.13") align 8, ptr noundef nonnull align 8 dereferenceable(200)) #3

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Arcflow13count_max_repERKSt6vectorIiSaIiEEii(ptr dead_on_unwind noalias writable sret(%"class.std::vector.8") align 8, ptr noundef nonnull align 8 dereferenceable(604), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #1 align 2

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

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

declare i32 @printf(ptr noundef, ...) #3

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

declare noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72)) #3

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS7Arcflow", !11, i64 0, !12, i64 8, !21, i64 56, !31, i64 128, !22, i64 152, !31, i64 200, !31, i64 224, !31, i64 248, !35, i64 272, !27, i64 296, !39, i64 320, !20, i64 328, !40, i64 336, !39, i64 536, !39, i64 540, !39, i64 544, !31, i64 552, !45, i64 576, !39, i64 600}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSSt3setI3ArcSt4lessIS0_ESaIS0_EE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI3ArcEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessI3ArcE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS7NodeSet", !22, i64 0, !27, i64 48}
!22 = !{!"_ZTSSt3mapISt6vectorIiSaIiEEiSt4lessIS2_ESaISt4pairIKS2_iEEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !25, i64 0, !17, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt6vectorIiSaIiEEEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessISt6vectorIiSaIiEEE"}
!27 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIiSaIiEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorI4ItemSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseI4ItemSaIS0_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"int", !7, i64 0}
!40 = !{!"_ZTS8Instance", !39, i64 0, !39, i64 4, !39, i64 8, !39, i64 12, !39, i64 16, !27, i64 24, !31, i64 48, !31, i64 72, !35, i64 96, !39, i64 120, !11, i64 124, !11, i64 125, !7, i64 126, !41, i64 128, !31, i64 152, !31, i64 176}
!41 = !{!"_ZTSSt6vectorIcSaIcEE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorI3ArcSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseI3ArcSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{i8 0, i8 2}
!50 = !{}
!51 = !{!10, !39, i64 344}
!52 = !{!10, !39, i64 600}
!53 = !{!10, !39, i64 336}
!54 = !{!10, !39, i64 320}
!55 = !{!39, !39, i64 0}
!56 = !{!10, !39, i64 340}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = distinct !{!59, !58}
!60 = !{!10, !11, i64 460}
!61 = distinct !{!61, !58}
!62 = distinct !{!62, !58}
!63 = distinct !{!63, !58}
!64 = distinct !{!64, !58}
!65 = !{!10, !39, i64 456}
!66 = !{!10, !20, i64 328}


; 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::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl" }
%"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl" = type { %"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Item, std::allocator<Item>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.10" = type { i8 }

@.str = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [69 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare i64 @clock() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Arcflow4initERK8Instance(ptr noundef nonnull align 8 dereferenceable(604) %0, ptr noundef nonnull align 8 dereferenceable(200) %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [256 x i8], align 16
  %4 = alloca %"class.std::vector.13", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::vector.8", align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector.8", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::allocator.10", align 1
  %12 = alloca %"class.std::vector.8", align 8
  %13 = alloca i32, align 4
  %14 = alloca [256 x i8], align 16
  %15 = alloca [256 x i8], align 16
  %16 = load i8, ptr %0, align 8, !tbaa !5, !range !48, !noundef !49
  %17 = icmp eq i8 %16, 0
  br i1 %17, label %24, label %18

18:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #8
  %19 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.2, i32 noundef 31) #8
  %20 = tail call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %3)
          to label %21 unwind label %22

21:                                               ; preds = %18
  call void @__cxa_throw(ptr nonnull %20, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

22:                                               ; preds = %18
  %23 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #8
  br label %220

24:                                               ; preds = %2
  %25 = getelementptr inbounds i8, ptr %0, i64 336
  %26 = tail call noundef nonnull align 8 dereferenceable(200) ptr @_ZN8InstanceaSERKS_(ptr noundef nonnull align 8 dereferenceable(200) %25, ptr noundef nonnull align 8 dereferenceable(200) %1)
  %27 = getelementptr inbounds i8, ptr %0, i64 344
  %28 = load i32, ptr %27, align 8, !tbaa !50
  %29 = getelementptr inbounds i8, ptr %0, i64 600
  store i32 %28, ptr %29, align 8, !tbaa !51
  %30 = load i32, ptr %25, align 8, !tbaa !52
  %31 = getelementptr inbounds i8, ptr %0, i64 320
  store i32 %30, ptr %31, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZN8Instance12sorted_itemsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.13") align 8 %4, ptr noundef nonnull align 8 dereferenceable(200) %25)
  %32 = getelementptr inbounds i8, ptr %0, i64 272
  %33 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI4ItemSaIS0_EEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @_ZNSt6vectorI4ItemSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  %34 = getelementptr inbounds i8, ptr %0, i64 128
  %35 = load i32, ptr %31, align 8, !tbaa !53
  %36 = sext i32 %35 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8
  store i32 0, ptr %5, align 4, !tbaa !54
  call void @_ZNSt6vectorIiSaIiEE6resizeEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %36, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  %37 = load i32, ptr %25, align 8, !tbaa !52
  %38 = icmp sgt i32 %37, 0
  br i1 %38, label %.preheader57.lr.ph, label %._crit_edge60

.preheader57.lr.ph:                               ; preds = %24
  %39 = getelementptr inbounds i8, ptr %0, i64 340
  %40 = getelementptr inbounds i8, ptr %0, i64 360
  %41 = load i32, ptr %39, align 4, !tbaa !55
  %42 = icmp sgt i32 %41, 0
  br i1 %42, label %.preheader57, label %._crit_edge60

.preheader57:                                     ; preds = %.preheader57.lr.ph, %._crit_edge
  %43 = phi i32 [ %51, %._crit_edge ], [ %37, %.preheader57.lr.ph ]
  %44 = phi i32 [ %52, %._crit_edge ], [ %41, %.preheader57.lr.ph ]
  %indvars.iv79 = phi i64 [ %indvars.iv.next80, %._crit_edge ], [ 0, %.preheader57.lr.ph ]
  %45 = icmp sgt i32 %44, 0
  br i1 %45, label %.lr.ph, label %._crit_edge

._crit_edge60:                                    ; preds = %._crit_edge, %.preheader57.lr.ph, %24
  %46 = getelementptr inbounds i8, ptr %0, i64 200
  %47 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %34)
  %48 = getelementptr inbounds i8, ptr %0, i64 460
  %49 = load i8, ptr %48, align 4, !tbaa !56, !range !48, !noundef !49
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %64, label %67

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load i32, ptr %25, align 8, !tbaa !52
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader57
  %51 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %43, %.preheader57 ]
  %52 = phi i32 [ %61, %._crit_edge.loopexit ], [ %44, %.preheader57 ]
  %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1
  %53 = sext i32 %51 to i64
  %54 = icmp slt i64 %indvars.iv.next80, %53
  br i1 %54, label %.preheader57, label %._crit_edge60, !llvm.loop !57

.lr.ph:                                           ; preds = %.preheader57, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader57 ]
  %55 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %indvars.iv79) #8
  %56 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %indvars.iv) #8
  %57 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %indvars.iv79) #8
  %58 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef nonnull align 4 dereferenceable(4) %57)
  %59 = load i32, ptr %58, align 4, !tbaa !54
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %indvars.iv79) #8
  store i32 %59, ptr %60, align 4, !tbaa !54
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %61 = load i32, ptr %39, align 4, !tbaa !55
  %62 = sext i32 %61 to i64
  %63 = icmp slt i64 %indvars.iv.next, %62
  br i1 %63, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !60

64:                                               ; preds = %._crit_edge60
  %65 = load i32, ptr %25, align 8, !tbaa !52
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %31, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #8
  store i32 2147483647, ptr %6, align 4, !tbaa !54
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 4 dereferenceable(4) %6)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #8
  br label %67

67:                                               ; preds = %64, %._crit_edge60
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %34)
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %68 unwind label %74

68:                                               ; preds = %67
  %69 = load i8, ptr %48, align 4, !tbaa !56, !range !48, !noundef !49
  %70 = trunc nuw i8 %69 to i1
  br i1 %70, label %86, label %71

71:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  store i32 0, ptr %8, align 4, !tbaa !54
  %72 = load i32, ptr %27, align 8, !tbaa !50
  %73 = icmp sgt i32 %72, 0
  br i1 %73, label %.lr.ph63, label %._crit_edge64

._crit_edge64:                                    ; preds = %.lr.ph63, %71
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %83 unwind label %84

74:                                               ; preds = %146, %86, %67
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %219

.lr.ph63:                                         ; preds = %71, %.lr.ph63
  %indvars.iv82 = phi i64 [ %indvars.iv.next83, %.lr.ph63 ], [ 0, %71 ]
  %76 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI4ItemSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv82) #8
  %77 = getelementptr inbounds i8, ptr %76, i64 64
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %77)
  %79 = load i32, ptr %78, align 4, !tbaa !54
  store i32 %79, ptr %8, align 4, !tbaa !54
  %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1
  %80 = load i32, ptr %27, align 8, !tbaa !50
  %81 = sext i32 %80 to i64
  %82 = icmp slt i64 %indvars.iv.next83, %81
  br i1 %82, label %.lr.ph63, label %._crit_edge64, !llvm.loop !61

83:                                               ; preds = %._crit_edge64
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  br label %86

84:                                               ; preds = %._crit_edge64
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  br label %219

86:                                               ; preds = %83, %68
  %87 = getelementptr inbounds i8, ptr %0, i64 296
  %88 = load i32, ptr %27, align 8, !tbaa !50
  %89 = sext i32 %88 to i64
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %89)
          to label %.preheader unwind label %74

.preheader:                                       ; preds = %86
  %90 = load i32, ptr %27, align 8, !tbaa !50
  %91 = icmp sgt i32 %90, 0
  br i1 %91, label %.lr.ph66, label %._crit_edge67

._crit_edge67:                                    ; preds = %97, %.preheader
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  %92 = load i32, ptr %25, align 8, !tbaa !52
  %93 = sext i32 %92 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  store i32 0, ptr %10, align 4, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %93, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %103 unwind label %117

.lr.ph66:                                         ; preds = %.preheader, %97
  %indvars.iv85 = phi i64 [ %indvars.iv.next86, %97 ], [ 0, %.preheader ]
  %94 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI4ItemSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %indvars.iv85) #8
  %95 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %indvars.iv85) #8
  %96 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 8 dereferenceable(24) %94)
          to label %97 unwind label %101

97:                                               ; preds = %.lr.ph66
  %indvars.iv.next86 = add nuw nsw i64 %indvars.iv85, 1
  %98 = load i32, ptr %27, align 8, !tbaa !50
  %99 = sext i32 %98 to i64
  %100 = icmp slt i64 %indvars.iv.next86, %99
  br i1 %100, label %.lr.ph66, label %._crit_edge67, !llvm.loop !62

101:                                              ; preds = %.lr.ph66
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %219

103:                                              ; preds = %._crit_edge67
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %104 unwind label %119

104:                                              ; preds = %103
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #8
  invoke void @_ZNK7Arcflow13count_max_repERKSt6vectorIiSaIiEEii(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.8") align 8 %12, ptr noundef nonnull align 8 dereferenceable(604) %0, ptr noundef nonnull align 8 dereferenceable(24) %34, i32 noundef 0, i32 noundef 0)
          to label %105 unwind label %122

105:                                              ; preds = %104
  %106 = getelementptr inbounds i8, ptr %0, i64 248
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %106, ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  %108 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %109 = trunc i64 %108 to i32
  %110 = icmp sgt i32 %109, 0
  br i1 %110, label %.lr.ph75, label %._crit_edge76

.lr.ph75:                                         ; preds = %105
  %111 = getelementptr inbounds i8, ptr %0, i64 224
  br label %124

._crit_edge76:                                    ; preds = %131, %105
  %112 = getelementptr inbounds i8, ptr %0, i64 456
  %113 = load i32, ptr %112, align 8, !tbaa !63
  %114 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %113)
  %115 = load i32, ptr %112, align 8, !tbaa !63
  %116 = icmp eq i32 %115, -3
  br i1 %116, label %146, label %137

117:                                              ; preds = %._crit_edge67
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %121

119:                                              ; preds = %103
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %121

121:                                              ; preds = %119, %117
  %.pn = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %219

122:                                              ; preds = %104
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #8
  br label %219

124:                                              ; preds = %.lr.ph75, %131
  %indvars.iv88 = phi i64 [ 0, %.lr.ph75 ], [ %indvars.iv.next89, %131 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  store i32 0, ptr %13, align 4, !tbaa !54
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv88) #8
  %126 = load i32, ptr %125, align 4, !tbaa !54
  %.not68 = icmp eq i32 %126, 0
  br i1 %.not68, label %130, label %.lr.ph71.preheader

.lr.ph71.preheader:                               ; preds = %124
  %.promoted = load i32, ptr %13, align 4, !tbaa !54
  br label %.lr.ph71

.lr.ph71:                                         ; preds = %.lr.ph71.preheader, %.lr.ph71
  %.04069 = phi i32 [ %129, %.lr.ph71 ], [ %126, %.lr.ph71.preheader ]
  %127 = phi i32 [ %128, %.lr.ph71 ], [ %.promoted, %.lr.ph71.preheader ]
  %128 = add nsw i32 %127, 1
  %129 = ashr i32 %.04069, 1
  %.not = icmp ult i32 %.04069, 2
  br i1 %.not, label %._crit_edge72, label %.lr.ph71, !llvm.loop !64

._crit_edge72:                                    ; preds = %.lr.ph71
  store i32 %128, ptr %13, align 4, !tbaa !54
  br label %130

130:                                              ; preds = %._crit_edge72, %124
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %131 unwind label %135

131:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1
  %132 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  %sext = shl i64 %132, 32
  %133 = ashr exact i64 %sext, 32
  %134 = icmp slt i64 %indvars.iv.next89, %133
  br i1 %134, label %124, label %._crit_edge76, !llvm.loop !65

135:                                              ; preds = %130
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  br label %219

137:                                              ; preds = %._crit_edge76
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %14) #8
  %138 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %14, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, i32 noundef 77) #8
  %139 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull %14)
          to label %140 unwind label %141

140:                                              ; preds = %137
  invoke void @__cxa_throw(ptr nonnull %139, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %221 unwind label %143

141:                                              ; preds = %137
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %139) #8
  br label %145

143:                                              ; preds = %140
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %145

145:                                              ; preds = %143, %141
  %.pn47 = phi { ptr, i32 } [ %144, %143 ], [ %142, %141 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %14) #8
  br label %219

146:                                              ; preds = %._crit_edge76
  invoke void @_ZN7Arcflow5buildEv(ptr noundef nonnull align 8 dereferenceable(604) %0)
          to label %147 unwind label %74

147:                                              ; preds = %146
  %148 = getelementptr inbounds i8, ptr %0, i64 56
  %149 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %148)
          to label %150 unwind label %207

150:                                              ; preds = %147
  %151 = getelementptr inbounds i8, ptr %0, i64 340
  %152 = load i32, ptr %151, align 4, !tbaa !55
  %153 = add nsw i32 %152, %149
  %154 = getelementptr inbounds i8, ptr %0, i64 576
  %155 = call noundef i64 @_ZNKSt6vectorI3ArcSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %154) #8
  %156 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %148)
          to label %157 unwind label %209

157:                                              ; preds = %150
  %158 = add nsw i32 %156, -1
  %159 = load i32, ptr %151, align 4, !tbaa !55
  %160 = mul nsw i32 %159, %158
  %161 = trunc i64 %155 to i32
  %162 = add i32 %161, 1
  %163 = add i32 %162, %160
  %164 = call i64 @clock() #8
  %165 = getelementptr inbounds i8, ptr %0, i64 328
  %166 = load i64, ptr %165, align 8, !tbaa !66
  %167 = sub nsw i64 %164, %166
  %168 = sitofp i64 %167 to double
  %169 = fdiv double %168, 1.000000e+06
  %170 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %153, i32 noundef %163, double noundef %169)
  invoke void @_ZN7Arcflow22final_compression_stepEv(ptr noundef nonnull align 8 dereferenceable(604) %0)
          to label %171 unwind label %209

171:                                              ; preds = %157
  invoke void @_ZN7Arcflow8finalizeEv(ptr noundef nonnull align 8 dereferenceable(604) %0)
          to label %172 unwind label %209

172:                                              ; preds = %171
  %173 = invoke noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72) %148)
          to label %174 unwind label %211

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %0, i64 552
  %176 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %175) #8
  %177 = trunc i64 %176 to i32
  %178 = add i32 %173, %177
  %179 = call noundef i64 @_ZNKSt6vectorI3ArcSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %154) #8
  %180 = trunc i64 %179 to i32
  %181 = call i64 @clock() #8
  %182 = load i64, ptr %165, align 8, !tbaa !66
  %183 = sub nsw i64 %181, %182
  %184 = sitofp i64 %183 to double
  %185 = fdiv double %184, 1.000000e+06
  %186 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %178, i32 noundef %180, double noundef %185)
  %187 = sitofp i32 %178 to double
  %188 = sitofp i32 %153 to double
  %189 = fdiv double %187, %188
  %190 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, double noundef %189)
  %191 = sitofp i32 %180 to double
  %192 = sitofp i32 %163 to double
  %193 = fdiv double %191, %192
  %194 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, double noundef %193)
  %195 = call i64 @clock() #8
  %196 = load i64, ptr %165, align 8, !tbaa !66
  %197 = sub nsw i64 %195, %196
  %198 = sitofp i64 %197 to double
  %199 = fdiv double %198, 1.000000e+06
  %200 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10, double noundef %199)
  %201 = load i8, ptr %0, align 8, !tbaa !5, !range !48, !noundef !49
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %218, label %203

203:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %15) #8
  %204 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %15, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 94) #8
  %205 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %205, ptr noundef nonnull %15)
          to label %206 unwind label %213

206:                                              ; preds = %203
  invoke void @__cxa_throw(ptr nonnull %205, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %221 unwind label %215

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

209:                                              ; preds = %171, %157, %150
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %219

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

213:                                              ; preds = %203
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %205) #8
  br label %217

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

217:                                              ; preds = %215, %213
  %.pn49 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %15) #8
  br label %219

218:                                              ; preds = %174
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  ret void

219:                                              ; preds = %207, %211, %217, %209, %145, %135, %122, %121, %101, %84, %74
  %.pn54 = phi { ptr, i32 } [ %102, %101 ], [ %136, %135 ], [ %75, %74 ], [ %.pn47, %145 ], [ %123, %122 ], [ %.pn, %121 ], [ %85, %84 ], [ %208, %207 ], [ %210, %209 ], [ %.pn49, %217 ], [ %212, %211 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  br label %220

220:                                              ; preds = %219, %22
  %.pn54.pn = phi { ptr, i32 } [ %.pn54, %219 ], [ %23, %22 ]
  resume { ptr, i32 } %.pn54.pn

221:                                              ; preds = %206, %140
  unreachable
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

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

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

declare void @_ZN8Instance12sorted_itemsEv(ptr dead_on_unwind writable sret(%"class.std::vector.13") align 8, ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(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 #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Arcflow13count_max_repERKSt6vectorIiSaIiEEii(ptr dead_on_unwind noalias writable sret(%"class.std::vector.8") align 8, ptr noundef nonnull align 8 dereferenceable(604), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

declare noundef i32 @_ZNK7NodeSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #4

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS7Arcflow", !7, i64 0, !10, i64 8, !20, i64 56, !30, i64 128, !21, i64 152, !30, i64 200, !30, i64 224, !30, i64 248, !34, i64 272, !26, i64 296, !38, i64 320, !19, i64 328, !39, i64 336, !38, i64 536, !38, i64 540, !38, i64 544, !30, i64 552, !44, i64 576, !38, i64 600}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt3setI3ArcSt4lessIS0_ESaIS0_EE", !11, i64 0}
!11 = !{!"_ZTSSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE", !12, i64 0}
!12 = !{!"_ZTSNSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEE", !13, i64 0, !15, i64 8}
!13 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI3ArcEE", !14, i64 0}
!14 = !{!"_ZTSSt4lessI3ArcE"}
!15 = !{!"_ZTSSt15_Rb_tree_header", !16, i64 0, !19, i64 32}
!16 = !{!"_ZTSSt18_Rb_tree_node_base", !17, i64 0, !18, i64 8, !18, i64 16, !18, i64 24}
!17 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!18 = !{!"any pointer", !8, i64 0}
!19 = !{!"long", !8, i64 0}
!20 = !{!"_ZTS7NodeSet", !21, i64 0, !26, i64 48}
!21 = !{!"_ZTSSt3mapISt6vectorIiSaIiEEiSt4lessIS2_ESaISt4pairIKS2_iEEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !24, i64 0, !15, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt6vectorIiSaIiEEEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessISt6vectorIiSaIiEEE"}
!26 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!30 = !{!"_ZTSSt6vectorIiSaIiEE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!34 = !{!"_ZTSSt6vectorI4ItemSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI4ItemSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!38 = !{!"int", !8, i64 0}
!39 = !{!"_ZTS8Instance", !38, i64 0, !38, i64 4, !38, i64 8, !38, i64 12, !38, i64 16, !26, i64 24, !30, i64 48, !30, i64 72, !34, i64 96, !38, i64 120, !7, i64 124, !7, i64 125, !8, i64 126, !40, i64 128, !30, i64 152, !30, i64 176}
!40 = !{!"_ZTSSt6vectorIcSaIcEE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!44 = !{!"_ZTSSt6vectorI3ArcSaIS0_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseI3ArcSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!48 = !{i8 0, i8 2}
!49 = !{}
!50 = !{!6, !38, i64 344}
!51 = !{!6, !38, i64 600}
!52 = !{!6, !38, i64 336}
!53 = !{!6, !38, i64 320}
!54 = !{!38, !38, i64 0}
!55 = !{!6, !38, i64 340}
!56 = !{!6, !7, i64 460}
!57 = distinct !{!57, !58, !59}
!58 = !{!"llvm.loop.mustprogress"}
!59 = !{!"llvm.loop.unswitch.partial.disable"}
!60 = distinct !{!60, !58}
!61 = distinct !{!61, !58}
!62 = distinct !{!62, !58}
!63 = !{!6, !38, i64 456}
!64 = distinct !{!64, !58}
!65 = distinct !{!65, !58}
!66 = !{!6, !19, i64 328}


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