; LLVM IR from fdabrandao/vpsolver :: src/vbpsol.ll (Z9swig_mainiPPc)

; 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.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.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" = 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.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::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.std::map.28" = type { %"class.std::_Rb_tree.29" }
%"class.std::_Rb_tree.29" = 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" }
%class.ArcflowSol = type { %class.Instance, %"class.std::map.28", i32, %"class.std::vector.8", i32, i32, %"class.std::vector.8", %"class.std::vector.33" }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = 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 }

@.str = external hidden unnamed_addr constant [57 x i8], align 1
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [63 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z9swig_mainiPPc(i32 noundef %0, ptr noundef %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca [256 x i8], align 16
  %10 = alloca %class.Arcflow, align 8
  %11 = alloca ptr, align 8
  %12 = alloca [256 x i8], align 16
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca [256 x i8], align 16
  %18 = alloca %"class.std::map.28", align 8
  %19 = alloca [256 x i8], align 16
  %20 = alloca i32, align 4
  %21 = alloca [256 x i8], align 16
  %22 = alloca %class.ArcflowSol, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  %25 = call i32 (ptr, ...) @printf(ptr noundef @.str)
  %26 = load ptr, ptr @stdout, align 8, !tbaa !9
  %27 = call i32 @setvbuf(ptr noundef %26, ptr noundef null, i32 noundef 2, i64 noundef 0) #11
  %28 = load i32, ptr %4, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 3
  br i1 %29, label %33, label %30

30:                                               ; preds = %2
  %31 = load i32, ptr %4, align 4, !tbaa !5
  %32 = icmp sgt i32 %31, 5
  br i1 %32, label %33, label %35

33:                                               ; preds = %30, %2
  %34 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  store i32 1, ptr %3, align 4
  br label %283

35:                                               ; preds = %30
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #11
  store ptr null, ptr %6, align 8, !tbaa !9
  %36 = load ptr, ptr %5, align 8, !tbaa !9
  %37 = getelementptr inbounds ptr, ptr %36, i64 1
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  %39 = invoke noundef zeroext i1 @_Z9check_extPKcS0_(ptr noundef %38, ptr noundef @.str.2)
          to label %40 unwind label %47

40:                                               ; preds = %35
  br i1 %39, label %60, label %41

41:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 256, ptr %9) #11
  %42 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 0
  %43 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %42, i64 noundef 256, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 25) #11
  %44 = call ptr @__cxa_allocate_exception(i64 16) #11
  %45 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef %45)
          to label %46 unwind label %51

46:                                               ; preds = %41
  invoke void @__cxa_throw(ptr %44, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %293 unwind label %55

47:                                               ; preds = %35
  %48 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %49 = extractvalue { ptr, i32 } %48, 0
  store ptr %49, ptr %7, align 8
  %50 = extractvalue { ptr, i32 } %48, 1
  store i32 %50, ptr %8, align 4
  br label %237

51:                                               ; preds = %41
  %52 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %53 = extractvalue { ptr, i32 } %52, 0
  store ptr %53, ptr %7, align 8
  %54 = extractvalue { ptr, i32 } %52, 1
  store i32 %54, ptr %8, align 4
  call void @__cxa_free_exception(ptr %44) #11
  br label %59

55:                                               ; preds = %46
  %56 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %57 = extractvalue { ptr, i32 } %56, 0
  store ptr %57, ptr %7, align 8
  %58 = extractvalue { ptr, i32 } %56, 1
  store i32 %58, ptr %8, align 4
  br label %59

59:                                               ; preds = %55, %51
  call void @llvm.lifetime.end.p0(i64 256, ptr %9) #11
  br label %237

60:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 608, ptr %10) #11
  %61 = load ptr, ptr %5, align 8, !tbaa !9
  %62 = getelementptr inbounds ptr, ptr %61, i64 1
  %63 = load ptr, ptr %62, align 8, !tbaa !9
  invoke void @_ZN7ArcflowC1EPKc(ptr noundef nonnull align 8 dereferenceable(604) %10, ptr noundef %63)
          to label %64 unwind label %75

64:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %65 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 14
  store ptr %65, ptr %11, align 8, !tbaa !9
  %66 = load ptr, ptr %5, align 8, !tbaa !9
  %67 = getelementptr inbounds ptr, ptr %66, i64 2
  %68 = load ptr, ptr %67, align 8, !tbaa !9
  %69 = invoke noalias ptr @fopen(ptr noundef %68, ptr noundef @.str.6)
          to label %70 unwind label %79

70:                                               ; preds = %64
  store ptr %69, ptr %6, align 8, !tbaa !9
  %71 = load ptr, ptr %6, align 8, !tbaa !9
  %72 = icmp eq ptr %71, null
  br i1 %72, label %73, label %83

73:                                               ; preds = %70
  invoke void @perror(ptr noundef @.str.7)
          to label %74 unwind label %79

74:                                               ; preds = %73
  br label %83

75:                                               ; preds = %60
  %76 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %7, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %8, align 4
  br label %236

79:                                               ; preds = %73, %64
  %80 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %7, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %8, align 4
  br label %235

83:                                               ; preds = %74, %70
  %84 = load ptr, ptr %6, align 8, !tbaa !9
  %85 = icmp ne ptr %84, null
  br i1 %85, label %101, label %86

86:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 256, ptr %12) #11
  %87 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 0
  %88 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %87, i64 noundef 256, ptr noundef @.str.3, ptr noundef @.str.8, ptr noundef @.str.5, i32 noundef 33) #11
  %89 = call ptr @__cxa_allocate_exception(i64 16) #11
  %90 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef %90)
          to label %91 unwind label %92

91:                                               ; preds = %86
  invoke void @__cxa_throw(ptr %89, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %293 unwind label %96

92:                                               ; preds = %86
  %93 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %7, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %8, align 4
  call void @__cxa_free_exception(ptr %89) #11
  br label %100

96:                                               ; preds = %91
  %97 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %7, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %8, align 4
  br label %100

100:                                              ; preds = %96, %92
  call void @llvm.lifetime.end.p0(i64 256, ptr %12) #11
  br label %235

101:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #11
  store i8 0, ptr %13, align 1, !tbaa !11
  %102 = load i32, ptr %4, align 4, !tbaa !5
  %103 = icmp sge i32 %102, 4
  br i1 %103, label %104, label %111

104:                                              ; preds = %101
  %105 = load ptr, ptr %5, align 8, !tbaa !9
  %106 = getelementptr inbounds ptr, ptr %105, i64 3
  %107 = load ptr, ptr %106, align 8, !tbaa !9
  %108 = call i32 @atoi(ptr noundef %107) #13
  %109 = icmp ne i32 %108, 0
  %110 = zext i1 %109 to i8
  store i8 %110, ptr %13, align 1, !tbaa !11
  br label %111

111:                                              ; preds = %104, %101
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #11
  store i8 0, ptr %14, align 1, !tbaa !11
  %112 = load i32, ptr %4, align 4, !tbaa !5
  %113 = icmp sge i32 %112, 5
  br i1 %113, label %114, label %121

114:                                              ; preds = %111
  %115 = load ptr, ptr %5, align 8, !tbaa !9
  %116 = getelementptr inbounds ptr, ptr %115, i64 4
  %117 = load ptr, ptr %116, align 8, !tbaa !9
  %118 = call i32 @atoi(ptr noundef %117) #13
  %119 = icmp ne i32 %118, 0
  %120 = zext i1 %119 to i8
  store i8 %120, ptr %14, align 1, !tbaa !11
  br label %121

121:                                              ; preds = %114, %111
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %17) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #11
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #11
  br label %122

122:                                              ; preds = %207, %132, %121
  %123 = load ptr, ptr %6, align 8, !tbaa !9
  %124 = getelementptr inbounds [256 x i8], ptr %17, i64 0, i64 0
  %125 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %123, ptr noundef @.str.9, ptr noundef %124, ptr noundef %16)
          to label %126 unwind label %133

126:                                              ; preds = %122
  %127 = icmp ne i32 %125, -1
  br i1 %127, label %128, label %209

128:                                              ; preds = %126
  %129 = getelementptr inbounds [256 x i8], ptr %17, i64 0, i64 0
  %130 = call i64 @strlen(ptr noundef %129) #13
  %131 = icmp ule i64 %130, 1
  br i1 %131, label %132, label %137

132:                                              ; preds = %128
  br label %122, !llvm.loop !13

133:                                              ; preds = %209, %122
  %134 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %7, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %8, align 4
  br label %234

137:                                              ; preds = %128
  %138 = getelementptr inbounds [256 x i8], ptr %17, i64 0, i64 0
  %139 = load i8, ptr %138, align 16, !tbaa !15
  %140 = sext i8 %139 to i32
  %141 = icmp eq i32 %140, 88
  br i1 %141, label %142, label %145

142:                                              ; preds = %137
  %143 = getelementptr inbounds [256 x i8], ptr %17, i64 0, i64 1
  %144 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %143, ptr noundef @.str.10, ptr noundef %15) #11
  br label %148

145:                                              ; preds = %137
  %146 = getelementptr inbounds [256 x i8], ptr %17, i64 0, i64 0
  %147 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %146, ptr noundef @.str.11, ptr noundef %15) #11
  br label %148

148:                                              ; preds = %145, %142
  %149 = load i32, ptr %15, align 4, !tbaa !5
  %150 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 16
  %151 = load i32, ptr %150, align 4, !tbaa !16
  %152 = icmp slt i32 %149, %151
  br i1 %152, label %168, label %153

153:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 256, ptr %19) #11
  %154 = getelementptr inbounds [256 x i8], ptr %19, i64 0, i64 0
  %155 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %154, i64 noundef 256, ptr noundef @.str.3, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 57) #11
  %156 = call ptr @__cxa_allocate_exception(i64 16) #11
  %157 = getelementptr inbounds [256 x i8], ptr %19, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %156, ptr noundef %157)
          to label %158 unwind label %159

158:                                              ; preds = %153
  invoke void @__cxa_throw(ptr %156, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %293 unwind label %163

159:                                              ; preds = %153
  %160 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %7, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %8, align 4
  call void @__cxa_free_exception(ptr %156) #11
  br label %167

163:                                              ; preds = %158
  %164 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %7, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %8, align 4
  br label %167

167:                                              ; preds = %163, %159
  call void @llvm.lifetime.end.p0(i64 256, ptr %19) #11
  br label %234

168:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %169 = load double, ptr %16, align 8, !tbaa !54
  %170 = call double @llvm.round.f64(double %169)
  %171 = fptosi double %170 to i32
  store i32 %171, ptr %20, align 4, !tbaa !5
  %172 = load double, ptr %16, align 8, !tbaa !54
  %173 = load i32, ptr %20, align 4, !tbaa !5
  %174 = sitofp i32 %173 to double
  %175 = fsub double %172, %174
  %176 = fcmp ole double %175, 1.000000e-05
  br i1 %176, label %192, label %177

177:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 256, ptr %21) #11
  %178 = getelementptr inbounds [256 x i8], ptr %21, i64 0, i64 0
  %179 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %178, i64 noundef 256, ptr noundef @.str.3, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 59) #11
  %180 = call ptr @__cxa_allocate_exception(i64 16) #11
  %181 = getelementptr inbounds [256 x i8], ptr %21, i64 0, i64 0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef %181)
          to label %182 unwind label %183

182:                                              ; preds = %177
  invoke void @__cxa_throw(ptr %180, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #12
          to label %293 unwind label %187

183:                                              ; preds = %177
  %184 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %7, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %8, align 4
  call void @__cxa_free_exception(ptr %180) #11
  br label %191

187:                                              ; preds = %182
  %188 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %7, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %8, align 4
  br label %191

191:                                              ; preds = %187, %183
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #11
  br label %208

192:                                              ; preds = %168
  %193 = load i32, ptr %20, align 4, !tbaa !5
  %194 = icmp sgt i32 %193, 0
  br i1 %194, label %195, label %207

195:                                              ; preds = %192
  %196 = load i32, ptr %20, align 4, !tbaa !5
  %197 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 20
  %198 = load i32, ptr %15, align 4, !tbaa !5
  %199 = sext i32 %198 to i64
  %200 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI3ArcSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %199) #11
  %201 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEixERS4_(ptr noundef nonnull align 8 dereferenceable(48) %18, ptr noundef nonnull align 4 dereferenceable(12) %200)
          to label %202 unwind label %203

202:                                              ; preds = %195
  store i32 %196, ptr %201, align 4, !tbaa !5
  br label %207

203:                                              ; preds = %195
  %204 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %7, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %8, align 4
  br label %208

207:                                              ; preds = %202, %192
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %122, !llvm.loop !13

208:                                              ; preds = %203, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %234

209:                                              ; preds = %126
  %210 = load ptr, ptr %6, align 8, !tbaa !9
  %211 = invoke i32 @fclose(ptr noundef %210)
          to label %212 unwind label %133

212:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 336, ptr %22) #11
  %213 = load ptr, ptr %11, align 8, !tbaa !9
  %214 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 17
  %215 = load i32, ptr %214, align 8, !tbaa !56
  %216 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 19
  %217 = getelementptr inbounds %class.Arcflow, ptr %10, i32 0, i32 21
  %218 = load i32, ptr %217, align 8, !tbaa !57
  invoke void @_ZN10ArcflowSolC1ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336) %22, ptr noundef nonnull align 8 dereferenceable(200) %213, ptr noundef nonnull align 8 dereferenceable(48) %18, i32 noundef %215, ptr noundef nonnull align 8 dereferenceable(24) %216, i32 noundef %218)
          to label %219 unwind label %225

219:                                              ; preds = %212
  %220 = load i8, ptr %13, align 1, !tbaa !11, !range !58, !noundef !59
  %221 = trunc i8 %220 to i1
  %222 = load i8, ptr %14, align 1, !tbaa !11, !range !58, !noundef !59
  %223 = trunc i8 %222 to i1
  invoke void @_ZN10ArcflowSol14print_solutionEbb(ptr noundef nonnull align 8 dereferenceable(336) %22, i1 noundef zeroext %221, i1 noundef zeroext %223)
          to label %224 unwind label %229

224:                                              ; preds = %219
  store i32 0, ptr %3, align 4
  store i32 1, ptr %23, align 4
  call void @_ZN10ArcflowSolD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %22) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr %22) #11
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @_ZN7ArcflowD2Ev(ptr noundef nonnull align 8 dereferenceable(604) %10) #11
  call void @llvm.lifetime.end.p0(i64 608, ptr %10) #11
  br label %281

225:                                              ; preds = %212
  %226 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %7, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %8, align 4
  br label %233

229:                                              ; preds = %219
  %230 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %7, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %8, align 4
  call void @_ZN10ArcflowSolD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %22) #11
  br label %233

233:                                              ; preds = %229, %225
  call void @llvm.lifetime.end.p0(i64 336, ptr %22) #11
  br label %234

234:                                              ; preds = %233, %208, %167, %133
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #11
  br label %235

235:                                              ; preds = %234, %100, %79
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @_ZN7ArcflowD2Ev(ptr noundef nonnull align 8 dereferenceable(604) %10) #11
  br label %236

236:                                              ; preds = %235, %75
  call void @llvm.lifetime.end.p0(i64 608, ptr %10) #11
  br label %237

237:                                              ; preds = %236, %59, %47
  %238 = load i32, ptr %8, align 4
  %239 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #11
  %240 = icmp eq i32 %238, %239
  br i1 %240, label %241, label %250

241:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %242 = load ptr, ptr %7, align 8
  %243 = call ptr @__cxa_begin_catch(ptr %242) #11
  store ptr %243, ptr %24, align 8
  %244 = load ptr, ptr %6, align 8, !tbaa !9
  %245 = icmp ne ptr %244, null
  br i1 %245, label %246, label %271

246:                                              ; preds = %241
  %247 = load ptr, ptr %6, align 8, !tbaa !9
  %248 = invoke i32 @fclose(ptr noundef %247)
          to label %249 unwind label %267

249:                                              ; preds = %246
  br label %271

250:                                              ; preds = %237
  %251 = load ptr, ptr %7, align 8
  %252 = call ptr @__cxa_begin_catch(ptr %251) #11
  %253 = load ptr, ptr %6, align 8, !tbaa !9
  %254 = icmp ne ptr %253, null
  br i1 %254, label %255, label %263

255:                                              ; preds = %250
  %256 = load ptr, ptr %6, align 8, !tbaa !9
  %257 = invoke i32 @fclose(ptr noundef %256)
          to label %258 unwind label %259

258:                                              ; preds = %255
  br label %263

259:                                              ; preds = %263, %255
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %7, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %8, align 4
  invoke void @__cxa_end_catch()
          to label %266 unwind label %290

263:                                              ; preds = %258, %250
  %264 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.14)
          to label %265 unwind label %259

265:                                              ; preds = %263
  store i32 1, ptr %3, align 4
  store i32 1, ptr %23, align 4
  call void @__cxa_end_catch()
  br label %281

266:                                              ; preds = %259
  br label %282

267:                                              ; preds = %271, %246
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %7, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %8, align 4
  invoke void @__cxa_end_catch()
          to label %279 unwind label %290

271:                                              ; preds = %249, %241
  %272 = load ptr, ptr %24, align 8, !tbaa !9
  %273 = load ptr, ptr %272, align 8, !tbaa !60
  %274 = getelementptr inbounds ptr, ptr %273, i64 2
  %275 = load ptr, ptr %274, align 8
  %276 = call noundef ptr %275(ptr noundef nonnull align 8 dereferenceable(16) %272) #11
  %277 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.15, ptr noundef %276)
          to label %278 unwind label %267

278:                                              ; preds = %271
  store i32 1, ptr %3, align 4
  store i32 1, ptr %23, align 4
  call void @__cxa_end_catch()
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %281

279:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %282

280:                                              ; No predecessors!
  unreachable

281:                                              ; preds = %278, %265, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #11
  br label %283

282:                                              ; preds = %279, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #11
  br label %285

283:                                              ; preds = %281, %33
  %284 = load i32, ptr %3, align 4
  ret i32 %284

285:                                              ; preds = %282
  %286 = load ptr, ptr %7, align 8
  %287 = load i32, ptr %8, align 4
  %288 = insertvalue { ptr, i32 } poison, ptr %286, 0
  %289 = insertvalue { ptr, i32 } %288, i32 %287, 1
  resume { ptr, i32 } %289

290:                                              ; preds = %267, %259
  %291 = landingpad { ptr, i32 }
          catch ptr null
  %292 = extractvalue { ptr, i32 } %291, 0
  call void @__clang_call_terminate(ptr %292) #14
  unreachable

293:                                              ; preds = %182, %158, %91, %46
  unreachable
}

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

; Function Attrs: nounwind
declare i32 @setvbuf(ptr noundef, ptr noundef, i32 noundef, i64 noundef) #2

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

declare noundef zeroext i1 @_Z9check_extPKcS0_(ptr noundef, ptr noundef) #1

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

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) #3

declare void @_ZN7ArcflowC1EPKc(ptr noundef nonnull align 8 dereferenceable(604), ptr noundef) unnamed_addr #1

declare noalias ptr @fopen(ptr noundef, ptr noundef) #1

declare void @perror(ptr noundef) #1

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #4

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

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #6

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEixERS4_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(12)) #0 align 2

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

declare i32 @fclose(ptr noundef) #1

declare void @_ZN10ArcflowSolC1ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #1

declare void @_ZN10ArcflowSol14print_solutionEbb(ptr noundef nonnull align 8 dereferenceable(336), i1 noundef zeroext, i1 noundef zeroext) #1

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

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

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #10

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

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

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


; 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.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.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" = 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.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::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.std::map.28" = type { %"class.std::_Rb_tree.29" }
%"class.std::_Rb_tree.29" = 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" }
%class.ArcflowSol = type { %class.Instance, %"class.std::map.28", i32, %"class.std::vector.8", i32, i32, %"class.std::vector.8", %"class.std::vector.33" }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = 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 }

@.str = external hidden unnamed_addr constant [57 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [63 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_Z9swig_mainiPPc(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca [256 x i8], align 16
  %4 = alloca %class.Arcflow, align 8
  %5 = alloca [256 x i8], align 16
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca [256 x i8], align 16
  %9 = alloca %"class.std::map.28", align 8
  %10 = alloca [256 x i8], align 16
  %11 = alloca [256 x i8], align 16
  %12 = alloca %class.ArcflowSol, align 8
  %13 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  %14 = load ptr, ptr @stdout, align 8, !tbaa !5
  %15 = tail call i32 @setvbuf(ptr noundef %14, ptr noundef null, i32 noundef 2, i64 noundef 0) #11
  %16 = add i32 %0, -6
  %or.cond = icmp ult i32 %16, -3
  br i1 %or.cond, label %17, label %19

17:                                               ; preds = %2
  %18 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  br label %155

19:                                               ; preds = %2
  %20 = getelementptr inbounds i8, ptr %1, i64 8
  %21 = load ptr, ptr %20, align 8, !tbaa !5
  %22 = invoke noundef zeroext i1 @_Z9check_extPKcS0_(ptr noundef %21, ptr noundef nonnull @.str.2)
          to label %23 unwind label %28

23:                                               ; preds = %19
  br i1 %22, label %35, label %24

24:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #11
  %25 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 256, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 25) #11
  %26 = tail call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull %3)
          to label %27 unwind label %30

27:                                               ; preds = %24
  invoke void @__cxa_throw(ptr nonnull %26, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
          to label %156 unwind label %32

28:                                               ; preds = %19
  %29 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %137

30:                                               ; preds = %24
  %31 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %26) #11
  br label %34

32:                                               ; preds = %27
  %33 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %34

34:                                               ; preds = %32, %30
  %.pn = phi { ptr, i32 } [ %33, %32 ], [ %31, %30 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #11
  br label %137

35:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 608, ptr nonnull %4) #11
  %36 = load ptr, ptr %20, align 8, !tbaa !5
  invoke void @_ZN7ArcflowC1EPKc(ptr noundef nonnull align 8 dereferenceable(604) %4, ptr noundef %36)
          to label %37 unwind label %45

37:                                               ; preds = %35
  %38 = getelementptr inbounds i8, ptr %4, i64 336
  %39 = getelementptr inbounds i8, ptr %1, i64 16
  %40 = load ptr, ptr %39, align 8, !tbaa !5
  %41 = call noalias ptr @fopen(ptr noundef %40, ptr noundef nonnull @.str.6)
  %cond = icmp eq ptr %41, null
  br i1 %cond, label %42, label %53

42:                                               ; preds = %37
  call void @perror(ptr noundef nonnull @.str.7) #13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #11
  %43 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 256, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.5, i32 noundef 33) #11
  %44 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull %5)
          to label %47 unwind label %48

45:                                               ; preds = %35
  %46 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %136

47:                                               ; preds = %42
  invoke void @__cxa_throw(ptr nonnull %44, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
          to label %156 unwind label %50

48:                                               ; preds = %42
  %49 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %44) #11
  br label %52

50:                                               ; preds = %47
  %51 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %52

52:                                               ; preds = %50, %48
  %.pn49 = phi { ptr, i32 } [ %51, %50 ], [ %49, %48 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #11
  br label %135

53:                                               ; preds = %37
  %54 = icmp ugt i32 %0, 3
  br i1 %54, label %55, label %.thread

55:                                               ; preds = %53
  %56 = getelementptr inbounds i8, ptr %1, i64 24
  %57 = load ptr, ptr %56, align 8, !tbaa !5
  %58 = call i32 @atoi(ptr nocapture noundef %57) #14
  %59 = icmp ne i32 %58, 0
  %.not = icmp eq i32 %0, 4
  br i1 %.not, label %.thread, label %60

60:                                               ; preds = %55
  %61 = getelementptr inbounds i8, ptr %1, i64 32
  %62 = load ptr, ptr %61, align 8, !tbaa !5
  %63 = call i32 @atoi(ptr nocapture noundef %62) #14
  %64 = icmp ne i32 %63, 0
  br label %.thread

.thread:                                          ; preds = %53, %60, %55
  %.03167 = phi i1 [ %59, %60 ], [ %59, %55 ], [ false, %53 ]
  %.030 = phi i1 [ %64, %60 ], [ false, %55 ], [ false, %53 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #11
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #11
  %65 = getelementptr inbounds i8, ptr %8, i64 1
  %66 = getelementptr inbounds i8, ptr %4, i64 540
  %67 = getelementptr inbounds i8, ptr %4, i64 576
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.thread
  %68 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %41, ptr noundef nonnull @.str.9, ptr noundef nonnull %8, ptr noundef nonnull %7)
          to label %69 unwind label %73

69:                                               ; preds = %.backedge
  %.not51 = icmp eq i32 %68, -1
  br i1 %.not51, label %120, label %70

70:                                               ; preds = %69
  %71 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #14
  %72 = icmp ult i64 %71, 2
  br i1 %72, label %.backedge.backedge, label %75

73:                                               ; preds = %.backedge
  %74 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %134

75:                                               ; preds = %70
  %76 = load i8, ptr %8, align 16, !tbaa !9
  %77 = icmp eq i8 %76, 88
  br i1 %77, label %78, label %80

78:                                               ; preds = %75
  %79 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %65, ptr noundef nonnull @.str.10, ptr noundef nonnull %6) #11
  br label %82

80:                                               ; preds = %75
  %81 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %8, ptr noundef nonnull @.str.11, ptr noundef nonnull %6) #11
  br label %82

82:                                               ; preds = %80, %78
  %83 = load i32, ptr %6, align 4, !tbaa !10
  %84 = load i32, ptr %66, align 4, !tbaa !12
  %85 = icmp slt i32 %83, %84
  br i1 %85, label %95, label %86

86:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %10) #11
  %87 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 256, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.5, i32 noundef 57) #11
  %88 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %88, ptr noundef nonnull %10)
          to label %89 unwind label %90

89:                                               ; preds = %86
  invoke void @__cxa_throw(ptr nonnull %88, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
          to label %156 unwind label %92

90:                                               ; preds = %86
  %91 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %88) #11
  br label %94

92:                                               ; preds = %89
  %93 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %94

94:                                               ; preds = %92, %90
  %.pn54 = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %10) #11
  br label %134

95:                                               ; preds = %82
  %96 = load double, ptr %7, align 8, !tbaa !51
  %97 = call double @llvm.round.f64(double %96)
  %98 = fptosi double %97 to i32
  %99 = sitofp i32 %98 to double
  %100 = fsub double %96, %99
  %101 = fcmp ugt double %100, 1.000000e-05
  br i1 %101, label %102, label %111

102:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #11
  %103 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %11, i64 noundef 256, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 59) #11
  %104 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %104, ptr noundef nonnull %11)
          to label %105 unwind label %106

105:                                              ; preds = %102
  invoke void @__cxa_throw(ptr nonnull %104, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #12
          to label %156 unwind label %108

106:                                              ; preds = %102
  %107 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @__cxa_free_exception(ptr %104) #11
  br label %110

108:                                              ; preds = %105
  %109 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %110

110:                                              ; preds = %108, %106
  %.pn56 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #11
  br label %134

111:                                              ; preds = %95
  %112 = icmp sgt i32 %98, 0
  br i1 %112, label %113, label %.backedge.backedge

.backedge.backedge:                               ; preds = %111, %117, %70
  br label %.backedge, !llvm.loop !53

113:                                              ; preds = %111
  %114 = sext i32 %83 to i64
  %115 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI3ArcSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %114) #11
  %116 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEixERS4_(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 4 dereferenceable(12) %115)
          to label %117 unwind label %118

117:                                              ; preds = %113
  store i32 %98, ptr %116, align 4, !tbaa !10
  br label %.backedge.backedge

118:                                              ; preds = %113
  %119 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %134

120:                                              ; preds = %69
  %121 = call i32 @fclose(ptr noundef nonnull %41)
  call void @llvm.lifetime.start.p0(i64 336, ptr nonnull %12) #11
  %122 = getelementptr inbounds i8, ptr %4, i64 544
  %123 = load i32, ptr %122, align 8, !tbaa !55
  %124 = getelementptr inbounds i8, ptr %4, i64 552
  %125 = getelementptr inbounds i8, ptr %4, i64 600
  %126 = load i32, ptr %125, align 8, !tbaa !56
  invoke void @_ZN10ArcflowSolC1ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336) %12, ptr noundef nonnull align 8 dereferenceable(200) %38, ptr noundef nonnull align 8 dereferenceable(48) %9, i32 noundef %123, ptr noundef nonnull align 8 dereferenceable(24) %124, i32 noundef %126)
          to label %127 unwind label %129

127:                                              ; preds = %120
  invoke void @_ZN10ArcflowSol14print_solutionEbb(ptr noundef nonnull align 8 dereferenceable(336) %12, i1 noundef zeroext %.03167, i1 noundef zeroext %.030)
          to label %128 unwind label %131

128:                                              ; preds = %127
  call void @_ZN10ArcflowSolD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %12) #11
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %12) #11
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  call void @_ZN7ArcflowD2Ev(ptr noundef nonnull align 8 dereferenceable(604) %4) #11
  call void @llvm.lifetime.end.p0(i64 608, ptr nonnull %4) #11
  br label %155

129:                                              ; preds = %120
  %130 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  br label %133

131:                                              ; preds = %127
  %132 = landingpad { ptr, i32 }
          catch ptr @_ZTISt13runtime_error
          catch ptr null
  call void @_ZN10ArcflowSolD2Ev(ptr noundef nonnull align 8 dereferenceable(336) %12) #11
  br label %133

133:                                              ; preds = %131, %129
  %.pn52 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 336, ptr nonnull %12) #11
  br label %134

134:                                              ; preds = %110, %118, %133, %94, %73
  %.pn58.pn = phi { ptr, i32 } [ %.pn54, %94 ], [ %.pn52, %133 ], [ %74, %73 ], [ %119, %118 ], [ %.pn56, %110 ]
  call void @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  br label %135

135:                                              ; preds = %134, %52
  %.pn58.pn.pn = phi { ptr, i32 } [ %.pn58.pn, %134 ], [ %.pn49, %52 ]
  call void @_ZN7ArcflowD2Ev(ptr noundef nonnull align 8 dereferenceable(604) %4) #11
  br label %136

136:                                              ; preds = %135, %45
  %.pn58.pn.pn.pn = phi { ptr, i32 } [ %.pn58.pn.pn, %135 ], [ %46, %45 ]
  %.028 = phi ptr [ %41, %135 ], [ null, %45 ]
  call void @llvm.lifetime.end.p0(i64 608, ptr nonnull %4) #11
  br label %137

137:                                              ; preds = %136, %34, %28
  %.pn58.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn58.pn.pn.pn, %136 ], [ %.pn, %34 ], [ %29, %28 ]
  %.129 = phi ptr [ %.028, %136 ], [ null, %34 ], [ null, %28 ]
  %.9 = extractvalue { ptr, i32 } %.pn58.pn.pn.pn.pn, 0
  %.943 = extractvalue { ptr, i32 } %.pn58.pn.pn.pn.pn, 1
  %138 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #11
  %139 = icmp eq i32 %.943, %138
  %140 = call ptr @__cxa_begin_catch(ptr %.9) #11
  %.not65 = icmp eq ptr %.129, null
  br i1 %139, label %141, label %144

141:                                              ; preds = %137
  br i1 %.not65, label %149, label %142

142:                                              ; preds = %141
  %143 = call i32 @fclose(ptr noundef nonnull %.129)
  br label %149

144:                                              ; preds = %137
  br i1 %.not65, label %147, label %145

145:                                              ; preds = %144
  %146 = call i32 @fclose(ptr noundef nonnull %.129)
  br label %147

147:                                              ; preds = %145, %144
  %148 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14)
  call void @__cxa_end_catch()
  br label %155

149:                                              ; preds = %142, %141
  %150 = load ptr, ptr %140, align 8, !tbaa !57
  %151 = getelementptr inbounds i8, ptr %150, i64 16
  %152 = load ptr, ptr %151, align 8
  %153 = call noundef ptr %152(ptr noundef nonnull align 8 dereferenceable(16) %140) #11
  %154 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef %153)
  call void @__cxa_end_catch()
  br label %155

155:                                              ; preds = %128, %147, %149, %17
  %.1 = phi i32 [ 1, %17 ], [ 1, %149 ], [ 1, %147 ], [ 0, %128 ]
  ret i32 %.1

156:                                              ; preds = %105, %89, %47, %27
  unreachable
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @setvbuf(ptr nocapture noundef, ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #1

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

declare noundef zeroext i1 @_Z9check_extPKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

declare void @_ZN7ArcflowC1EPKc(ptr noundef nonnull align 8 dereferenceable(604), ptr noundef) unnamed_addr #3

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare void @perror(ptr nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #5

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

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapI3ArciSt4lessIS0_ESaISt4pairIKS0_iEEEixERS4_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #0 align 2

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

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #1

declare void @_ZN10ArcflowSolC1ERK8InstanceRKSt3mapI3ArciSt4lessIS4_ESaISt4pairIKS4_iEEEiRKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(336), ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) unnamed_addr #3

declare void @_ZN10ArcflowSol14print_solutionEbb(ptr noundef nonnull align 8 dereferenceable(336), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10ArcflowSolD2Ev(ptr noundef nonnull align 8 dereferenceable(336)) unnamed_addr #9 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7ArcflowD2Ev(ptr noundef nonnull align 8 dereferenceable(604)) unnamed_addr #9 align 2

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #10

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

!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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 540}
!13 = !{!"_ZTS7Arcflow", !14, i64 0, !15, i64 8, !24, i64 56, !34, i64 128, !25, i64 152, !34, i64 200, !34, i64 224, !34, i64 248, !38, i64 272, !30, i64 296, !11, i64 320, !23, i64 328, !42, i64 336, !11, i64 536, !11, i64 540, !11, i64 544, !34, i64 552, !47, i64 576, !11, i64 600}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSSt3setI3ArcSt4lessIS0_ESaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeI3ArcS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI3ArcEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessI3ArcE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTS7NodeSet", !25, i64 0, !30, i64 48}
!25 = !{!"_ZTSSt3mapISt6vectorIiSaIiEEiSt4lessIS2_ESaISt4pairIKS2_iEEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeISt6vectorIiSaIiEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !28, i64 0, !20, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessISt6vectorIiSaIiEEEE", !29, i64 0}
!29 = !{!"_ZTSSt4lessISt6vectorIiSaIiEEE"}
!30 = !{!"_ZTSSt6vectorIS_IiSaIiEESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt6vectorIiSaIiEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIiSaIiEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorI4ItemSaIS0_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseI4ItemSaIS0_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseI4ItemSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTS8Instance", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !30, i64 24, !34, i64 48, !34, i64 72, !38, i64 96, !11, i64 120, !14, i64 124, !14, i64 125, !7, i64 126, !43, i64 128, !34, i64 152, !34, i64 176}
!43 = !{!"_ZTSSt6vectorIcSaIcEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt6vectorI3ArcSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseI3ArcSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI3ArcSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!52, !52, i64 0}
!52 = !{!"double", !7, i64 0}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}
!55 = !{!13, !11, i64 544}
!56 = !{!13, !11, i64 600}
!57 = !{!58, !58, i64 0}
!58 = !{!"vtable pointer", !8, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass