; LLVM IR from simbody/simbody :: SimTKmath/Optimizers/src/IpOpt (IpLimMemQuasiNewtonUpdater)

; 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.SimTKIpopt::LimMemQuasiNewtonUpdater" = type { %"class.SimTKIpopt::HessianUpdater.base", %"class.SimTKIpopt::SmartPtr.20", i32, i32, i32, double, i32, double, double, i8, double, %"class.SimTKIpopt::SmartPtr.21", i32, %"class.SimTKIpopt::SmartPtr.21", double, i8, i32, i32, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.23", %"class.SimTKIpopt::SmartPtr.24", %"class.SimTKIpopt::SmartPtr.25", double, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.26", i8, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.26", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr.21", %"class.SimTKIpopt::SmartPtr.27", %"class.SimTKIpopt::SmartPtr.27", i32, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.23", %"class.SimTKIpopt::SmartPtr.24", %"class.SimTKIpopt::SmartPtr.25", double, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.26", i8, %"class.SimTKIpopt::SmartPtr.22", %"class.SimTKIpopt::SmartPtr.26" }
%"class.SimTKIpopt::HessianUpdater.base" = type { %"class.SimTKIpopt::AlgorithmStrategyObject.base" }
%"class.SimTKIpopt::AlgorithmStrategyObject.base" = type <{ %"class.SimTKIpopt::ReferencedObject.base", [4 x i8], %"class.SimTKIpopt::SmartPtr.16", %"class.SimTKIpopt::SmartPtr.17", %"class.SimTKIpopt::SmartPtr.18", %"class.SimTKIpopt::SmartPtr.19", i8 }>
%"class.SimTKIpopt::ReferencedObject.base" = type <{ ptr, i32 }>
%"class.SimTKIpopt::SmartPtr.16" = type { ptr }
%"class.SimTKIpopt::SmartPtr.17" = type { ptr }
%"class.SimTKIpopt::SmartPtr.18" = type { ptr }
%"class.SimTKIpopt::SmartPtr.19" = type { ptr }
%"class.SimTKIpopt::SmartPtr.20" = type { ptr }
%"class.SimTKIpopt::SmartPtr.21" = type { ptr }
%"class.SimTKIpopt::SmartPtr.27" = type { ptr }
%"class.SimTKIpopt::SmartPtr.23" = type { ptr }
%"class.SimTKIpopt::SmartPtr.24" = type { ptr }
%"class.SimTKIpopt::SmartPtr.25" = type { ptr }
%"class.SimTKIpopt::SmartPtr.22" = type { ptr }
%"class.SimTKIpopt::SmartPtr.26" = type { ptr }

@_ZTVN10SimTKIpopt24LimMemQuasiNewtonUpdaterE = external dso_local unnamed_addr constant { [6 x ptr] }, align 8

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt24LimMemQuasiNewtonUpdaterC2Eb(ptr noundef nonnull align 8 dereferenceable(424) %0, i1 noundef zeroext %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %7 = zext i1 %1 to i8
  store i8 %7, ptr %4, align 1, !tbaa !9
  %8 = load ptr, ptr %3, align 8
  call void @_ZN10SimTKIpopt14HessianUpdaterC2Ev(ptr noundef nonnull align 8 dereferenceable(49) %8)
  store ptr getelementptr inbounds inrange(-16, 32) ({ [6 x ptr] }, ptr @_ZTVN10SimTKIpopt24LimMemQuasiNewtonUpdaterE, i32 0, i32 0, i32 2), ptr %8, align 8, !tbaa !11
  %9 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 1
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_27LowRankUpdateSymMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %10 unwind label %73

10:                                               ; preds = %2
  %11 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 7
  store double 1.000000e-08, ptr %11, align 8, !tbaa !13
  %12 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 8
  store double 1.000000e+08, ptr %12, align 8, !tbaa !34
  %13 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 9
  %14 = load i8, ptr %4, align 1, !tbaa !9, !range !35, !noundef !36
  %15 = trunc i8 %14 to i1
  %16 = zext i1 %15 to i8
  store i8 %16, ptr %13, align 8, !tbaa !37
  %17 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 11
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %18 unwind label %77

18:                                               ; preds = %10
  %19 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 13
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %20 unwind label %81

20:                                               ; preds = %18
  %21 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 18
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %22 unwind label %85

22:                                               ; preds = %20
  %23 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 19
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %24 unwind label %89

24:                                               ; preds = %22
  %25 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 20
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %26 unwind label %93

26:                                               ; preds = %24
  %27 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 21
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %28 unwind label %97

28:                                               ; preds = %26
  %29 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 22
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %30 unwind label %101

30:                                               ; preds = %28
  %31 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 23
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %32 unwind label %105

32:                                               ; preds = %30
  %33 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 25
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %34 unwind label %109

34:                                               ; preds = %32
  %35 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 26
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %36 unwind label %113

36:                                               ; preds = %34
  %37 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 27
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %38 unwind label %117

38:                                               ; preds = %36
  %39 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 29
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %40 unwind label %121

40:                                               ; preds = %38
  %41 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 30
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %42 unwind label %125

42:                                               ; preds = %40
  %43 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 31
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %44 unwind label %129

44:                                               ; preds = %42
  %45 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 32
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %46 unwind label %133

46:                                               ; preds = %44
  %47 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 33
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %48 unwind label %137

48:                                               ; preds = %46
  %49 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 34
  invoke void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %50 unwind label %141

50:                                               ; preds = %48
  %51 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 36
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %52 unwind label %145

52:                                               ; preds = %50
  %53 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 37
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %54 unwind label %149

54:                                               ; preds = %52
  %55 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 38
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %56 unwind label %153

56:                                               ; preds = %54
  %57 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 39
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %58 unwind label %157

58:                                               ; preds = %56
  %59 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 40
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %60 unwind label %161

60:                                               ; preds = %58
  %61 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 41
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %62 unwind label %165

62:                                               ; preds = %60
  %63 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 43
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %64 unwind label %169

64:                                               ; preds = %62
  %65 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 44
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %66 unwind label %173

66:                                               ; preds = %64
  %67 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 45
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %68 unwind label %177

68:                                               ; preds = %66
  %69 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 47
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %70 unwind label %181

70:                                               ; preds = %68
  %71 = getelementptr inbounds %"class.SimTKIpopt::LimMemQuasiNewtonUpdater", ptr %8, i32 0, i32 48
  invoke void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %72 unwind label %185

72:                                               ; preds = %70
  ret void

73:                                               ; preds = %2
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %5, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %6, align 4
  br label %216

77:                                               ; preds = %10
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %5, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %6, align 4
  br label %215

81:                                               ; preds = %18
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %5, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %6, align 4
  br label %214

85:                                               ; preds = %20
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %5, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %6, align 4
  br label %213

89:                                               ; preds = %22
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %5, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %6, align 4
  br label %212

93:                                               ; preds = %24
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %5, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %6, align 4
  br label %211

97:                                               ; preds = %26
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %5, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %6, align 4
  br label %210

101:                                              ; preds = %28
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %5, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %6, align 4
  br label %209

105:                                              ; preds = %30
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %5, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %6, align 4
  br label %208

109:                                              ; preds = %32
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %5, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %6, align 4
  br label %207

113:                                              ; preds = %34
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %5, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %6, align 4
  br label %206

117:                                              ; preds = %36
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %5, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %6, align 4
  br label %205

121:                                              ; preds = %38
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %5, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %6, align 4
  br label %204

125:                                              ; preds = %40
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %5, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %6, align 4
  br label %203

129:                                              ; preds = %42
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %5, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %6, align 4
  br label %202

133:                                              ; preds = %44
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %5, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %6, align 4
  br label %201

137:                                              ; preds = %46
  %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
  br label %200

141:                                              ; preds = %48
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %5, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %6, align 4
  br label %199

145:                                              ; preds = %50
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %5, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %6, align 4
  br label %198

149:                                              ; preds = %52
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %5, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %6, align 4
  br label %197

153:                                              ; preds = %54
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %5, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %6, align 4
  br label %196

157:                                              ; preds = %56
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %5, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %6, align 4
  br label %195

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

165:                                              ; preds = %60
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %5, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %6, align 4
  br label %193

169:                                              ; preds = %62
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %5, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %6, align 4
  br label %192

173:                                              ; preds = %64
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %5, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %6, align 4
  br label %191

177:                                              ; preds = %66
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %5, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %6, align 4
  br label %190

181:                                              ; preds = %68
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %5, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %6, align 4
  br label %189

185:                                              ; preds = %70
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %5, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %6, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #2
  br label %189

189:                                              ; preds = %185, %181
  call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #2
  br label %190

190:                                              ; preds = %189, %177
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #2
  br label %191

191:                                              ; preds = %190, %173
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #2
  br label %192

192:                                              ; preds = %191, %169
  call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #2
  br label %193

193:                                              ; preds = %192, %165
  call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #2
  br label %194

194:                                              ; preds = %193, %161
  call void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #2
  br label %195

195:                                              ; preds = %194, %157
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #2
  br label %196

196:                                              ; preds = %195, %153
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #2
  br label %197

197:                                              ; preds = %196, %149
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #2
  br label %198

198:                                              ; preds = %197, %145
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #2
  br label %199

199:                                              ; preds = %198, %141
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #2
  br label %200

200:                                              ; preds = %199, %137
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #2
  br label %201

201:                                              ; preds = %200, %133
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #2
  br label %202

202:                                              ; preds = %201, %129
  call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #2
  br label %203

203:                                              ; preds = %202, %125
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #2
  br label %204

204:                                              ; preds = %203, %121
  call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #2
  br label %205

205:                                              ; preds = %204, %117
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #2
  br label %206

206:                                              ; preds = %205, %113
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #2
  br label %207

207:                                              ; preds = %206, %109
  call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #2
  br label %208

208:                                              ; preds = %207, %105
  call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #2
  br label %209

209:                                              ; preds = %208, %101
  call void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #2
  br label %210

210:                                              ; preds = %209, %97
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #2
  br label %211

211:                                              ; preds = %210, %93
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #2
  br label %212

212:                                              ; preds = %211, %89
  call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #2
  br label %213

213:                                              ; preds = %212, %85
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #2
  br label %214

214:                                              ; preds = %213, %81
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #2
  br label %215

215:                                              ; preds = %214, %77
  call void @_ZN10SimTKIpopt8SmartPtrIKNS_27LowRankUpdateSymMatrixSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #2
  br label %216

216:                                              ; preds = %215, %73
  call void @_ZN10SimTKIpopt23AlgorithmStrategyObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %8) #2
  br label %217

217:                                              ; preds = %216
  %218 = load ptr, ptr %5, align 8
  %219 = load i32, ptr %6, align 4
  %220 = insertvalue { ptr, i32 } poison, ptr %218, 0
  %221 = insertvalue { ptr, i32 } %220, i32 %219, 1
  resume { ptr, i32 } %221
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { 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 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !26, i64 96}
!14 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdaterE", !15, i64 0, !23, i64 56, !18, i64 64, !24, i64 68, !25, i64 72, !26, i64 80, !18, i64 88, !26, i64 96, !26, i64 104, !10, i64 112, !26, i64 120, !27, i64 128, !18, i64 136, !27, i64 144, !26, i64 152, !10, i64 160, !18, i64 164, !18, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !29, i64 200, !30, i64 208, !31, i64 216, !26, i64 224, !28, i64 232, !28, i64 240, !32, i64 248, !10, i64 256, !28, i64 264, !32, i64 272, !27, i64 280, !27, i64 288, !33, i64 296, !33, i64 304, !18, i64 312, !28, i64 320, !28, i64 328, !28, i64 336, !29, i64 344, !30, i64 352, !31, i64 360, !26, i64 368, !28, i64 376, !28, i64 384, !32, i64 392, !10, i64 400, !28, i64 408, !32, i64 416}
!15 = !{!"_ZTSN10SimTKIpopt14HessianUpdaterE", !16, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !17, i64 0, !19, i64 16, !20, i64 24, !21, i64 32, !22, i64 40, !10, i64 48}
!17 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !18, i64 8}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !6, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !6, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !6, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_27LowRankUpdateSymMatrixSpaceEEE", !6, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdater12LMUpdateTypeE", !7, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdater16LMInitializationE", !7, i64 0}
!26 = !{!"double", !7, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6VectorEEE", !6, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEE", !6, i64 0}
!29 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_11DenseVectorEEE", !6, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEE", !6, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_6VectorEEE", !6, i64 0}
!32 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEE", !6, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6MatrixEEE", !6, i64 0}
!34 = !{!14, !26, i64 104}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!14, !10, i64 112}


; 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"

@_ZTVN10SimTKIpopt24LimMemQuasiNewtonUpdaterE = external dso_local unnamed_addr constant { [6 x ptr] }, align 8

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SimTKIpopt24LimMemQuasiNewtonUpdaterC2Eb(ptr noundef nonnull align 8 dereferenceable(424) %0, i1 noundef zeroext %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = zext i1 %1 to i8
  tail call void @_ZN10SimTKIpopt14HessianUpdaterC2Ev(ptr noundef nonnull align 8 dereferenceable(49) %0)
  store ptr getelementptr inbounds inrange(-16, 32) (i8, ptr @_ZTVN10SimTKIpopt24LimMemQuasiNewtonUpdaterE, i64 16), ptr %0, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 56
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_27LowRankUpdateSymMatrixSpaceEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %5 = getelementptr inbounds i8, ptr %0, i64 96
  store <2 x double> <double 1.000000e-08, double 1.000000e+08>, ptr %5, align 8, !tbaa !8
  %6 = getelementptr inbounds i8, ptr %0, i64 112
  store i8 %3, ptr %6, align 8, !tbaa !11
  %7 = getelementptr inbounds i8, ptr %0, i64 128
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
  %8 = getelementptr inbounds i8, ptr %0, i64 144
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %9 = getelementptr inbounds i8, ptr %0, i64 176
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  %10 = getelementptr inbounds i8, ptr %0, i64 184
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %11 = getelementptr inbounds i8, ptr %0, i64 192
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %12 = getelementptr inbounds i8, ptr %0, i64 200
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
  %13 = getelementptr inbounds i8, ptr %0, i64 208
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
  %14 = getelementptr inbounds i8, ptr %0, i64 216
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %15 = getelementptr inbounds i8, ptr %0, i64 232
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
  %16 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
  %17 = getelementptr inbounds i8, ptr %0, i64 248
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
  %18 = getelementptr inbounds i8, ptr %0, i64 264
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %19 = getelementptr inbounds i8, ptr %0, i64 272
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19)
  %20 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
  %21 = getelementptr inbounds i8, ptr %0, i64 288
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %22 = getelementptr inbounds i8, ptr %0, i64 296
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  %23 = getelementptr inbounds i8, ptr %0, i64 304
  tail call void @_ZN10SimTKIpopt8SmartPtrIKNS_6MatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %24 = getelementptr inbounds i8, ptr %0, i64 320
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %25 = getelementptr inbounds i8, ptr %0, i64 328
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  %26 = getelementptr inbounds i8, ptr %0, i64 336
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %27 = getelementptr inbounds i8, ptr %0, i64 344
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_11DenseVectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
  %28 = getelementptr inbounds i8, ptr %0, i64 352
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %29 = getelementptr inbounds i8, ptr %0, i64 360
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_6VectorEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
  %30 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
  %31 = getelementptr inbounds i8, ptr %0, i64 384
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31)
  %32 = getelementptr inbounds i8, ptr %0, i64 392
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
  %33 = getelementptr inbounds i8, ptr %0, i64 408
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %34 = getelementptr inbounds i8, ptr %0, i64 416
  tail call void @_ZN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34)
  ret void
}

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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" }

!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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !22, i64 112}
!12 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdaterE", !13, i64 0, !23, i64 56, !16, i64 64, !24, i64 68, !25, i64 72, !9, i64 80, !16, i64 88, !9, i64 96, !9, i64 104, !22, i64 112, !9, i64 120, !26, i64 128, !16, i64 136, !26, i64 144, !9, i64 152, !22, i64 160, !16, i64 164, !16, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !28, i64 200, !29, i64 208, !30, i64 216, !9, i64 224, !27, i64 232, !27, i64 240, !31, i64 248, !22, i64 256, !27, i64 264, !31, i64 272, !26, i64 280, !26, i64 288, !32, i64 296, !32, i64 304, !16, i64 312, !27, i64 320, !27, i64 328, !27, i64 336, !28, i64 344, !29, i64 352, !30, i64 360, !9, i64 368, !27, i64 376, !27, i64 384, !31, i64 392, !22, i64 400, !27, i64 408, !31, i64 416}
!13 = !{!"_ZTSN10SimTKIpopt14HessianUpdaterE", !14, i64 0}
!14 = !{!"_ZTSN10SimTKIpopt23AlgorithmStrategyObjectE", !15, i64 0, !17, i64 16, !19, i64 24, !20, i64 32, !21, i64 40, !22, i64 48}
!15 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !16, i64 8}
!16 = !{!"int", !10, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !18, i64 0}
!18 = !{!"any pointer", !10, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_8IpoptNLPEEE", !18, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_9IpoptDataEEE", !18, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_25IpoptCalculatedQuantitiesEEE", !18, i64 0}
!22 = !{!"bool", !10, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_27LowRankUpdateSymMatrixSpaceEEE", !18, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdater12LMUpdateTypeE", !10, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt24LimMemQuasiNewtonUpdater16LMInitializationE", !10, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6VectorEEE", !18, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_17MultiVectorMatrixEEE", !18, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_11DenseVectorEEE", !18, i64 0}
!29 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14DenseGenMatrixEEE", !18, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_6VectorEEE", !18, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_14DenseSymMatrixEEE", !18, i64 0}
!32 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_6MatrixEEE", !18, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InstCombinePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass