; LLVM IR from ERGO-Code/HiGHS :: src/presolve (HighsSymmetry)

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

%"struct.HighsSymmetryDetection::ComponentData" = type { %class.HighsDisjointSets, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%class.HighsDisjointSets = type { %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.47" = type { ptr }
%class.anon.239 = type { ptr, ptr }
%class.HighsHashTable.114 = type { %"class.std::unique_ptr.115", %"class.std::unique_ptr.25", i64, i64, i64 }
%"class.std::unique_ptr.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = type { ptr }
%"class.std::unique_ptr.25" = type { %"struct.std::__uniq_ptr_data.26" }
%"struct.std::__uniq_ptr_data.26" = type { %"class.std::__uniq_ptr_impl.27" }
%"class.std::__uniq_ptr_impl.27" = type { %"class.std::tuple.28" }
%"class.std::tuple.28" = type { %"struct.std::_Tuple_impl.29" }
%"struct.std::_Tuple_impl.29" = type { %"struct.std::_Head_base.32" }
%"struct.std::_Head_base.32" = type { ptr }
%class.anon.240 = type { ptr }
%class.HighsSymmetryDetection = type { ptr, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.8", %"class.std::vector", %"class.std::vector.13", %"class.std::vector", %"class.std::vector", %"class.std::vector.18", %"class.std::vector.18", %"class.std::vector.18", %"class.std::vector", %"class.std::vector", %class.HighsHashTable, %class.HighsHashTable.33, %class.HighsHashTable.33, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::vector.42" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<std::pair<int, unsigned int>, std::allocator<std::pair<int, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, unsigned int>, std::allocator<std::pair<int, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, unsigned int>, std::allocator<std::pair<int, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, unsigned int>, std::allocator<std::pair<int, unsigned int>>>::_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<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable = type { %"class.std::unique_ptr", %"class.std::unique_ptr.25", i64, i64, i64 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.24" }
%"struct.std::_Head_base.24" = type { ptr }
%class.HighsHashTable.33 = type { %"class.std::unique_ptr.34", %"class.std::unique_ptr.25", i64, i64, i64 }
%"class.std::unique_ptr.34" = type { %"struct.std::__uniq_ptr_data.35" }
%"struct.std::__uniq_ptr_data.35" = type { %"class.std::__uniq_ptr_impl.36" }
%"class.std::__uniq_ptr_impl.36" = type { %"class.std::tuple.37" }
%"class.std::tuple.37" = type { %"struct.std::_Tuple_impl.38" }
%"struct.std::_Tuple_impl.38" = type { %"struct.std::_Head_base.41" }
%"struct.std::_Head_base.41" = type { ptr }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<HighsSymmetryDetection::Node, std::allocator<HighsSymmetryDetection::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsSymmetryDetection::Node, std::allocator<HighsSymmetryDetection::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsSymmetryDetection::Node, std::allocator<HighsSymmetryDetection::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsSymmetryDetection::Node, std::allocator<HighsSymmetryDetection::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsSymmetries = type { %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.51", %class.HighsHashTable.56, i32, i32 }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = type { %"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsOrbitopeMatrix, std::allocator<HighsOrbitopeMatrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable.56 = type { %"class.std::unique_ptr.57", %"class.std::unique_ptr.25", i64, i64, i64 }
%"class.std::unique_ptr.57" = type { %"struct.std::__uniq_ptr_data.58" }
%"struct.std::__uniq_ptr_data.58" = type { %"class.std::__uniq_ptr_impl.59" }
%"class.std::__uniq_ptr_impl.59" = type { %"class.std::tuple.60" }
%"class.std::tuple.60" = type { %"struct.std::_Tuple_impl.61" }
%"struct.std::_Tuple_impl.61" = type { %"struct.std::_Head_base.64" }
%"struct.std::_Head_base.64" = type { ptr }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries = external hidden unnamed_addr constant [108 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries(ptr dead_on_unwind noalias writable sret(%"struct.HighsSymmetryDetection::ComponentData") align 8 %0, ptr noundef nonnull align 8 dereferenceable(720) %1, ptr noundef nonnull align 8 dereferenceable(216) %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %22 = alloca %class.anon.239, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %class.HighsHashTable.114, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %32 = alloca %class.anon.240, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %37 = load ptr, ptr %5, align 8
  store i1 false, ptr %7, align 1
  call void @_ZN22HighsSymmetryDetection13ComponentDataC2Ev(ptr noundef nonnull align 8 dereferenceable(264) %0) #6
  %38 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 0
  %39 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  %40 = load i32, ptr %39, align 8, !tbaa !9
  invoke void @_ZN17HighsDisjointSetsILb0EE5resetEi(ptr noundef nonnull align 8 dereferenceable(72) %38, i32 noundef %40)
          to label %41 unwind label %61

41:                                               ; preds = %3
  %42 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.HighsSymmetries, ptr %43, i32 0, i32 8
  %45 = load i32, ptr %44, align 8, !tbaa !57
  %46 = sext i32 %45 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 -1, ptr %10, align 4, !tbaa !70
  invoke void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %46, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %47 unwind label %65

47:                                               ; preds = %41
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  %48 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 8
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.HighsSymmetries, ptr %49, i32 0, i32 8
  %51 = load i32, ptr %50, align 8, !tbaa !57
  %52 = sext i32 %51 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !70
  invoke void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %52, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %53 unwind label %69

53:                                               ; preds = %47
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !70
  br label %54

54:                                               ; preds = %148, %53
  %55 = load i32, ptr %12, align 4, !tbaa !70
  %56 = load ptr, ptr %6, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.HighsSymmetries, ptr %56, i32 0, i32 8
  %58 = load i32, ptr %57, align 8, !tbaa !57
  %59 = icmp slt i32 %55, %58
  br i1 %59, label %73, label %60

60:                                               ; preds = %54
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %151

61:                                               ; preds = %168, %3
  %62 = landingpad { ptr, i32 }
          cleanup
  %63 = extractvalue { ptr, i32 } %62, 0
  store ptr %63, ptr %8, align 8
  %64 = extractvalue { ptr, i32 } %62, 1
  store i32 %64, ptr %9, align 4
  br label %381

65:                                               ; preds = %41
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %8, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %381

69:                                               ; preds = %47
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %8, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %381

73:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.HighsSymmetries, ptr %74, i32 0, i32 1
  %76 = call noundef ptr @_ZNKSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  %77 = load i32, ptr %12, align 4, !tbaa !70
  %78 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  %79 = load i32, ptr %78, align 8, !tbaa !9
  %80 = mul nsw i32 %77, %79
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds i32, ptr %76, i64 %81
  store ptr %82, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !70
  br label %83

83:                                               ; preds = %144, %73
  %84 = load i32, ptr %15, align 4, !tbaa !70
  %85 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  %86 = load i32, ptr %85, align 8, !tbaa !9
  %87 = icmp slt i32 %84, %86
  br i1 %87, label %89, label %88

88:                                               ; preds = %83
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %147

89:                                               ; preds = %83
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  %91 = load i32, ptr %15, align 4, !tbaa !70
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds i32, ptr %90, i64 %92
  %94 = load i32, ptr %93, align 4, !tbaa !70
  %95 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 9
  %96 = load i32, ptr %15, align 4, !tbaa !70
  %97 = sext i32 %96 to i64
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %97) #6
  %99 = load i32, ptr %98, align 4, !tbaa !70
  %100 = icmp ne i32 %94, %99
  br i1 %100, label %101, label %143

101:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %102 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 8
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = load i32, ptr %15, align 4, !tbaa !70
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds i32, ptr %103, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !70
  %108 = sext i32 %107 to i64
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %108) #6
  %110 = load i32, ptr %109, align 4, !tbaa !70
  store i32 %110, ptr %16, align 4, !tbaa !70
  %111 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 8
  %112 = load i32, ptr %12, align 4, !tbaa !70
  %113 = sext i32 %112 to i64
  %114 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %113) #6
  %115 = load i32, ptr %114, align 4, !tbaa !70
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %114, align 4, !tbaa !70
  %117 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %118 = load i32, ptr %12, align 4, !tbaa !70
  %119 = sext i32 %118 to i64
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %119) #6
  %121 = load i32, ptr %120, align 4, !tbaa !70
  %122 = icmp ne i32 %121, -1
  br i1 %122, label %123, label %136

123:                                              ; preds = %101
  %124 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 0
  %125 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %126 = load i32, ptr %12, align 4, !tbaa !70
  %127 = sext i32 %126 to i64
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %127) #6
  %129 = load i32, ptr %128, align 4, !tbaa !70
  %130 = load i32, ptr %16, align 4, !tbaa !70
  invoke void @_ZN17HighsDisjointSetsILb0EE5mergeEii(ptr noundef nonnull align 8 dereferenceable(72) %124, i32 noundef %129, i32 noundef %130)
          to label %131 unwind label %132

131:                                              ; preds = %123
  br label %142

132:                                              ; preds = %123
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %8, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %381

136:                                              ; preds = %101
  %137 = load i32, ptr %16, align 4, !tbaa !70
  %138 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %139 = load i32, ptr %12, align 4, !tbaa !70
  %140 = sext i32 %139 to i64
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %140) #6
  store i32 %137, ptr %141, align 4, !tbaa !70
  br label %142

142:                                              ; preds = %136, %131
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %143

143:                                              ; preds = %142, %89
  br label %144

144:                                              ; preds = %143
  %145 = load i32, ptr %15, align 4, !tbaa !70
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %15, align 4, !tbaa !70
  br label %83, !llvm.loop !71

147:                                              ; preds = %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %148

148:                                              ; preds = %147
  %149 = load i32, ptr %12, align 4, !tbaa !70
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %12, align 4, !tbaa !70
  br label %54, !llvm.loop !73

151:                                              ; preds = %60
  %152 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 2
  %153 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 9
  %154 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %153) #6
  %155 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %17, i32 0, i32 0
  store ptr %154, ptr %155, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %156 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 9
  %157 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #6
  %158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %19, i32 0, i32 0
  store ptr %157, ptr %158, align 8
  %159 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  %160 = load i32, ptr %159, align 8, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %19, i64 noundef %161) #6
  %163 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %18, i32 0, i32 0
  store ptr %162, ptr %163, align 8
  %164 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %17, i32 0, i32 0
  %165 = load ptr, ptr %164, align 8
  %166 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %18, i32 0, i32 0
  %167 = load ptr, ptr %166, align 8
  invoke void @_ZNSt6vectorIiSaIiEE6assignIN9__gnu_cxx17__normal_iteratorIPiS1_EEvEEvT_S7_(ptr noundef nonnull align 8 dereferenceable(24) %152, ptr %165, ptr %167)
          to label %168 unwind label %193

168:                                              ; preds = %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  %169 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 2
  %170 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #6
  %171 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %20, i32 0, i32 0
  store ptr %170, ptr %171, align 8
  %172 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 2
  %173 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %172) #6
  %174 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %21, i32 0, i32 0
  store ptr %173, ptr %174, align 8
  %175 = getelementptr inbounds %class.anon.239, ptr %22, i32 0, i32 0
  store ptr %0, ptr %175, align 8, !tbaa !5
  %176 = getelementptr inbounds %class.anon.239, ptr %22, i32 0, i32 1
  store ptr %37, ptr %176, align 8, !tbaa !74
  %177 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %20, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8
  %179 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %21, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8
  %181 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 0
  %182 = load ptr, ptr %181, align 8
  %183 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 1
  %184 = load ptr, ptr %183, align 8
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_0EvT_SC_T0_"(ptr %178, ptr %180, ptr %182, ptr %184)
          to label %185 unwind label %61

185:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 -1, ptr %23, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 -1, ptr %24, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #6
  invoke void @_ZN14HighsHashTableIivEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25)
          to label %186 unwind label %197

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !70
  br label %187

187:                                              ; preds = %262, %186
  %188 = load i32, ptr %26, align 4, !tbaa !70
  %189 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  %190 = load i32, ptr %189, align 8, !tbaa !9
  %191 = icmp slt i32 %188, %190
  br i1 %191, label %201, label %192

192:                                              ; preds = %187
  store i32 8, ptr %13, align 4
  br label %266

193:                                              ; preds = %151
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %8, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %381

197:                                              ; preds = %185
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %8, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %9, align 4
  br label %378

201:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %202 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 0
  %203 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 8
  %204 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 2
  %205 = load i32, ptr %26, align 4, !tbaa !70
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206) #6
  %208 = load i32, ptr %207, align 4, !tbaa !70
  %209 = sext i32 %208 to i64
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %209) #6
  %211 = load i32, ptr %210, align 4, !tbaa !70
  %212 = invoke noundef i32 @_ZN17HighsDisjointSetsILb0EE6getSetEi(ptr noundef nonnull align 8 dereferenceable(72) %202, i32 noundef %211)
          to label %213 unwind label %220

213:                                              ; preds = %201
  store i32 %212, ptr %27, align 4, !tbaa !70
  %214 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 0
  %215 = load i32, ptr %27, align 4, !tbaa !70
  %216 = invoke noundef i32 @_ZNK17HighsDisjointSetsILb0EE10getSetSizeEi(ptr noundef nonnull align 8 dereferenceable(72) %214, i32 noundef %215)
          to label %217 unwind label %220

217:                                              ; preds = %213
  %218 = icmp eq i32 %216, 1
  br i1 %218, label %219, label %224

219:                                              ; preds = %217
  store i32 8, ptr %13, align 4
  br label %259

220:                                              ; preds = %237, %234, %232, %228, %213, %201
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %8, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %9, align 4
  br label %265

224:                                              ; preds = %217
  %225 = load i32, ptr %27, align 4, !tbaa !70
  %226 = load i32, ptr %24, align 4, !tbaa !70
  %227 = icmp ne i32 %225, %226
  br i1 %227, label %228, label %239

228:                                              ; preds = %224
  %229 = load i32, ptr %27, align 4, !tbaa !70
  store i32 %229, ptr %24, align 4, !tbaa !70
  %230 = load i32, ptr %26, align 4, !tbaa !70
  store i32 %230, ptr %23, align 4, !tbaa !70
  %231 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 1
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %231, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %232 unwind label %220

232:                                              ; preds = %228
  %233 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 4
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %233, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %234 unwind label %220

234:                                              ; preds = %232
  %235 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 3
  %236 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE12emplace_backIJEEERiDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %235)
          to label %237 unwind label %220

237:                                              ; preds = %234
  invoke void @_ZN14HighsHashTableIivE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %25)
          to label %238 unwind label %220

238:                                              ; preds = %237
  br label %239

239:                                              ; preds = %238, %224
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %240 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 2
  %241 = load i32, ptr %26, align 4, !tbaa !70
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #6
  %244 = load i32, ptr %243, align 4, !tbaa !70
  %245 = invoke noundef i32 @_ZN22HighsSymmetryDetection8getOrbitEi(ptr noundef nonnull align 8 dereferenceable(720) %37, i32 noundef %244)
          to label %246 unwind label %254

246:                                              ; preds = %239
  store i32 %245, ptr %28, align 4, !tbaa !70
  %247 = invoke noundef zeroext i1 @_ZN14HighsHashTableIivE6insertIJiEEEbDpOT_(ptr noundef nonnull align 8 dereferenceable(40) %25, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %248 unwind label %254

248:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br i1 %247, label %249, label %258

249:                                              ; preds = %248
  %250 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 3
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %250) #6
  %252 = load i32, ptr %251, align 4, !tbaa !70
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %251, align 4, !tbaa !70
  br label %258

254:                                              ; preds = %246, %239
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %8, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %265

258:                                              ; preds = %249, %248
  store i32 0, ptr %13, align 4
  br label %259

259:                                              ; preds = %258, %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  %260 = load i32, ptr %13, align 4
  switch i32 %260, label %266 [
    i32 0, label %261
  ]

261:                                              ; preds = %259
  br label %262

262:                                              ; preds = %261
  %263 = load i32, ptr %26, align 4, !tbaa !70
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %26, align 4, !tbaa !70
  br label %187, !llvm.loop !76

265:                                              ; preds = %254, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %377

266:                                              ; preds = %259, %192
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %267

267:                                              ; preds = %266
  %268 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.HighsSymmetries, ptr %269, i32 0, i32 8
  %271 = load i32, ptr %270, align 8, !tbaa !57
  %272 = sext i32 %271 to i64
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef %272)
          to label %273 unwind label %281

273:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !70
  br label %274

274:                                              ; preds = %296, %273
  %275 = load i32, ptr %29, align 4, !tbaa !70
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.HighsSymmetries, ptr %276, i32 0, i32 8
  %278 = load i32, ptr %277, align 8, !tbaa !57
  %279 = icmp slt i32 %275, %278
  br i1 %279, label %285, label %280

280:                                              ; preds = %274
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %303

281:                                              ; preds = %303, %267
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %8, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %9, align 4
  br label %377

285:                                              ; preds = %274
  %286 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %287 = load i32, ptr %29, align 4, !tbaa !70
  %288 = sext i32 %287 to i64
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %286, i64 noundef %288) #6
  %290 = load i32, ptr %289, align 4, !tbaa !70
  %291 = icmp eq i32 %290, -1
  br i1 %291, label %292, label %293

292:                                              ; preds = %285
  br label %296

293:                                              ; preds = %285
  %294 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %294, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %295 unwind label %299

295:                                              ; preds = %293
  br label %296

296:                                              ; preds = %295, %292
  %297 = load i32, ptr %29, align 4, !tbaa !70
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %29, align 4, !tbaa !70
  br label %274, !llvm.loop !77

299:                                              ; preds = %293
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %8, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %377

303:                                              ; preds = %280
  %304 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  %305 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %304) #6
  %306 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %30, i32 0, i32 0
  store ptr %305, ptr %306, align 8
  %307 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  %308 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %307) #6
  %309 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %31, i32 0, i32 0
  store ptr %308, ptr %309, align 8
  %310 = getelementptr inbounds %class.anon.240, ptr %32, i32 0, i32 0
  store ptr %0, ptr %310, align 8, !tbaa !5
  %311 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %30, i32 0, i32 0
  %312 = load ptr, ptr %311, align 8
  %313 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.47", ptr %31, i32 0, i32 0
  %314 = load ptr, ptr %313, align 8
  %315 = getelementptr inbounds %class.anon.240, ptr %32, i32 0, i32 0
  %316 = load ptr, ptr %315, align 8
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_1EvT_SC_T0_"(ptr %312, ptr %314, ptr %316)
          to label %317 unwind label %281

317:                                              ; preds = %303
  store i32 -1, ptr %23, align 4, !tbaa !70
  store i32 -1, ptr %24, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %318 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  %319 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %318) #6
  %320 = trunc i64 %319 to i32
  store i32 %320, ptr %33, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !70
  br label %321

321:                                              ; preds = %353, %317
  %322 = load i32, ptr %34, align 4, !tbaa !70
  %323 = load i32, ptr %33, align 4, !tbaa !70
  %324 = icmp slt i32 %322, %323
  br i1 %324, label %326, label %325

325:                                              ; preds = %321
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %356

326:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %327 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 6
  %328 = load i32, ptr %34, align 4, !tbaa !70
  %329 = sext i32 %328 to i64
  %330 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %327, i64 noundef %329) #6
  %331 = load i32, ptr %330, align 4, !tbaa !70
  store i32 %331, ptr %35, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %332 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 0
  %333 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 7
  %334 = load i32, ptr %35, align 4, !tbaa !70
  %335 = sext i32 %334 to i64
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %333, i64 noundef %335) #6
  %337 = load i32, ptr %336, align 4, !tbaa !70
  %338 = invoke noundef i32 @_ZN17HighsDisjointSetsILb0EE6getSetEi(ptr noundef nonnull align 8 dereferenceable(72) %332, i32 noundef %337)
          to label %339 unwind label %348

339:                                              ; preds = %326
  store i32 %338, ptr %36, align 4, !tbaa !70
  %340 = load i32, ptr %36, align 4, !tbaa !70
  %341 = load i32, ptr %24, align 4, !tbaa !70
  %342 = icmp ne i32 %340, %341
  br i1 %342, label %343, label %352

343:                                              ; preds = %339
  %344 = load i32, ptr %36, align 4, !tbaa !70
  store i32 %344, ptr %24, align 4, !tbaa !70
  %345 = load i32, ptr %34, align 4, !tbaa !70
  store i32 %345, ptr %23, align 4, !tbaa !70
  %346 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %346, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %347 unwind label %348

347:                                              ; preds = %343
  br label %352

348:                                              ; preds = %343, %326
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %8, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %376

352:                                              ; preds = %347, %339
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %353

353:                                              ; preds = %352
  %354 = load i32, ptr %34, align 4, !tbaa !70
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %34, align 4, !tbaa !70
  br label %321, !llvm.loop !78

356:                                              ; preds = %325
  %357 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 5
  %358 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %357) #6
  %359 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 1
  %360 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %359) #6
  %361 = icmp eq i64 %358, %360
  br i1 %361, label %362, label %363

362:                                              ; preds = %356
  br label %365

363:                                              ; preds = %356
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.52, i32 noundef 1496, ptr noundef @__PRETTY_FUNCTION__._ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries) #7
  unreachable

364:                                              ; No predecessors!
  br label %365

365:                                              ; preds = %364, %362
  %366 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %366, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %367 unwind label %372

367:                                              ; preds = %365
  %368 = getelementptr inbounds %"struct.HighsSymmetryDetection::ComponentData", ptr %0, i32 0, i32 1
  %369 = getelementptr inbounds %class.HighsSymmetryDetection, ptr %37, i32 0, i32 34
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %368, ptr noundef nonnull align 4 dereferenceable(4) %369)
          to label %370 unwind label %372

370:                                              ; preds = %367
  store i1 true, ptr %7, align 1
  store i32 1, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @_ZN14HighsHashTableIivED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  %371 = load i1, ptr %7, align 1
  br i1 %371, label %380, label %379

372:                                              ; preds = %367, %365
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %8, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %9, align 4
  br label %376

376:                                              ; preds = %372, %348
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %377

377:                                              ; preds = %376, %299, %281, %265
  call void @_ZN14HighsHashTableIivED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #6
  br label %378

378:                                              ; preds = %377, %197
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %381

379:                                              ; preds = %370
  call void @_ZN22HighsSymmetryDetection13ComponentDataD2Ev(ptr noundef nonnull align 8 dereferenceable(264) %0) #6
  br label %380

380:                                              ; preds = %379, %370
  ret void

381:                                              ; preds = %378, %193, %132, %69, %65, %61
  call void @_ZN22HighsSymmetryDetection13ComponentDataD2Ev(ptr noundef nonnull align 8 dereferenceable(264) %0) #6
  br label %382

382:                                              ; preds = %381
  %383 = load ptr, ptr %8, align 8
  %384 = load i32, ptr %9, align 4
  %385 = insertvalue { ptr, i32 } poison, ptr %383, 0
  %386 = insertvalue { ptr, i32 } %385, i32 %384, 1
  resume { ptr, i32 } %386
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17HighsDisjointSetsILb0EE5resetEi(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17HighsDisjointSetsILb0EE5mergeEii(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef, i32 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_0EvT_SC_T0_"(ptr, ptr, ptr, ptr) #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK17HighsDisjointSetsILb0EE10getSetSizeEi(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14HighsHashTableIivE6insertIJiEEEbDpOT_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_1EvT_SC_T0_"(ptr, ptr, ptr) #5

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !52, i64 688}
!10 = !{!"_ZTS22HighsSymmetryDetection", !6, i64 0, !11, i64 8, !11, i64 32, !15, i64 56, !15, i64 80, !11, i64 104, !11, i64 128, !11, i64 152, !11, i64 176, !11, i64 200, !11, i64 224, !11, i64 248, !11, i64 272, !19, i64 296, !11, i64 320, !23, i64 344, !11, i64 368, !11, i64 392, !27, i64 416, !27, i64 440, !27, i64 464, !11, i64 488, !11, i64 512, !31, i64 536, !45, i64 576, !45, i64 616, !52, i64 656, !52, i64 660, !52, i64 664, !52, i64 668, !52, i64 672, !52, i64 676, !52, i64 680, !52, i64 684, !52, i64 688, !53, i64 696}
!11 = !{!"_ZTSSt6vectorIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSSt6vectorISt4pairIijESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt4pairIijESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt4pairIijESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt4pairIijESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIhSaIhEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIPiSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPiSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPiSaIS0_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPiSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIjSaIjEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTS14HighsHashTableIijE", !32, i64 0, !38, i64 8, !44, i64 16, !44, i64 24, !44, i64 32}
!32 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEE", !33, i64 0}
!33 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterELb1ELb1EE", !34, i64 0}
!34 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEE", !35, i64 0}
!35 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEEE", !36, i64 0}
!36 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEEE", !37, i64 0}
!37 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIijELb0EE", !6, i64 0}
!38 = !{!"_ZTSSt10unique_ptrIA_hSt14default_deleteIS0_EE", !39, i64 0}
!39 = !{!"_ZTSSt15__uniq_ptr_dataIhSt14default_deleteIA_hELb1ELb1EE", !40, i64 0}
!40 = !{!"_ZTSSt15__uniq_ptr_implIhSt14default_deleteIA_hEE", !41, i64 0}
!41 = !{!"_ZTSSt5tupleIJPhSt14default_deleteIA_hEEE", !42, i64 0}
!42 = !{!"_ZTSSt11_Tuple_implILm0EJPhSt14default_deleteIA_hEEE", !43, i64 0}
!43 = !{!"_ZTSSt10_Head_baseILm0EPhLb0EE", !6, i64 0}
!44 = !{!"long", !7, i64 0}
!45 = !{!"_ZTS14HighsHashTableISt5tupleIJiijEEvE", !46, i64 0, !38, i64 8, !44, i64 16, !44, i64 24, !44, i64 32}
!46 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEE", !47, i64 0}
!47 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterELb1ELb1EE", !48, i64 0}
!48 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEE", !49, i64 0}
!49 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIS_IJiijEEvEN14HighsHashTableIS1_vE12OpNewDeleterEEE", !50, i64 0}
!50 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEEE", !51, i64 0}
!51 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryISt5tupleIJiijEEvELb0EE", !6, i64 0}
!52 = !{!"int", !7, i64 0}
!53 = !{!"_ZTSSt6vectorIN22HighsSymmetryDetection4NodeESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!58, !52, i64 208}
!58 = !{!"_ZTS15HighsSymmetries", !11, i64 0, !11, i64 24, !11, i64 48, !11, i64 72, !11, i64 96, !11, i64 120, !59, i64 144, !63, i64 168, !52, i64 208, !52, i64 212}
!59 = !{!"_ZTSSt6vectorI19HighsOrbitopeMatrixSaIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTS14HighsHashTableIiiE", !64, i64 0, !38, i64 8, !44, i64 16, !44, i64 24, !44, i64 32}
!64 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEE", !65, i64 0}
!65 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterELb1ELb1EE", !66, i64 0}
!66 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEE", !67, i64 0}
!67 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEEE", !68, i64 0}
!68 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEEE", !69, i64 0}
!69 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIiiELb0EE", !6, i64 0}
!70 = !{!52, !52, i64 0}
!71 = distinct !{!71, !72}
!72 = !{!"llvm.loop.mustprogress"}
!73 = distinct !{!73, !72}
!74 = !{!75, !6, i64 8}
!75 = !{!"_ZTSZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_0", !6, i64 0, !6, i64 8}
!76 = distinct !{!76, !72}
!77 = distinct !{!77, !72}
!78 = distinct !{!78, !72}


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

%"struct.HighsSymmetryDetection::ComponentData" = type { %class.HighsDisjointSets, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%class.HighsDisjointSets = type { %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.47" = type { ptr }
%class.HighsHashTable.114 = type { %"class.std::unique_ptr.115", %"class.std::unique_ptr.25", i64, i64, i64 }
%"class.std::unique_ptr.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = type { ptr }
%"class.std::unique_ptr.25" = type { %"struct.std::__uniq_ptr_data.26" }
%"struct.std::__uniq_ptr_data.26" = type { %"class.std::__uniq_ptr_impl.27" }
%"class.std::__uniq_ptr_impl.27" = type { %"class.std::tuple.28" }
%"class.std::tuple.28" = type { %"struct.std::_Tuple_impl.29" }
%"struct.std::_Tuple_impl.29" = type { %"struct.std::_Head_base.32" }
%"struct.std::_Head_base.32" = type { ptr }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries = external hidden unnamed_addr constant [108 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries(ptr dead_on_unwind noalias nonnull writable sret(%"struct.HighsSymmetryDetection::ComponentData") align 8 %0, ptr noundef nonnull align 8 dereferenceable(720) %1, ptr noundef nonnull align 8 dereferenceable(216) %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.47", align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %class.HighsHashTable.114, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  tail call void @_ZN22HighsSymmetryDetection13ComponentDataC2Ev(ptr noundef nonnull align 8 dereferenceable(264) %0) #6
  %13 = getelementptr inbounds i8, ptr %1, i64 688
  %14 = load i32, ptr %13, align 8, !tbaa !5
  invoke void @_ZN17HighsDisjointSetsILb0EE5resetEi(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %14)
          to label %15 unwind label %37

15:                                               ; preds = %3
  %16 = getelementptr inbounds i8, ptr %0, i64 216
  %17 = getelementptr inbounds i8, ptr %2, i64 208
  %18 = load i32, ptr %17, align 8, !tbaa !56
  %19 = sext i32 %18 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 -1, ptr %4, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %19, ptr noundef nonnull align 4 dereferenceable(4) %4)
          to label %20 unwind label %39

20:                                               ; preds = %15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  %21 = getelementptr inbounds i8, ptr %0, i64 240
  %22 = load i32, ptr %17, align 8, !tbaa !56
  %23 = sext i32 %22 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 0, ptr %5, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %23, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %24 unwind label %41

24:                                               ; preds = %20
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  %25 = load i32, ptr %17, align 8, !tbaa !56
  %26 = icmp sgt i32 %25, 0
  br i1 %26, label %.lr.ph76, label %._crit_edge77

.lr.ph76:                                         ; preds = %24
  %27 = getelementptr inbounds i8, ptr %2, i64 24
  %28 = getelementptr inbounds i8, ptr %1, i64 200
  %29 = getelementptr inbounds i8, ptr %1, i64 176
  br label %43

._crit_edge77:                                    ; preds = %._crit_edge, %24
  %30 = getelementptr inbounds i8, ptr %0, i64 96
  %31 = getelementptr inbounds i8, ptr %1, i64 200
  %32 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %33 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #6
  store ptr %33, ptr %6, align 8
  %34 = load i32, ptr %13, align 8, !tbaa !5
  %35 = sext i32 %34 to i64
  %36 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %35) #6
  invoke void @_ZNSt6vectorIiSaIiEE6assignIN9__gnu_cxx17__normal_iteratorIPiS1_EEvEEvT_S7_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr %32, ptr %36)
          to label %78 unwind label %88

37:                                               ; preds = %78, %3
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %185

39:                                               ; preds = %15
  %40 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br label %185

41:                                               ; preds = %20
  %42 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  br label %185

43:                                               ; preds = %.lr.ph76, %._crit_edge
  %indvars.iv90 = phi i64 [ 0, %.lr.ph76 ], [ %indvars.iv.next91, %._crit_edge ]
  %44 = call noundef ptr @_ZNKSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #6
  %45 = load i32, ptr %13, align 8, !tbaa !5
  %46 = trunc nuw nsw i64 %indvars.iv90 to i32
  %47 = mul nsw i32 %45, %46
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds i32, ptr %44, i64 %48
  %50 = icmp sgt i32 %45, 0
  br i1 %50, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %74, %43
  %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1
  %51 = load i32, ptr %17, align 8, !tbaa !56
  %52 = sext i32 %51 to i64
  %53 = icmp slt i64 %indvars.iv.next91, %52
  br i1 %53, label %43, label %._crit_edge77, !llvm.loop !70

.lr.ph:                                           ; preds = %43, %74
  %indvars.iv = phi i64 [ %indvars.iv.next, %74 ], [ 0, %43 ]
  %54 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv
  %55 = load i32, ptr %54, align 4, !tbaa !69
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv) #6
  %57 = load i32, ptr %56, align 4, !tbaa !69
  %.not69 = icmp eq i32 %55, %57
  br i1 %.not69, label %74, label %58

58:                                               ; preds = %.lr.ph
  %59 = load i32, ptr %54, align 4, !tbaa !69
  %60 = sext i32 %59 to i64
  %61 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %60) #6
  %62 = load i32, ptr %61, align 4, !tbaa !69
  %63 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %indvars.iv90) #6
  %64 = load i32, ptr %63, align 4, !tbaa !69
  %65 = add nsw i32 %64, 1
  store i32 %65, ptr %63, align 4, !tbaa !69
  %66 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv90) #6
  %67 = load i32, ptr %66, align 4, !tbaa !69
  %.not70 = icmp eq i32 %67, -1
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv90) #6
  br i1 %.not70, label %73, label %69

69:                                               ; preds = %58
  %70 = load i32, ptr %68, align 4, !tbaa !69
  invoke void @_ZN17HighsDisjointSetsILb0EE5mergeEii(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %70, i32 noundef %62)
          to label %74 unwind label %71

71:                                               ; preds = %69
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %185

73:                                               ; preds = %58
  store i32 %62, ptr %68, align 4, !tbaa !69
  br label %74

74:                                               ; preds = %73, %69, %.lr.ph
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %75 = load i32, ptr %13, align 8, !tbaa !5
  %76 = sext i32 %75 to i64
  %77 = icmp slt i64 %indvars.iv.next, %76
  br i1 %77, label %.lr.ph, label %._crit_edge, !llvm.loop !72

78:                                               ; preds = %._crit_edge77
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  %79 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  %80 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #6
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_0EvT_SC_T0_"(ptr %79, ptr %80, ptr nonnull %0, ptr nonnull %1)
          to label %81 unwind label %37

81:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 -1, ptr %7, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 -1, ptr %8, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #6
  invoke void @_ZN14HighsHashTableIivEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %.preheader unwind label %90

.preheader:                                       ; preds = %81
  %82 = load i32, ptr %13, align 8, !tbaa !5
  %83 = icmp sgt i32 %82, 0
  br i1 %83, label %.lr.ph79, label %.critedge

.lr.ph79:                                         ; preds = %.preheader
  %84 = getelementptr inbounds i8, ptr %1, i64 176
  %85 = getelementptr inbounds i8, ptr %0, i64 72
  %86 = getelementptr inbounds i8, ptr %0, i64 144
  %87 = getelementptr inbounds i8, ptr %0, i64 120
  br label %92

88:                                               ; preds = %._crit_edge77
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %185

90:                                               ; preds = %81
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %184

92:                                               ; preds = %.lr.ph79, %124
  %indvars.iv93 = phi i64 [ 0, %.lr.ph79 ], [ %indvars.iv.next94, %124 ]
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %indvars.iv93) #6
  %94 = load i32, ptr %93, align 4, !tbaa !69
  %95 = sext i32 %94 to i64
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %95) #6
  %97 = load i32, ptr %96, align 4, !tbaa !69
  %98 = invoke noundef i32 @_ZN17HighsDisjointSetsILb0EE6getSetEi(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %97)
          to label %99 unwind label %101

99:                                               ; preds = %92
  %100 = call noundef i32 @_ZNK17HighsDisjointSetsILb0EE10getSetSizeEi(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %98)
  %.not62 = icmp eq i32 %100, 1
  br i1 %.not62, label %.critedge, label %103

101:                                              ; preds = %110, %108, %107, %105, %92
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %183

103:                                              ; preds = %99
  %104 = load i32, ptr %8, align 4, !tbaa !69
  %.not = icmp eq i32 %98, %104
  br i1 %.not, label %111, label %105

105:                                              ; preds = %103
  store i32 %98, ptr %8, align 4, !tbaa !69
  %106 = trunc nuw nsw i64 %indvars.iv93 to i32
  store i32 %106, ptr %7, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %107 unwind label %101

107:                                              ; preds = %105
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %108 unwind label %101

108:                                              ; preds = %107
  %109 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE12emplace_backIJEEERiDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %87)
          to label %110 unwind label %101

110:                                              ; preds = %108
  invoke void @_ZN14HighsHashTableIivE5clearEv(ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %111 unwind label %101

111:                                              ; preds = %110, %103
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %indvars.iv93) #6
  %113 = load i32, ptr %112, align 4, !tbaa !69
  %114 = invoke noundef i32 @_ZN22HighsSymmetryDetection8getOrbitEi(ptr noundef nonnull align 8 dereferenceable(720) %1, i32 noundef %113)
          to label %115 unwind label %122

115:                                              ; preds = %111
  store i32 %114, ptr %10, align 4, !tbaa !69
  %116 = invoke noundef zeroext i1 @_ZN14HighsHashTableIivE6insertIJiEEEbDpOT_(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %117 unwind label %122

117:                                              ; preds = %115
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br i1 %116, label %118, label %124

118:                                              ; preds = %117
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #6
  %120 = load i32, ptr %119, align 4, !tbaa !69
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %119, align 4, !tbaa !69
  br label %124

122:                                              ; preds = %115, %111
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  br label %183

124:                                              ; preds = %118, %117
  %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1
  %125 = load i32, ptr %13, align 8, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = icmp slt i64 %indvars.iv.next94, %126
  br i1 %127, label %92, label %.critedge, !llvm.loop !73

.critedge:                                        ; preds = %124, %99, %.preheader
  %128 = getelementptr inbounds i8, ptr %0, i64 192
  %129 = load i32, ptr %17, align 8, !tbaa !56
  %130 = sext i32 %129 to i64
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %130)
          to label %131 unwind label %136

131:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 0, ptr %11, align 4, !tbaa !69
  %132 = load i32, ptr %17, align 8, !tbaa !56
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %.lr.ph83, label %._crit_edge84

._crit_edge84:                                    ; preds = %143, %131
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  %134 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #6
  %135 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #6
  invoke void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_1EvT_SC_T0_"(ptr %134, ptr %135, ptr nonnull %0)
          to label %150 unwind label %136

136:                                              ; preds = %._crit_edge84, %.critedge
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %183

.lr.ph83:                                         ; preds = %131, %143
  %storemerge81 = phi i32 [ %145, %143 ], [ 0, %131 ]
  %138 = sext i32 %storemerge81 to i64
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %138) #6
  %140 = load i32, ptr %139, align 4, !tbaa !69
  %141 = icmp eq i32 %140, -1
  br i1 %141, label %143, label %142

142:                                              ; preds = %.lr.ph83
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %128, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %143 unwind label %148

143:                                              ; preds = %142, %.lr.ph83
  %144 = load i32, ptr %11, align 4, !tbaa !69
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr %11, align 4, !tbaa !69
  %146 = load i32, ptr %17, align 8, !tbaa !56
  %147 = icmp slt i32 %145, %146
  br i1 %147, label %.lr.ph83, label %._crit_edge84, !llvm.loop !74

148:                                              ; preds = %142
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %183

150:                                              ; preds = %._crit_edge84
  store i32 -1, ptr %7, align 4, !tbaa !69
  store i32 -1, ptr %8, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %151 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #6
  %152 = trunc i64 %151 to i32
  store i32 %152, ptr %12, align 4, !tbaa !69
  %153 = icmp sgt i32 %152, 0
  br i1 %153, label %.lr.ph87, label %._crit_edge88

.lr.ph87:                                         ; preds = %150
  %154 = getelementptr inbounds i8, ptr %0, i64 168
  %155 = and i64 %151, 2147483647
  br label %161

._crit_edge88:                                    ; preds = %174, %150
  %156 = getelementptr inbounds i8, ptr %0, i64 168
  %157 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #6
  %158 = getelementptr inbounds i8, ptr %0, i64 72
  %159 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %158) #6
  %160 = icmp eq i64 %157, %159
  br i1 %160, label %177, label %176

161:                                              ; preds = %.lr.ph87, %174
  %indvars.iv96 = phi i64 [ 0, %.lr.ph87 ], [ %indvars.iv.next97, %174 ]
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %indvars.iv96) #6
  %163 = load i32, ptr %162, align 4, !tbaa !69
  %164 = sext i32 %163 to i64
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %164) #6
  %166 = load i32, ptr %165, align 4, !tbaa !69
  %167 = invoke noundef i32 @_ZN17HighsDisjointSetsILb0EE6getSetEi(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %166)
          to label %168 unwind label %172

168:                                              ; preds = %161
  %169 = load i32, ptr %8, align 4, !tbaa !69
  %.not63 = icmp eq i32 %167, %169
  br i1 %.not63, label %174, label %170

170:                                              ; preds = %168
  store i32 %167, ptr %8, align 4, !tbaa !69
  %171 = trunc nuw nsw i64 %indvars.iv96 to i32
  store i32 %171, ptr %7, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %154, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %174 unwind label %172

172:                                              ; preds = %170, %161
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %182

174:                                              ; preds = %170, %168
  %indvars.iv.next97 = add nuw nsw i64 %indvars.iv96, 1
  %175 = icmp ult i64 %indvars.iv.next97, %155
  br i1 %175, label %161, label %._crit_edge88, !llvm.loop !75

176:                                              ; preds = %._crit_edge88
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.52, i32 noundef 1496, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetries) #7
  unreachable

177:                                              ; preds = %._crit_edge88
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %156, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %178 unwind label %180

178:                                              ; preds = %177
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %179 unwind label %180

179:                                              ; preds = %178
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @_ZN14HighsHashTableIivED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  ret void

180:                                              ; preds = %178, %177
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %182

182:                                              ; preds = %180, %172
  %.pn64 = phi { ptr, i32 } [ %173, %172 ], [ %181, %180 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br label %183

183:                                              ; preds = %101, %122, %182, %148, %136
  %.pn66 = phi { ptr, i32 } [ %149, %148 ], [ %.pn64, %182 ], [ %137, %136 ], [ %123, %122 ], [ %102, %101 ]
  call void @_ZN14HighsHashTableIivED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #6
  br label %184

184:                                              ; preds = %183, %90
  %.pn66.pn = phi { ptr, i32 } [ %.pn66, %183 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  br label %185

185:                                              ; preds = %184, %88, %71, %41, %39, %37
  %.pn71 = phi { ptr, i32 } [ %72, %71 ], [ %.pn66.pn, %184 ], [ %38, %37 ], [ %89, %88 ], [ %42, %41 ], [ %40, %39 ]
  call void @_ZN22HighsSymmetryDetection13ComponentDataD2Ev(ptr noundef nonnull align 8 dereferenceable(264) %0) #6
  resume { ptr, i32 } %.pn71
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17HighsDisjointSetsILb0EE5resetEi(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17HighsDisjointSetsILb0EE5mergeEii(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_0EvT_SC_T0_"(ptr, ptr, ptr, ptr) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK17HighsDisjointSetsILb0EE10getSetSizeEi(ptr noundef nonnull align 8 dereferenceable(72), i32 noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN14HighsHashTableIivE6insertIJiEEEbDpOT_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN22HighsSymmetryDetection20computeComponentDataERK15HighsSymmetriesE3$_1EvT_SC_T0_"(ptr, ptr, ptr) local_unnamed_addr #5

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { 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, !51, i64 688}
!6 = !{!"_ZTS22HighsSymmetryDetection", !7, i64 0, !10, i64 8, !10, i64 32, !14, i64 56, !14, i64 80, !10, i64 104, !10, i64 128, !10, i64 152, !10, i64 176, !10, i64 200, !10, i64 224, !10, i64 248, !10, i64 272, !18, i64 296, !10, i64 320, !22, i64 344, !10, i64 368, !10, i64 392, !26, i64 416, !26, i64 440, !26, i64 464, !10, i64 488, !10, i64 512, !30, i64 536, !44, i64 576, !44, i64 616, !51, i64 656, !51, i64 660, !51, i64 664, !51, i64 668, !51, i64 672, !51, i64 676, !51, i64 680, !51, i64 684, !51, i64 688, !52, i64 696}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt6vectorIiSaIiEE", !11, i64 0}
!11 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!14 = !{!"_ZTSSt6vectorISt4pairIijESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseISt4pairIijESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt4pairIijESaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt4pairIijESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!18 = !{!"_ZTSSt6vectorIhSaIhEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!"_ZTSSt6vectorIPiSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIPiSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIPiSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPiSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!26 = !{!"_ZTSSt6vectorIjSaIjEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!30 = !{!"_ZTS14HighsHashTableIijE", !31, i64 0, !37, i64 8, !43, i64 16, !43, i64 24, !43, i64 32}
!31 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEE", !32, i64 0}
!32 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterELb1ELb1EE", !33, i64 0}
!33 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEE", !34, i64 0}
!34 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEEE", !35, i64 0}
!35 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIijEN14HighsHashTableIijE12OpNewDeleterEEE", !36, i64 0}
!36 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIijELb0EE", !7, i64 0}
!37 = !{!"_ZTSSt10unique_ptrIA_hSt14default_deleteIS0_EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_dataIhSt14default_deleteIA_hELb1ELb1EE", !39, i64 0}
!39 = !{!"_ZTSSt15__uniq_ptr_implIhSt14default_deleteIA_hEE", !40, i64 0}
!40 = !{!"_ZTSSt5tupleIJPhSt14default_deleteIA_hEEE", !41, i64 0}
!41 = !{!"_ZTSSt11_Tuple_implILm0EJPhSt14default_deleteIA_hEEE", !42, i64 0}
!42 = !{!"_ZTSSt10_Head_baseILm0EPhLb0EE", !7, i64 0}
!43 = !{!"long", !8, i64 0}
!44 = !{!"_ZTS14HighsHashTableISt5tupleIJiijEEvE", !45, i64 0, !37, i64 8, !43, i64 16, !43, i64 24, !43, i64 32}
!45 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEE", !46, i64 0}
!46 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterELb1ELb1EE", !47, i64 0}
!47 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEE", !48, i64 0}
!48 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIS_IJiijEEvEN14HighsHashTableIS1_vE12OpNewDeleterEEE", !49, i64 0}
!49 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryISt5tupleIJiijEEvEN14HighsHashTableIS2_vE12OpNewDeleterEEE", !50, i64 0}
!50 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryISt5tupleIJiijEEvELb0EE", !7, i64 0}
!51 = !{!"int", !8, i64 0}
!52 = !{!"_ZTSSt6vectorIN22HighsSymmetryDetection4NodeESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN22HighsSymmetryDetection4NodeESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!56 = !{!57, !51, i64 208}
!57 = !{!"_ZTS15HighsSymmetries", !10, i64 0, !10, i64 24, !10, i64 48, !10, i64 72, !10, i64 96, !10, i64 120, !58, i64 144, !62, i64 168, !51, i64 208, !51, i64 212}
!58 = !{!"_ZTSSt6vectorI19HighsOrbitopeMatrixSaIS0_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseI19HighsOrbitopeMatrixSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!62 = !{!"_ZTS14HighsHashTableIiiE", !63, i64 0, !37, i64 8, !43, i64 16, !43, i64 24, !43, i64 32}
!63 = !{!"_ZTSSt10unique_ptrI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEE", !64, i64 0}
!64 = !{!"_ZTSSt15__uniq_ptr_dataI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterELb1ELb1EE", !65, i64 0}
!65 = !{!"_ZTSSt15__uniq_ptr_implI19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEE", !66, i64 0}
!66 = !{!"_ZTSSt5tupleIJP19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEEE", !67, i64 0}
!67 = !{!"_ZTSSt11_Tuple_implILm0EJP19HighsHashTableEntryIiiEN14HighsHashTableIiiE12OpNewDeleterEEE", !68, i64 0}
!68 = !{!"_ZTSSt10_Head_baseILm0EP19HighsHashTableEntryIiiELb0EE", !7, i64 0}
!69 = !{!51, !51, i64 0}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.mustprogress"}
!72 = distinct !{!72, !71}
!73 = distinct !{!73, !71}
!74 = distinct !{!74, !71}
!75 = distinct !{!75, !71}


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