; LLVM IR from ERGO-Code/HiGHS :: src/lp_data/HighsInfoDebug.ll (Z11debugNoInfoRK9HighsInfo)

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

%class.HighsInfo = type { ptr, %struct.HighsInfoStruct, %"class.std::vector.3" }
%struct.HighsInfoStruct = type { i8, i64, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, double, double, i32, double, double, double, double, double }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.InfoRecord = type <{ ptr, i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.InfoRecordInt64 = type { %class.InfoRecord.base, ptr, i64 }
%class.InfoRecord.base = type <{ ptr, i32, [4 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8 }>
%class.InfoRecordInt = type <{ %class.InfoRecord.base, [7 x i8], ptr, i32, [4 x i8] }>
%class.InfoRecordDouble = type { %class.InfoRecord.base, ptr, double }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [37 x i8], align 1
@__PRETTY_FUNCTION__._Z11debugNoInfoRK9HighsInfo = external hidden unnamed_addr constant [48 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z11debugNoInfoRK9HighsInfo(ptr noundef nonnull align 8 dereferenceable(184) %0) #2 personality ptr @__gxx_personality_v0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca %class.HighsInfo, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 184, ptr %4) #5
  call void @_ZN9HighsInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %4)
  invoke void @_ZN9HighsInfo10invalidateEv(ptr noundef nonnull align 8 dereferenceable(184) %4)
          to label %20 unwind label %32

20:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #5
  store i8 0, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  %21 = load ptr, ptr %3, align 8, !tbaa !5
  %22 = getelementptr inbounds %class.HighsInfo, ptr %21, i32 0, i32 2
  store ptr %22, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %23 = getelementptr inbounds %class.HighsInfo, ptr %4, i32 0, i32 2
  store ptr %23, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %24 = load ptr, ptr %8, align 8, !tbaa !5
  %25 = call noundef i64 @_ZNKSt6vectorIP10InfoRecordSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #5
  %26 = trunc i64 %25 to i32
  store i32 %26, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !11
  br label %27

27:                                               ; preds = %232, %20
  %28 = load i32, ptr %11, align 4, !tbaa !11
  %29 = load i32, ptr %10, align 4, !tbaa !11
  %30 = icmp slt i32 %28, %29
  br i1 %30, label %36, label %31

31:                                               ; preds = %27
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %236

32:                                               ; preds = %1
  %33 = landingpad { ptr, i32 }
          cleanup
  %34 = extractvalue { ptr, i32 } %33, 0
  store ptr %34, ptr %5, align 8
  %35 = extractvalue { ptr, i32 } %33, 1
  store i32 %35, ptr %6, align 4
  br label %261

36:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %37 = load ptr, ptr %8, align 8, !tbaa !5
  %38 = load i32, ptr %11, align 4, !tbaa !11
  %39 = sext i32 %38 to i64
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef %39) #5
  %41 = load ptr, ptr %40, align 8, !tbaa !5
  %42 = getelementptr inbounds %class.InfoRecord, ptr %41, i32 0, i32 1
  %43 = load i32, ptr %42, align 8, !tbaa !13
  store i32 %43, ptr %12, align 4, !tbaa !19
  %44 = load i32, ptr %12, align 4, !tbaa !19
  %45 = icmp eq i32 %44, -1
  br i1 %45, label %46, label %106

46:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %47 = load ptr, ptr %8, align 8, !tbaa !5
  %48 = load i32, ptr %11, align 4, !tbaa !11
  %49 = sext i32 %48 to i64
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %49) #5
  %51 = load ptr, ptr %50, align 8, !tbaa !5
  %52 = getelementptr inbounds %class.InfoRecordInt64, ptr %51, i64 0
  %53 = getelementptr inbounds %class.InfoRecordInt64, ptr %52, i32 0, i32 1
  %54 = load ptr, ptr %53, align 8, !tbaa !20
  %55 = load i64, ptr %54, align 8, !tbaa !22
  %56 = trunc i64 %55 to i32
  store i32 %56, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = load i32, ptr %11, align 4, !tbaa !11
  %59 = sext i32 %58 to i64
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %59) #5
  %61 = load ptr, ptr %60, align 8, !tbaa !5
  %62 = getelementptr inbounds %class.InfoRecordInt64, ptr %61, i64 0
  %63 = getelementptr inbounds %class.InfoRecordInt64, ptr %62, i32 0, i32 1
  %64 = load ptr, ptr %63, align 8, !tbaa !20
  %65 = load i64, ptr %64, align 8, !tbaa !22
  %66 = trunc i64 %65 to i32
  store i32 %66, ptr %14, align 4, !tbaa !11
  %67 = load i32, ptr %13, align 4, !tbaa !11
  %68 = load i32, ptr %14, align 4, !tbaa !11
  %69 = icmp ne i32 %67, %68
  br i1 %69, label %70, label %80

70:                                               ; preds = %46
  %71 = load i32, ptr %11, align 4, !tbaa !11
  %72 = load i32, ptr %13, align 4, !tbaa !11
  %73 = load i32, ptr %14, align 4, !tbaa !11
  %74 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.65, i32 noundef %71, i32 noundef %72, i32 noundef %73)
          to label %75 unwind label %76

75:                                               ; preds = %70
  br label %80

76:                                               ; preds = %70
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %5, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %235

80:                                               ; preds = %75, %46
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = load i32, ptr %11, align 4, !tbaa !11
  %83 = sext i32 %82 to i64
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %83) #5
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds %class.InfoRecordInt64, ptr %85, i64 0
  %87 = getelementptr inbounds %class.InfoRecordInt64, ptr %86, i32 0, i32 1
  %88 = load ptr, ptr %87, align 8, !tbaa !20
  %89 = load i64, ptr %88, align 8, !tbaa !22
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = load i32, ptr %11, align 4, !tbaa !11
  %92 = sext i32 %91 to i64
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %92) #5
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = getelementptr inbounds %class.InfoRecordInt64, ptr %94, i64 0
  %96 = getelementptr inbounds %class.InfoRecordInt64, ptr %95, i32 0, i32 1
  %97 = load ptr, ptr %96, align 8, !tbaa !20
  %98 = load i64, ptr %97, align 8, !tbaa !22
  %99 = icmp ne i64 %89, %98
  br i1 %99, label %103, label %100

100:                                              ; preds = %80
  %101 = load i8, ptr %7, align 1, !tbaa !9, !range !23, !noundef !24
  %102 = trunc i8 %101 to i1
  br label %103

103:                                              ; preds = %100, %80
  %104 = phi i1 [ true, %80 ], [ %102, %100 ]
  %105 = zext i1 %104 to i8
  store i8 %105, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %231

106:                                              ; preds = %36
  %107 = load i32, ptr %12, align 4, !tbaa !19
  %108 = icmp eq i32 %107, 1
  br i1 %108, label %109, label %167

109:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = load i32, ptr %11, align 4, !tbaa !11
  %112 = sext i32 %111 to i64
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %110, i64 noundef %112) #5
  %114 = load ptr, ptr %113, align 8, !tbaa !5
  %115 = getelementptr inbounds %class.InfoRecordInt, ptr %114, i64 0
  %116 = getelementptr inbounds %class.InfoRecordInt, ptr %115, i32 0, i32 2
  %117 = load ptr, ptr %116, align 8, !tbaa !25
  %118 = load i32, ptr %117, align 4, !tbaa !11
  store i32 %118, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = load i32, ptr %11, align 4, !tbaa !11
  %121 = sext i32 %120 to i64
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %121) #5
  %123 = load ptr, ptr %122, align 8, !tbaa !5
  %124 = getelementptr inbounds %class.InfoRecordInt, ptr %123, i64 0
  %125 = getelementptr inbounds %class.InfoRecordInt, ptr %124, i32 0, i32 2
  %126 = load ptr, ptr %125, align 8, !tbaa !25
  %127 = load i32, ptr %126, align 4, !tbaa !11
  store i32 %127, ptr %16, align 4, !tbaa !11
  %128 = load i32, ptr %15, align 4, !tbaa !11
  %129 = load i32, ptr %16, align 4, !tbaa !11
  %130 = icmp ne i32 %128, %129
  br i1 %130, label %131, label %141

131:                                              ; preds = %109
  %132 = load i32, ptr %11, align 4, !tbaa !11
  %133 = load i32, ptr %15, align 4, !tbaa !11
  %134 = load i32, ptr %16, align 4, !tbaa !11
  %135 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.65, i32 noundef %132, i32 noundef %133, i32 noundef %134)
          to label %136 unwind label %137

136:                                              ; preds = %131
  br label %141

137:                                              ; preds = %131
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %5, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %235

141:                                              ; preds = %136, %109
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = load i32, ptr %11, align 4, !tbaa !11
  %144 = sext i32 %143 to i64
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %142, i64 noundef %144) #5
  %146 = load ptr, ptr %145, align 8, !tbaa !5
  %147 = getelementptr inbounds %class.InfoRecordInt, ptr %146, i64 0
  %148 = getelementptr inbounds %class.InfoRecordInt, ptr %147, i32 0, i32 2
  %149 = load ptr, ptr %148, align 8, !tbaa !25
  %150 = load i32, ptr %149, align 4, !tbaa !11
  %151 = load ptr, ptr %9, align 8, !tbaa !5
  %152 = load i32, ptr %11, align 4, !tbaa !11
  %153 = sext i32 %152 to i64
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #5
  %155 = load ptr, ptr %154, align 8, !tbaa !5
  %156 = getelementptr inbounds %class.InfoRecordInt, ptr %155, i64 0
  %157 = getelementptr inbounds %class.InfoRecordInt, ptr %156, i32 0, i32 2
  %158 = load ptr, ptr %157, align 8, !tbaa !25
  %159 = load i32, ptr %158, align 4, !tbaa !11
  %160 = icmp ne i32 %150, %159
  br i1 %160, label %164, label %161

161:                                              ; preds = %141
  %162 = load i8, ptr %7, align 1, !tbaa !9, !range !23, !noundef !24
  %163 = trunc i8 %162 to i1
  br label %164

164:                                              ; preds = %161, %141
  %165 = phi i1 [ true, %141 ], [ %163, %161 ]
  %166 = zext i1 %165 to i8
  store i8 %166, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %230

167:                                              ; preds = %106
  %168 = load i32, ptr %12, align 4, !tbaa !19
  %169 = icmp eq i32 %168, 2
  br i1 %169, label %170, label %228

170:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = load i32, ptr %11, align 4, !tbaa !11
  %173 = sext i32 %172 to i64
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %173) #5
  %175 = load ptr, ptr %174, align 8, !tbaa !5
  %176 = getelementptr inbounds %class.InfoRecordDouble, ptr %175, i64 0
  %177 = getelementptr inbounds %class.InfoRecordDouble, ptr %176, i32 0, i32 1
  %178 = load ptr, ptr %177, align 8, !tbaa !27
  %179 = load double, ptr %178, align 8, !tbaa !30
  store double %179, ptr %17, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %180 = load ptr, ptr %8, align 8, !tbaa !5
  %181 = load i32, ptr %11, align 4, !tbaa !11
  %182 = sext i32 %181 to i64
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef %182) #5
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %185 = getelementptr inbounds %class.InfoRecordDouble, ptr %184, i64 0
  %186 = getelementptr inbounds %class.InfoRecordDouble, ptr %185, i32 0, i32 1
  %187 = load ptr, ptr %186, align 8, !tbaa !27
  %188 = load double, ptr %187, align 8, !tbaa !30
  store double %188, ptr %18, align 8, !tbaa !30
  %189 = load double, ptr %17, align 8, !tbaa !30
  %190 = load double, ptr %18, align 8, !tbaa !30
  %191 = fcmp une double %189, %190
  br i1 %191, label %192, label %202

192:                                              ; preds = %170
  %193 = load i32, ptr %11, align 4, !tbaa !11
  %194 = load double, ptr %17, align 8, !tbaa !30
  %195 = load double, ptr %18, align 8, !tbaa !30
  %196 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.66, i32 noundef %193, double noundef %194, double noundef %195)
          to label %197 unwind label %198

197:                                              ; preds = %192
  br label %202

198:                                              ; preds = %192
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %5, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %235

202:                                              ; preds = %197, %170
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = load i32, ptr %11, align 4, !tbaa !11
  %205 = sext i32 %204 to i64
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef %205) #5
  %207 = load ptr, ptr %206, align 8, !tbaa !5
  %208 = getelementptr inbounds %class.InfoRecordDouble, ptr %207, i64 0
  %209 = getelementptr inbounds %class.InfoRecordDouble, ptr %208, i32 0, i32 1
  %210 = load ptr, ptr %209, align 8, !tbaa !27
  %211 = load double, ptr %210, align 8, !tbaa !30
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = load i32, ptr %11, align 4, !tbaa !11
  %214 = sext i32 %213 to i64
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %214) #5
  %216 = load ptr, ptr %215, align 8, !tbaa !5
  %217 = getelementptr inbounds %class.InfoRecordDouble, ptr %216, i64 0
  %218 = getelementptr inbounds %class.InfoRecordDouble, ptr %217, i32 0, i32 1
  %219 = load ptr, ptr %218, align 8, !tbaa !27
  %220 = load double, ptr %219, align 8, !tbaa !30
  %221 = fcmp une double %211, %220
  br i1 %221, label %225, label %222

222:                                              ; preds = %202
  %223 = load i8, ptr %7, align 1, !tbaa !9, !range !23, !noundef !24
  %224 = trunc i8 %223 to i1
  br label %225

225:                                              ; preds = %222, %202
  %226 = phi i1 [ true, %202 ], [ %224, %222 ]
  %227 = zext i1 %226 to i8
  store i8 %227, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %229

228:                                              ; preds = %167
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.52, i32 noundef 167, ptr noundef @__PRETTY_FUNCTION__._Z11debugNoInfoRK9HighsInfo) #6
  unreachable

229:                                              ; preds = %225
  br label %230

230:                                              ; preds = %229, %164
  br label %231

231:                                              ; preds = %230, %103
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %232

232:                                              ; preds = %231
  %233 = load i32, ptr %11, align 4, !tbaa !11
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %11, align 4, !tbaa !11
  br label %27, !llvm.loop !31

235:                                              ; preds = %198, %137, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  br label %261

236:                                              ; preds = %31
  %237 = load ptr, ptr %3, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i64 8
  %239 = getelementptr inbounds %struct.HighsInfoStruct, ptr %238, i32 0, i32 0
  %240 = load i8, ptr %239, align 8, !tbaa !33, !range !23, !noundef !24
  %241 = trunc i8 %240 to i1
  %242 = zext i1 %241 to i32
  %243 = getelementptr inbounds i8, ptr %4, i64 8
  %244 = getelementptr inbounds %struct.HighsInfoStruct, ptr %243, i32 0, i32 0
  %245 = load i8, ptr %244, align 8, !tbaa !33, !range !23, !noundef !24
  %246 = trunc i8 %245 to i1
  %247 = zext i1 %246 to i32
  %248 = icmp ne i32 %242, %247
  br i1 %248, label %252, label %249

249:                                              ; preds = %236
  %250 = load i8, ptr %7, align 1, !tbaa !9, !range !23, !noundef !24
  %251 = trunc i8 %250 to i1
  br label %252

252:                                              ; preds = %249, %236
  %253 = phi i1 [ true, %236 ], [ %251, %249 ]
  %254 = zext i1 %253 to i8
  store i8 %254, ptr %7, align 1, !tbaa !9
  %255 = load i8, ptr %7, align 1, !tbaa !9, !range !23, !noundef !24
  %256 = trunc i8 %255 to i1
  br i1 %256, label %257, label %258

257:                                              ; preds = %252
  store i32 6, ptr %2, align 4
  store i32 1, ptr %19, align 4
  br label %259

258:                                              ; preds = %252
  store i32 0, ptr %2, align 4
  store i32 1, ptr %19, align 4
  br label %259

259:                                              ; preds = %258, %257
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #5
  call void @_ZN9HighsInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %4) #5
  call void @llvm.lifetime.end.p0(i64 184, ptr %4) #5
  %260 = load i32, ptr %2, align 4
  ret i32 %260

261:                                              ; preds = %235, %32
  call void @_ZN9HighsInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %4) #5
  call void @llvm.lifetime.end.p0(i64 184, ptr %4) #5
  br label %262

262:                                              ; preds = %261
  %263 = load ptr, ptr %5, align 8
  %264 = load i32, ptr %6, align 4
  %265 = insertvalue { ptr, i32 } poison, ptr %263, 0
  %266 = insertvalue { ptr, i32 } %265, i32 %264, 1
  resume { ptr, i32 } %266
}

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

declare void @_ZN9HighsInfo10invalidateEv(ptr noundef nonnull align 8 dereferenceable(184)) #3

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { 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, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !15, i64 8}
!14 = !{!"_ZTS10InfoRecord", !15, i64 8, !16, i64 16, !16, i64 48, !10, i64 80}
!15 = !{!"_ZTS13HighsInfoType", !7, i64 0}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !18, i64 8, !7, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!15, !15, i64 0}
!20 = !{!21, !6, i64 88}
!21 = !{!"_ZTS15InfoRecordInt64", !14, i64 0, !6, i64 88, !18, i64 96}
!22 = !{!18, !18, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!26, !6, i64 88}
!26 = !{!"_ZTS13InfoRecordInt", !14, i64 0, !6, i64 88, !12, i64 96}
!27 = !{!28, !6, i64 88}
!28 = !{!"_ZTS16InfoRecordDouble", !14, i64 0, !6, i64 88, !29, i64 96}
!29 = !{!"double", !7, i64 0}
!30 = !{!29, !29, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !10, i64 0}
!34 = !{!"_ZTS15HighsInfoStruct", !10, i64 0, !18, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !29, i64 48, !29, i64 56, !29, i64 64, !29, i64 72, !12, i64 80, !29, i64 88, !29, i64 96, !12, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144}


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

%class.HighsInfo = type { ptr, %struct.HighsInfoStruct, %"class.std::vector.3" }
%struct.HighsInfoStruct = type { i8, i64, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, double, double, i32, double, double, double, double, double }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl" = type { %"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InfoRecord *, std::allocator<InfoRecord *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [37 x i8], align 1
@__PRETTY_FUNCTION__._Z11debugNoInfoRK9HighsInfo = external hidden unnamed_addr constant [48 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 7) i32 @_Z11debugNoInfoRK9HighsInfo(ptr noundef nonnull align 8 dereferenceable(184) %0) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %class.HighsInfo, align 8
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %2) #6
  call void @_ZN9HighsInfoC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %2)
  invoke void @_ZN9HighsInfo10invalidateEv(ptr noundef nonnull align 8 dereferenceable(184) %2)
          to label %3 unwind label %15

3:                                                ; preds = %1
  %4 = getelementptr inbounds i8, ptr %0, i64 160
  %5 = getelementptr inbounds i8, ptr %2, i64 160
  %6 = call noundef i64 @_ZNKSt6vectorIP10InfoRecordSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %7 = trunc i64 %6 to i32
  %8 = icmp sgt i32 %7, 0
  br i1 %8, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %3
  %wide.trip.count = and i64 %6, 2147483647
  br label %.lr.ph

._crit_edge:                                      ; preds = %101, %3
  %.057.lcssa = phi i1 [ false, %3 ], [ %102, %101 ]
  %9 = getelementptr inbounds i8, ptr %0, i64 8
  %10 = load i8, ptr %9, align 8, !tbaa !5, !range !13, !noundef !14
  %11 = getelementptr inbounds i8, ptr %2, i64 8
  %12 = load i8, ptr %11, align 8, !tbaa !5, !range !13, !noundef !14
  %13 = icmp ne i8 %10, %12
  %14 = select i1 %13, i1 true, i1 %.057.lcssa
  %. = select i1 %14, i32 6, i32 0
  call void @_ZN9HighsInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %2) #6
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %2) #6
  ret i32 %.

15:                                               ; preds = %1
  %16 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9HighsInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %2) #6
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %2) #6
  resume { ptr, i32 } %16

.lr.ph:                                           ; preds = %.lr.ph.preheader, %101
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %101 ]
  %.05772 = phi i1 [ false, %.lr.ph.preheader ], [ %102, %101 ]
  %17 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %18 = load ptr, ptr %17, align 8, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %18, i64 8
  %20 = load i32, ptr %19, align 8, !tbaa !17
  switch i32 %20, label %100 [
    i32 -1, label %21
    i32 1, label %48
    i32 2, label %73
  ]

21:                                               ; preds = %.lr.ph
  %22 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %23 = load ptr, ptr %22, align 8, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %23, i64 88
  %25 = load ptr, ptr %24, align 8, !tbaa !22
  %26 = load i64, ptr %25, align 8, !tbaa !24
  %27 = trunc i64 %26 to i32
  %28 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %29 = load ptr, ptr %28, align 8, !tbaa !15
  %30 = getelementptr inbounds i8, ptr %29, i64 88
  %31 = load ptr, ptr %30, align 8, !tbaa !22
  %32 = load i64, ptr %31, align 8, !tbaa !24
  %33 = trunc i64 %32 to i32
  %.not67 = icmp eq i32 %27, %33
  br i1 %.not67, label %37, label %34

34:                                               ; preds = %21
  %35 = trunc nuw nsw i64 %indvars.iv to i32
  %36 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i32 noundef %35, i32 noundef %27, i32 noundef %33)
  br label %37

37:                                               ; preds = %34, %21
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %39 = load ptr, ptr %38, align 8, !tbaa !15
  %40 = getelementptr inbounds i8, ptr %39, i64 88
  %41 = load ptr, ptr %40, align 8, !tbaa !22
  %42 = load i64, ptr %41, align 8, !tbaa !24
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #6
  %44 = load ptr, ptr %43, align 8, !tbaa !15
  %45 = getelementptr inbounds i8, ptr %44, i64 88
  %46 = load ptr, ptr %45, align 8, !tbaa !22
  %47 = load i64, ptr %46, align 8, !tbaa !24
  %.not68 = icmp ne i64 %42, %47
  br label %101

48:                                               ; preds = %.lr.ph
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %50 = load ptr, ptr %49, align 8, !tbaa !15
  %51 = getelementptr inbounds i8, ptr %50, i64 88
  %52 = load ptr, ptr %51, align 8, !tbaa !25
  %53 = load i32, ptr %52, align 4, !tbaa !27
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %55 = load ptr, ptr %54, align 8, !tbaa !15
  %56 = getelementptr inbounds i8, ptr %55, i64 88
  %57 = load ptr, ptr %56, align 8, !tbaa !25
  %58 = load i32, ptr %57, align 4, !tbaa !27
  %.not = icmp eq i32 %53, %58
  br i1 %.not, label %62, label %59

59:                                               ; preds = %48
  %60 = trunc nuw nsw i64 %indvars.iv to i32
  %61 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65, i32 noundef %60, i32 noundef %53, i32 noundef %58)
  br label %62

62:                                               ; preds = %59, %48
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %64 = load ptr, ptr %63, align 8, !tbaa !15
  %65 = getelementptr inbounds i8, ptr %64, i64 88
  %66 = load ptr, ptr %65, align 8, !tbaa !25
  %67 = load i32, ptr %66, align 4, !tbaa !27
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #6
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = getelementptr inbounds i8, ptr %69, i64 88
  %71 = load ptr, ptr %70, align 8, !tbaa !25
  %72 = load i32, ptr %71, align 4, !tbaa !27
  %.not66 = icmp ne i32 %67, %72
  br label %101

73:                                               ; preds = %.lr.ph
  %74 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %75 = load ptr, ptr %74, align 8, !tbaa !15
  %76 = getelementptr inbounds i8, ptr %75, i64 88
  %77 = load ptr, ptr %76, align 8, !tbaa !28
  %78 = load double, ptr %77, align 8, !tbaa !30
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %80 = load ptr, ptr %79, align 8, !tbaa !15
  %81 = getelementptr inbounds i8, ptr %80, i64 88
  %82 = load ptr, ptr %81, align 8, !tbaa !28
  %83 = load double, ptr %82, align 8, !tbaa !30
  %84 = fcmp une double %78, %83
  br i1 %84, label %85, label %88

85:                                               ; preds = %73
  %86 = trunc nuw nsw i64 %indvars.iv to i32
  %87 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.66, i32 noundef %86, double noundef %78, double noundef %83)
  br label %88

88:                                               ; preds = %85, %73
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv) #6
  %90 = load ptr, ptr %89, align 8, !tbaa !15
  %91 = getelementptr inbounds i8, ptr %90, i64 88
  %92 = load ptr, ptr %91, align 8, !tbaa !28
  %93 = load double, ptr %92, align 8, !tbaa !30
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIP10InfoRecordSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv) #6
  %95 = load ptr, ptr %94, align 8, !tbaa !15
  %96 = getelementptr inbounds i8, ptr %95, i64 88
  %97 = load ptr, ptr %96, align 8, !tbaa !28
  %98 = load double, ptr %97, align 8, !tbaa !30
  %99 = fcmp une double %93, %98
  br label %101

100:                                              ; preds = %.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.52, i32 noundef 167, ptr noundef nonnull @__PRETTY_FUNCTION__._Z11debugNoInfoRK9HighsInfo) #7
  unreachable

101:                                              ; preds = %62, %88, %37
  %.not66.sink = phi i1 [ %.not66, %62 ], [ %99, %88 ], [ %.not68, %37 ]
  %102 = select i1 %.not66.sink, i1 true, i1 %.05772
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !31
}

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

declare void @_ZN9HighsInfo10invalidateEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #3

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !7, i64 0}
!6 = !{!"_ZTS15HighsInfoStruct", !7, i64 0, !10, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !11, i64 80, !12, i64 88, !12, i64 96, !11, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"double", !8, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!18, !19, i64 8}
!18 = !{!"_ZTS10InfoRecord", !19, i64 8, !20, i64 16, !20, i64 48, !7, i64 80}
!19 = !{!"_ZTS13HighsInfoType", !8, i64 0}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !10, i64 8, !8, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!22 = !{!23, !16, i64 88}
!23 = !{!"_ZTS15InfoRecordInt64", !18, i64 0, !16, i64 88, !10, i64 96}
!24 = !{!10, !10, i64 0}
!25 = !{!26, !16, i64 88}
!26 = !{!"_ZTS13InfoRecordInt", !18, i64 0, !16, i64 88, !11, i64 96}
!27 = !{!11, !11, i64 0}
!28 = !{!29, !16, i64 88}
!29 = !{!"_ZTS16InfoRecordDouble", !18, i64 0, !16, i64 88, !12, i64 96}
!30 = !{!12, !12, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass