; LLVM IR from fdabrandao/vpsolver :: src (arcflowsol)

; 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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.2" = type { i8 }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%class.ArcflowSol = type { %class.Instance, %"class.std::map", i32, %"class.std::vector.0", i32, i32, %"class.std::vector.0", %"class.std::vector.18" }
%class.Instance = type { i32, i32, i32, i32, i32, %"class.std::vector", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", i32, i8, i8, i8, %"class.std::vector.10", %"class.std::vector.0", %"class.std::vector.0" }
%"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.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = 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::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Arc, std::pair<const Arc, int>, std::_Select1st<std::pair<const Arc, int>>, std::less<Arc>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Arc, std::pair<const Arc, int>, std::_Select1st<std::pair<const Arc, int>>, 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.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>, std::allocator<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>, std::allocator<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>, std::allocator<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>, std::allocator<std::vector<std::pair<int, std::vector<std::pair<int, int>>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, %"class.std::vector.28" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, int>, std::allocator<std::pair<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.33" = type { %class.Arc, i32 }
%class.Arc = type { i32, i32, i32 }

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [72 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10ArcflowSolC2ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull align 8 dereferenceable(200) %1, ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::vector.0", align 8
  %16 = alloca %"class.std::allocator.2", align 1
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::vector.23", align 8
  %21 = alloca [256 x i8], align 16
  %22 = alloca ptr, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca [256 x i8], align 16
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %31 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %32 = alloca ptr, align 8
  %33 = alloca [256 x i8], align 16
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store i32 %3, ptr %10, align 4, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store i32 %5, ptr %12, align 4, !tbaa !9
  %34 = load ptr, ptr %7, align 8
  %35 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %36 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN8InstanceC2ERKS_(ptr noundef nonnull align 8 dereferenceable(200) %35, ptr noundef nonnull align 8 dereferenceable(200) %36)
  %37 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 1
  %38 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 8 dereferenceable(48) %38)
          to label %39 unwind label %61

39:                                               ; preds = %6
  %40 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 2
  %41 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %41, ptr %40, align 8, !tbaa !11
  %42 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 3
  %43 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %43)
          to label %44 unwind label %65

44:                                               ; preds = %39
  %45 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 4
  %46 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %46, ptr %45, align 8, !tbaa !44
  %47 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #7
  %48 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 7
  call void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #7
  %49 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %50 = getelementptr inbounds %class.Instance, ptr %49, i32 0, i32 3
  %51 = load i32, ptr %50, align 4, !tbaa !45
  %52 = sext i32 %51 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %52, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %53 unwind label %69

53:                                               ; preds = %44
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %54

54:                                               ; preds = %83, %53
  %55 = load i32, ptr %17, align 4, !tbaa !9
  %56 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %57 = getelementptr inbounds %class.Instance, ptr %56, i32 0, i32 3
  %58 = load i32, ptr %57, align 4, !tbaa !45
  %59 = icmp slt i32 %55, %58
  br i1 %59, label %73, label %60

60:                                               ; preds = %54
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %86

61:                                               ; preds = %6
  %62 = landingpad { ptr, i32 }
          cleanup
  %63 = extractvalue { ptr, i32 } %62, 0
  store ptr %63, ptr %13, align 8
  %64 = extractvalue { ptr, i32 } %62, 1
  store i32 %64, ptr %14, align 4
  br label %273

65:                                               ; preds = %39
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %13, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %14, align 4
  br label %272

69:                                               ; preds = %44
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %13, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %271

73:                                               ; preds = %54
  %74 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %75 = getelementptr inbounds %class.Instance, ptr %74, i32 0, i32 15
  %76 = load i32, ptr %17, align 4, !tbaa !9
  %77 = sext i32 %76 to i64
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %77) #7
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = load i32, ptr %17, align 4, !tbaa !9
  %81 = sext i32 %80 to i64
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %81) #7
  store i32 %79, ptr %82, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %73
  %84 = load i32, ptr %17, align 4, !tbaa !9
  %85 = add nsw i32 %84, 1
  store i32 %85, ptr %17, align 4, !tbaa !9
  br label %54, !llvm.loop !46

86:                                               ; preds = %60
  %87 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 5
  store i32 0, ptr %87, align 4, !tbaa !48
  %88 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 7
  %89 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %90 = getelementptr inbounds %class.Instance, ptr %89, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !49
  %92 = sext i32 %91 to i64
  invoke void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %92)
          to label %93 unwind label %107

93:                                               ; preds = %86
  %94 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 6
  %95 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %96 = getelementptr inbounds %class.Instance, ptr %95, i32 0, i32 1
  %97 = load i32, ptr %96, align 4, !tbaa !49
  %98 = sext i32 %97 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %98)
          to label %99 unwind label %107

99:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %194, %99
  %101 = load i32, ptr %18, align 4, !tbaa !9
  %102 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %103 = getelementptr inbounds %class.Instance, ptr %102, i32 0, i32 1
  %104 = load i32, ptr %103, align 4, !tbaa !49
  %105 = icmp slt i32 %101, %104
  br i1 %105, label %111, label %106

106:                                              ; preds = %100
  store i32 5, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %198

107:                                              ; preds = %93, %86
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %13, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %14, align 4
  br label %270

111:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  %112 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 3
  %113 = load i32, ptr %18, align 4, !tbaa !9
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %112, i64 noundef %114) #7
  %116 = load i32, ptr %115, align 4, !tbaa !9
  invoke void @_ZN10ArcflowSol16extract_solutionEPSt6vectorIiSaIiEEi(ptr dead_on_unwind writable sret(%"class.std::vector.23") align 8 %20, ptr noundef nonnull align 8 dereferenceable(336) %34, ptr noundef %15, i32 noundef %116)
          to label %117 unwind label %136

117:                                              ; preds = %111
  %118 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 7
  %119 = load i32, ptr %18, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %120) #7
  %122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(24) %121, ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  %123 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 7
  %124 = load i32, ptr %18, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %125) #7
  %127 = load i32, ptr %18, align 4, !tbaa !9
  %128 = invoke noundef zeroext i1 @_ZNK10ArcflowSol8is_validERKSt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EEi(ptr noundef nonnull align 8 dereferenceable(336) %34, ptr noundef nonnull align 8 dereferenceable(24) %126, i32 noundef %127)
          to label %129 unwind label %140

129:                                              ; preds = %117
  br i1 %128, label %153, label %130

130:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 256, ptr %21) #7
  %131 = getelementptr inbounds [256 x i8], ptr %21, i64 0, i64 0
  %132 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %131, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 29) #7
  %133 = call ptr @__cxa_allocate_exception(i64 16) #7
  %134 = getelementptr inbounds [256 x i8], ptr %21, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %133, ptr noundef %134)
          to label %135 unwind label %144

135:                                              ; preds = %130
  invoke void @__cxa_throw(ptr %133, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %279 unwind label %148

136:                                              ; preds = %111
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %13, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  br label %197

140:                                              ; preds = %117
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %13, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %14, align 4
  br label %197

144:                                              ; preds = %130
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %13, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %14, align 4
  call void @__cxa_free_exception(ptr %133) #7
  br label %152

148:                                              ; preds = %135
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %13, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %14, align 4
  br label %152

152:                                              ; preds = %148, %144
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #7
  br label %197

153:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %154 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 7
  %155 = load i32, ptr %18, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef %156) #7
  store ptr %157, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = call ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %158) #7
  %160 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %159, ptr %160, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  %162 = call ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #7
  %163 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %162, ptr %163, align 8
  br label %164

164:                                              ; preds = %191, %153
  %165 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %165, label %167, label %166

166:                                              ; preds = %164
  store i32 8, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %193

167:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %168 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  store ptr %168, ptr %25, align 8, !tbaa !5
  %169 = load ptr, ptr %25, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.std::pair", ptr %169, i32 0, i32 0
  %171 = load i32, ptr %170, align 8, !tbaa !50
  %172 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %173 = getelementptr inbounds %class.Instance, ptr %172, i32 0, i32 6
  %174 = load i32, ptr %18, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %175) #7
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = mul nsw i32 %171, %177
  %179 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 5
  %180 = load i32, ptr %179, align 4, !tbaa !48
  %181 = add nsw i32 %180, %178
  store i32 %181, ptr %179, align 4, !tbaa !48
  %182 = load ptr, ptr %25, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.std::pair", ptr %182, i32 0, i32 0
  %184 = load i32, ptr %183, align 8, !tbaa !50
  %185 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 6
  %186 = load i32, ptr %18, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %187) #7
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = add nsw i32 %189, %184
  store i32 %190, ptr %188, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %191

191:                                              ; preds = %167
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %164

193:                                              ; preds = %166
  br label %194

194:                                              ; preds = %193
  %195 = load i32, ptr %18, align 4, !tbaa !9
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr %18, align 4, !tbaa !9
  br label %100, !llvm.loop !56

197:                                              ; preds = %152, %140, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %270

198:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %228, %198
  %200 = load i32, ptr %26, align 4, !tbaa !9
  %201 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 0
  %202 = getelementptr inbounds %class.Instance, ptr %201, i32 0, i32 3
  %203 = load i32, ptr %202, align 4, !tbaa !45
  %204 = icmp slt i32 %200, %203
  br i1 %204, label %206, label %205

205:                                              ; preds = %199
  store i32 10, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %231

206:                                              ; preds = %199
  %207 = load i32, ptr %26, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %208) #7
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = icmp sgt i32 %210, 0
  br i1 %211, label %212, label %227

212:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 256, ptr %27) #7
  %213 = getelementptr inbounds [256 x i8], ptr %27, i64 0, i64 0
  %214 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %213, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 40) #7
  %215 = call ptr @__cxa_allocate_exception(i64 16) #7
  %216 = getelementptr inbounds [256 x i8], ptr %27, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef %216)
          to label %217 unwind label %218

217:                                              ; preds = %212
  invoke void @__cxa_throw(ptr %215, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %279 unwind label %222

218:                                              ; preds = %212
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %13, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %14, align 4
  call void @__cxa_free_exception(ptr %215) #7
  br label %226

222:                                              ; preds = %217
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %13, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %14, align 4
  br label %226

226:                                              ; preds = %222, %218
  call void @llvm.lifetime.end.p0(i64 256, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %270

227:                                              ; preds = %206
  br label %228

228:                                              ; preds = %227
  %229 = load i32, ptr %26, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %26, align 4, !tbaa !9
  br label %199, !llvm.loop !57

231:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %232 = getelementptr inbounds %class.ArcflowSol, ptr %34, i32 0, i32 1
  store ptr %232, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %233 = load ptr, ptr %29, align 8, !tbaa !5
  %234 = call ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %233) #7
  %235 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %30, i32 0, i32 0
  store ptr %234, ptr %235, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %236 = load ptr, ptr %29, align 8, !tbaa !5
  %237 = call ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %236) #7
  %238 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %31, i32 0, i32 0
  store ptr %237, ptr %238, align 8
  br label %239

239:                                              ; preds = %249, %231
  %240 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK3ArciEES6_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br i1 %240, label %242, label %241

241:                                              ; preds = %239
  store i32 13, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %251

242:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %243 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK3ArciEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  store ptr %243, ptr %32, align 8, !tbaa !5
  %244 = load ptr, ptr %32, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.std::pair.33", ptr %244, i32 0, i32 1
  %246 = load i32, ptr %245, align 4, !tbaa !58
  %247 = load i32, ptr %28, align 4, !tbaa !9
  %248 = add nsw i32 %247, %246
  store i32 %248, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %249

249:                                              ; preds = %242
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK3ArciEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %239

251:                                              ; preds = %241
  %252 = load i32, ptr %28, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %269

254:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 256, ptr %33) #7
  %255 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 0
  %256 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %255, i64 noundef 256, ptr noundef @.str, ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 49) #7
  %257 = call ptr @__cxa_allocate_exception(i64 16) #7
  %258 = getelementptr inbounds [256 x i8], ptr %33, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %257, ptr noundef %258)
          to label %259 unwind label %260

259:                                              ; preds = %254
  invoke void @__cxa_throw(ptr %257, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %279 unwind label %264

260:                                              ; preds = %254
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %13, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %14, align 4
  call void @__cxa_free_exception(ptr %257) #7
  br label %268

264:                                              ; preds = %259
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %13, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %14, align 4
  br label %268

268:                                              ; preds = %264, %260
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %270

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

270:                                              ; preds = %268, %226, %197, %107
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  br label %271

271:                                              ; preds = %270, %69
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #7
  call void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #7
  br label %272

272:                                              ; preds = %271, %65
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #7
  br label %273

273:                                              ; preds = %272, %61
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %35) #7
  br label %274

274:                                              ; preds = %273
  %275 = load ptr, ptr %13, align 8
  %276 = load i32, ptr %14, align 4
  %277 = insertvalue { ptr, i32 } poison, ptr %275, 0
  %278 = insertvalue { ptr, i32 } %277, i32 %276, 1
  resume { ptr, i32 } %278

279:                                              ; preds = %259, %217, %135
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8InstanceC2ERKS_(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(200)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ArcflowSol8is_validERKSt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EEi(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #0 align 2

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(200)) unnamed_addr #6 align 2

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { "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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 248}
!12 = !{!"_ZTS10ArcflowSol", !13, i64 0, !31, i64 200, !10, i64 248, !18, i64 256, !10, i64 280, !10, i64 284, !18, i64 288, !40, i64 312}
!13 = !{!"_ZTS8Instance", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !14, i64 24, !18, i64 48, !18, i64 72, !22, i64 96, !10, i64 120, !26, i64 124, !26, i64 125, !7, i64 126, !27, i64 128, !18, i64 152, !18, i64 176}
!14 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorI4ItemSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseI4ItemSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"bool", !7, i64 0}
!27 = !{!"_ZTSSt6vectorIcSaIcEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE", !32, i64 0}
!32 = !{!"_ZTSSt8_Rb_treeI3ArcSt4pairIKS0_iESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE", !33, i64 0}
!33 = !{!"_ZTSNSt8_Rb_treeI3ArcSt4pairIKS0_iESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !34, i64 0, !36, i64 8}
!34 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI3ArcEE", !35, i64 0}
!35 = !{!"_ZTSSt4lessI3ArcE"}
!36 = !{!"_ZTSSt15_Rb_tree_header", !37, i64 0, !39, i64 32}
!37 = !{!"_ZTSSt18_Rb_tree_node_base", !38, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!38 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!39 = !{!"long", !7, i64 0}
!40 = !{!"_ZTSSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!12, !10, i64 280}
!45 = !{!12, !10, i64 12}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!12, !10, i64 284}
!49 = !{!12, !10, i64 4}
!50 = !{!51, !10, i64 0}
!51 = !{!"_ZTSSt4pairIiSt6vectorIS_IiiESaIS1_EEE", !10, i64 0, !52, i64 8}
!52 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = distinct !{!56, !47}
!57 = distinct !{!57, !47}
!58 = !{!59, !10, i64 12}
!59 = !{!"_ZTSSt4pairIK3ArciE", !60, i64 0, !10, i64 12}
!60 = !{!"_ZTS3Arc", !10, i64 0, !10, i64 4, !10, i64 8}


; 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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.2" = type { i8 }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, std::vector<std::pair<int, int>>>, std::allocator<std::pair<int, std::vector<std::pair<int, int>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [72 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10ArcflowSolC2ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull align 8 dereferenceable(200) %1, ptr noundef nonnull align 8 dereferenceable(48) %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::vector.0", align 8
  %8 = alloca %"class.std::allocator.2", align 1
  %9 = alloca %"class.std::vector.23", align 8
  %10 = alloca [256 x i8], align 16
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca [256 x i8], align 16
  %14 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %15 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %16 = alloca [256 x i8], align 16
  tail call void @_ZN8InstanceC2ERKS_(ptr noundef nonnull align 8 dereferenceable(200) %0, ptr noundef nonnull align 8 dereferenceable(200) %1)
  %17 = getelementptr inbounds i8, ptr %0, i64 200
  invoke void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(48) %17, ptr noundef nonnull align 8 dereferenceable(48) %2)
          to label %18 unwind label %36

18:                                               ; preds = %6
  %19 = getelementptr inbounds i8, ptr %0, i64 248
  store i32 %3, ptr %19, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %0, i64 256
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %21 unwind label %38

21:                                               ; preds = %18
  %22 = getelementptr inbounds i8, ptr %0, i64 280
  store i32 %5, ptr %22, align 8, !tbaa !42
  %23 = getelementptr inbounds i8, ptr %0, i64 288
  tail call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  %24 = getelementptr inbounds i8, ptr %0, i64 312
  tail call void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  %25 = getelementptr inbounds i8, ptr %0, i64 12
  %26 = load i32, ptr %25, align 4, !tbaa !43
  %27 = sext i32 %26 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %27, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %28 unwind label %40

28:                                               ; preds = %21
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  %29 = load i32, ptr %25, align 4, !tbaa !43
  %30 = icmp sgt i32 %29, 0
  br i1 %30, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %28
  %31 = getelementptr inbounds i8, ptr %0, i64 176
  br label %42

._crit_edge:                                      ; preds = %42, %28
  %32 = getelementptr inbounds i8, ptr %0, i64 284
  store i32 0, ptr %32, align 4, !tbaa !44
  %33 = getelementptr inbounds i8, ptr %0, i64 4
  %34 = load i32, ptr %33, align 4, !tbaa !45
  %35 = sext i32 %34 to i64
  invoke void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %35)
          to label %49 unwind label %57

36:                                               ; preds = %6
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %142

38:                                               ; preds = %18
  %39 = landingpad { ptr, i32 }
          cleanup
  br label %141

40:                                               ; preds = %21
  %41 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  br label %140

42:                                               ; preds = %.lr.ph, %42
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %42 ]
  %43 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %indvars.iv) #8
  %44 = load i32, ptr %43, align 4, !tbaa !46
  %45 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv) #8
  store i32 %44, ptr %45, align 4, !tbaa !46
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %46 = load i32, ptr %25, align 4, !tbaa !43
  %47 = sext i32 %46 to i64
  %48 = icmp slt i64 %indvars.iv.next, %47
  br i1 %48, label %42, label %._crit_edge, !llvm.loop !47

49:                                               ; preds = %._crit_edge
  %50 = load i32, ptr %33, align 4, !tbaa !45
  %51 = sext i32 %50 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %51)
          to label %.preheader54 unwind label %57

.preheader54:                                     ; preds = %49
  %52 = load i32, ptr %33, align 4, !tbaa !45
  %53 = icmp sgt i32 %52, 0
  br i1 %53, label %.lr.ph60, label %.preheader

.lr.ph60:                                         ; preds = %.preheader54
  %54 = getelementptr inbounds i8, ptr %0, i64 48
  br label %59

.preheader:                                       ; preds = %._crit_edge58, %.preheader54
  %55 = load i32, ptr %25, align 4, !tbaa !43
  %56 = icmp sgt i32 %55, 0
  br i1 %56, label %.lr.ph62, label %._crit_edge63

57:                                               ; preds = %49, %._crit_edge
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %139

59:                                               ; preds = %.lr.ph60, %._crit_edge58
  %indvars.iv69 = phi i64 [ 0, %.lr.ph60 ], [ %indvars.iv.next70, %._crit_edge58 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv69) #8
  %61 = load i32, ptr %60, align 4, !tbaa !46
  invoke void @_ZN10ArcflowSol16extract_solutionEPSt6vectorIiSaIiEEi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.23") align 8 %9, ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull %7, i32 noundef %61)
          to label %62 unwind label %73

62:                                               ; preds = %59
  %63 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv69) #8
  %64 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EEaSEOS6_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  %65 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv69) #8
  %66 = trunc nuw nsw i64 %indvars.iv69 to i32
  %67 = invoke noundef zeroext i1 @_ZNK10ArcflowSol8is_validERKSt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EEi(ptr noundef nonnull align 8 dereferenceable(336) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef %66)
          to label %68 unwind label %75

68:                                               ; preds = %62
  br i1 %67, label %82, label %69

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %10) #8
  %70 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 29) #8
  %71 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef nonnull %10)
          to label %72 unwind label %77

72:                                               ; preds = %69
  invoke void @__cxa_throw(ptr nonnull %71, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %143 unwind label %79

73:                                               ; preds = %59
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  br label %139

75:                                               ; preds = %62
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %139

77:                                               ; preds = %69
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %71) #8
  br label %81

79:                                               ; preds = %72
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %81

81:                                               ; preds = %79, %77
  %.pn47 = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %10) #8
  br label %139

82:                                               ; preds = %68
  %83 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %indvars.iv69) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %84 = call ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %83) #8
  store ptr %84, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %85 = call ptr @_ZNSt6vectorISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %83) #8
  store ptr %85, ptr %12, align 8
  %86 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %86, label %.lr.ph57, label %._crit_edge58

._crit_edge58:                                    ; preds = %.lr.ph57, %82
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1
  %87 = load i32, ptr %33, align 4, !tbaa !45
  %88 = sext i32 %87 to i64
  %89 = icmp slt i64 %indvars.iv.next70, %88
  br i1 %89, label %59, label %.preheader, !llvm.loop !49

.lr.ph57:                                         ; preds = %82, %.lr.ph57
  %90 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %91 = load i32, ptr %90, align 8, !tbaa !50
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %indvars.iv69) #8
  %93 = load i32, ptr %92, align 4, !tbaa !46
  %94 = mul nsw i32 %93, %91
  %95 = load i32, ptr %32, align 4, !tbaa !44
  %96 = add nsw i32 %95, %94
  store i32 %96, ptr %32, align 4, !tbaa !44
  %97 = load i32, ptr %90, align 8, !tbaa !50
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv69) #8
  %99 = load i32, ptr %98, align 4, !tbaa !46
  %100 = add nsw i32 %99, %97
  store i32 %100, ptr %98, align 4, !tbaa !46
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  %102 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIiSt6vectorIS1_IiiESaIS3_EEES2_IS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br i1 %102, label %.lr.ph57, label %._crit_edge58

103:                                              ; preds = %.lr.ph62
  %indvars.iv.next73 = add nuw nsw i64 %indvars.iv72, 1
  %104 = load i32, ptr %25, align 4, !tbaa !43
  %105 = sext i32 %104 to i64
  %106 = icmp slt i64 %indvars.iv.next73, %105
  br i1 %106, label %.lr.ph62, label %._crit_edge63, !llvm.loop !56

._crit_edge63:                                    ; preds = %103, %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %107 = call ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %17) #8
  store ptr %107, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %108 = call ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %17) #8
  store ptr %108, ptr %15, align 8
  %109 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK3ArciEES6_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %109, label %.lr.ph66, label %._crit_edge67.thread

._crit_edge67.thread:                             ; preds = %._crit_edge63
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %138

.lr.ph62:                                         ; preds = %.preheader, %103
  %indvars.iv72 = phi i64 [ %indvars.iv.next73, %103 ], [ 0, %.preheader ]
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv72) #8
  %111 = load i32, ptr %110, align 4, !tbaa !46
  %112 = icmp sgt i32 %111, 0
  br i1 %112, label %113, label %103

113:                                              ; preds = %.lr.ph62
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #8
  %114 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %13, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.2, i32 noundef 40) #8
  %115 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull %13)
          to label %116 unwind label %117

116:                                              ; preds = %113
  invoke void @__cxa_throw(ptr nonnull %115, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %143 unwind label %119

117:                                              ; preds = %113
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %115) #8
  br label %121

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

121:                                              ; preds = %119, %117
  %.pn45 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #8
  br label %139

._crit_edge67:                                    ; preds = %.lr.ph66
  %122 = icmp eq i32 %126, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br i1 %122, label %138, label %129

.lr.ph66:                                         ; preds = %._crit_edge63, %.lr.ph66
  %.04064 = phi i32 [ %126, %.lr.ph66 ], [ 0, %._crit_edge63 ]
  %123 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK3ArciEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %124 = getelementptr inbounds i8, ptr %123, i64 12
  %125 = load i32, ptr %124, align 4, !tbaa !57
  %126 = add nsw i32 %125, %.04064
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK3ArciEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %128 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK3ArciEES6_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %128, label %.lr.ph66, label %._crit_edge67

129:                                              ; preds = %._crit_edge67
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %16) #8
  %130 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %16, i64 noundef 256, ptr noundef nonnull @.str, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 49) #8
  %131 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull %16)
          to label %132 unwind label %133

132:                                              ; preds = %129
  invoke void @__cxa_throw(ptr nonnull %131, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %143 unwind label %135

133:                                              ; preds = %129
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %131) #8
  br label %137

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

137:                                              ; preds = %135, %133
  %.pn = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #8
  br label %139

138:                                              ; preds = %._crit_edge67.thread, %._crit_edge67
  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

139:                                              ; preds = %73, %75, %81, %137, %121, %57
  %.pn47.pn.pn = phi { ptr, i32 } [ %.pn45, %121 ], [ %.pn, %137 ], [ %58, %57 ], [ %.pn47, %81 ], [ %76, %75 ], [ %74, %73 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  br label %140

140:                                              ; preds = %139, %40
  %.pn47.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn, %139 ], [ %41, %40 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  call void @_ZNSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  br label %141

141:                                              ; preds = %140, %38
  %.pn47.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn.pn, %140 ], [ %39, %38 ]
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #8
  br label %142

142:                                              ; preds = %141, %36
  %.pn47.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn47.pn.pn.pn.pn, %141 ], [ %37, %36 ]
  call void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %0) #8
  resume { ptr, i32 } %.pn47.pn.pn.pn.pn.pn

143:                                              ; preds = %132, %116, %72
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8InstanceC2ERKS_(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(200)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK10ArcflowSol8is_validERKSt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EEi(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #0 align 2

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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 #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8InstanceD2Ev(ptr noundef nonnull align 8 dereferenceable(200)) unnamed_addr #7 align 2

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "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, !8, i64 248}
!6 = !{!"_ZTS10ArcflowSol", !7, i64 0, !29, i64 200, !8, i64 248, !16, i64 256, !8, i64 280, !8, i64 284, !16, i64 288, !38, i64 312}
!7 = !{!"_ZTS8Instance", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !11, i64 24, !16, i64 48, !16, i64 72, !20, i64 96, !8, i64 120, !24, i64 124, !24, i64 125, !9, i64 126, !25, i64 128, !16, i64 152, !16, i64 176}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !9, i64 0}
!16 = !{!"_ZTSSt6vectorIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!20 = !{!"_ZTSSt6vectorI4ItemSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI4ItemSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!24 = !{!"bool", !9, i64 0}
!25 = !{!"_ZTSSt6vectorIcSaIcEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!29 = !{!"_ZTSSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeI3ArcSt4pairIKS0_iESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeI3ArcSt4pairIKS0_iESt10_Select1stIS3_ESt4lessIS0_ESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !32, i64 0, !34, i64 8}
!32 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI3ArcEE", !33, i64 0}
!33 = !{!"_ZTSSt4lessI3ArcE"}
!34 = !{!"_ZTSSt15_Rb_tree_header", !35, i64 0, !37, i64 32}
!35 = !{!"_ZTSSt18_Rb_tree_node_base", !36, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!36 = !{!"_ZTSSt14_Rb_tree_color", !9, i64 0}
!37 = !{!"long", !9, i64 0}
!38 = !{!"_ZTSSt6vectorIS_ISt4pairIiS_IS0_IiiESaIS1_EEESaIS4_EESaIS6_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt6vectorISt4pairIiS0_IS1_IiiESaIS2_EEESaIS5_EESaIS7_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!42 = !{!6, !8, i64 280}
!43 = !{!6, !8, i64 12}
!44 = !{!6, !8, i64 284}
!45 = !{!6, !8, i64 4}
!46 = !{!8, !8, i64 0}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = distinct !{!49, !48}
!50 = !{!51, !8, i64 0}
!51 = !{!"_ZTSSt4pairIiSt6vectorIS_IiiESaIS1_EEE", !8, i64 0, !52, i64 8}
!52 = !{!"_ZTSSt6vectorISt4pairIiiESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseISt4pairIiiESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseISt4pairIiiESaIS1_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!56 = distinct !{!56, !48}
!57 = !{!58, !8, i64 12}
!58 = !{!"_ZTSSt4pairIK3ArciE", !59, i64 0, !8, i64 12}
!59 = !{!"_ZTS3Arc", !8, i64 0, !8, i64 4, !8, i64 8}


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