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

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

%"class.std::__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.std::allocator.11" = type { i8 }
%"class.SimTKIpopt::SmartPtr.29" = type { ptr }
%"class.SimTKIpopt::TNLPAdapter" = type { %"class.SimTKIpopt::NLP.base", %"class.SimTKIpopt::SmartPtr.6", %"class.SimTKIpopt::SmartPtr.7", double, double, i32, i32, double, double, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr.5", %"class.SimTKIpopt::SmartPtr.8", ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, %"class.SimTKIpopt::SmartPtr.9", %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.9", %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.9", %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.9", %"class.SimTKIpopt::SmartPtr.10", %"class.SimTKIpopt::SmartPtr.9", ptr, ptr, ptr }
%"class.SimTKIpopt::NLP.base" = type { %"class.SimTKIpopt::ReferencedObject.base" }
%"class.SimTKIpopt::ReferencedObject.base" = type <{ ptr, i32 }>
%"class.SimTKIpopt::SmartPtr.6" = type { ptr }
%"class.SimTKIpopt::SmartPtr.7" = type { ptr }
%"class.SimTKIpopt::SmartPtr" = type { ptr }
%"class.SimTKIpopt::SmartPtr.5" = type { ptr }
%"class.SimTKIpopt::SmartPtr.8" = type { ptr }
%"class.SimTKIpopt::SmartPtr.10" = type { ptr }
%"class.SimTKIpopt::SmartPtr.9" = type { ptr }

@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10SimTKIpopt14OPTION_INVALIDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZTIN10SimTKIpopt17INVALID_WARMSTARTE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.46 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [60 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: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3 align 2

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

declare void @__cxa_free_exception(ptr)

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter9GetSpacesERNS_8SmartPtrIKNS_11VectorSpaceEEES5_S5_S5_RNS1_IKNS_11MatrixSpaceEEES5_S9_S5_S9_S5_S9_S9_S9_RNS1_IKNS_14SymMatrixSpaceEEE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %16 = alloca i1, align 1
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.11", align 1
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.11", align 1
  %41 = alloca i1, align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.11", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator.11", align 1
  %51 = alloca i1, align 1
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca i32, align 4
  %67 = alloca [256 x i8], align 16
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.11", align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.11", align 1
  %72 = alloca i1, align 1
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca i32, align 4
  %86 = alloca [256 x i8], align 16
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.11", align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.11", align 1
  %91 = alloca i1, align 1
  %92 = alloca %"class.SimTKIpopt::SmartPtr.29", align 8
  %93 = alloca %"class.SimTKIpopt::SmartPtr.29", align 8
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca i32, align 4
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca ptr, align 8
  %112 = alloca ptr, align 8
  %113 = alloca ptr, align 8
  %114 = alloca ptr, align 8
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca ptr, align 8
  %122 = alloca ptr, align 8
  %123 = alloca ptr, align 8
  %124 = alloca ptr, align 8
  %125 = alloca i8, align 1
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::allocator.11", align 1
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::allocator.11", align 1
  %130 = alloca i1, align 1
  %131 = alloca i32, align 4
  %132 = alloca ptr, align 8
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca i32, align 4
  %136 = alloca i32, align 4
  %137 = alloca i32, align 4
  %138 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  %139 = load ptr, ptr %17, align 8
  %140 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 6
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %157

143:                                              ; preds = %15
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  %144 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 6
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = call noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter16CheckDerivativesENS0_18DerivativeTestEnumE(ptr noundef nonnull align 8 dereferenceable(400) %139, i32 noundef %145)
  %147 = zext i1 %146 to i8
  store i8 %147, ptr %32, align 1, !tbaa !27
  %148 = load i8, ptr %32, align 1, !tbaa !27, !range !28, !noundef !29
  %149 = trunc i8 %148 to i1
  br i1 %149, label %153, label %150

150:                                              ; preds = %143
  %151 = load i8, ptr %32, align 1, !tbaa !27, !range !28, !noundef !29
  %152 = trunc i8 %151 to i1
  store i1 %152, ptr %16, align 1
  store i32 1, ptr %33, align 4
  br label %154

153:                                              ; preds = %143
  store i32 0, ptr %33, align 4
  br label %154

154:                                              ; preds = %153, %150
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  %155 = load i32, ptr %33, align 4
  switch i32 %155, label %1873 [
    i32 0, label %156
    i32 1, label %1866
  ]

156:                                              ; preds = %154
  br label %157

157:                                              ; preds = %156, %15
  %158 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 10
  %159 = load i8, ptr %158, align 1, !tbaa !30, !range !28, !noundef !29
  %160 = trunc i8 %159 to i1
  br i1 %160, label %161, label %209

161:                                              ; preds = %157
  %162 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 36
  %163 = load ptr, ptr %162, align 8, !tbaa !31
  %164 = icmp ne ptr %163, null
  br i1 %164, label %202, label %165

165:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %166 unwind label %175

166:                                              ; preds = %165
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  %167 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.1)
          to label %168 unwind label %179

168:                                              ; preds = %166
  %169 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.45)
          to label %170 unwind label %179

170:                                              ; preds = %168
  store i1 true, ptr %41, align 1
  %171 = call ptr @__cxa_allocate_exception(i64 112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %172 unwind label %183

172:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %173 unwind label %187

173:                                              ; preds = %172
  invoke void @_ZN10SimTKIpopt17INVALID_WARMSTARTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %171, ptr noundef %38, ptr noundef %39, i32 noundef 203)
          to label %174 unwind label %191

174:                                              ; preds = %173
  store i1 false, ptr %41, align 1
  invoke void @__cxa_throw(ptr %171, ptr @_ZTIN10SimTKIpopt17INVALID_WARMSTARTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %1873 unwind label %191

175:                                              ; preds = %165
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %36, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %37, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %201

179:                                              ; preds = %168, %166
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %36, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %37, align 4
  br label %200

183:                                              ; preds = %170
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %36, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %37, align 4
  br label %196

187:                                              ; preds = %172
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %36, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %37, align 4
  br label %195

191:                                              ; preds = %174, %173
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %36, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %195

195:                                              ; preds = %191, %187
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %196

196:                                              ; preds = %195, %183
  %197 = load i1, ptr %41, align 1
  br i1 %197, label %198, label %199

198:                                              ; preds = %196
  call void @__cxa_free_exception(ptr %171) #9
  br label %199

199:                                              ; preds = %198, %196
  br label %200

200:                                              ; preds = %199, %179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  br label %201

201:                                              ; preds = %200, %175
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %1868

202:                                              ; preds = %161
  %203 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %204 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %203)
  br i1 %204, label %205, label %208

205:                                              ; preds = %202
  %206 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %207 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %206)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %207, i32 noundef 5, i32 noundef 3, ptr noundef @.str.46)
  br label %208

208:                                              ; preds = %205, %202
  br label %250

209:                                              ; preds = %157
  %210 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 36
  %211 = load ptr, ptr %210, align 8, !tbaa !31
  %212 = icmp eq ptr %211, null
  br i1 %212, label %214, label %213

213:                                              ; preds = %209
  call void @_ZdaPv(ptr noundef %211) #11
  br label %214

214:                                              ; preds = %213, %209
  %215 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 37
  %216 = load ptr, ptr %215, align 8, !tbaa !32
  %217 = icmp eq ptr %216, null
  br i1 %217, label %219, label %218

218:                                              ; preds = %214
  call void @_ZdaPv(ptr noundef %216) #11
  br label %219

219:                                              ; preds = %218, %214
  %220 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 38
  %221 = load ptr, ptr %220, align 8, !tbaa !33
  %222 = icmp eq ptr %221, null
  br i1 %222, label %224, label %223

223:                                              ; preds = %219
  call void @_ZdaPv(ptr noundef %221) #11
  br label %224

224:                                              ; preds = %223, %219
  %225 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 39
  %226 = load ptr, ptr %225, align 8, !tbaa !34
  %227 = icmp eq ptr %226, null
  br i1 %227, label %229, label %228

228:                                              ; preds = %224
  call void @_ZdaPv(ptr noundef %226) #11
  br label %229

229:                                              ; preds = %228, %224
  %230 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 40
  %231 = load ptr, ptr %230, align 8, !tbaa !35
  %232 = icmp eq ptr %231, null
  br i1 %232, label %234, label %233

233:                                              ; preds = %229
  call void @_ZdaPv(ptr noundef %231) #11
  br label %234

234:                                              ; preds = %233, %229
  %235 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  %236 = load ptr, ptr %235, align 8, !tbaa !36
  %237 = icmp eq ptr %236, null
  br i1 %237, label %239, label %238

238:                                              ; preds = %234
  call void @_ZdaPv(ptr noundef %236) #11
  br label %239

239:                                              ; preds = %238, %234
  %240 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 57
  %241 = load ptr, ptr %240, align 8, !tbaa !37
  %242 = icmp eq ptr %241, null
  br i1 %242, label %244, label %243

243:                                              ; preds = %239
  call void @_ZdaPv(ptr noundef %241) #11
  br label %244

244:                                              ; preds = %243, %239
  %245 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 58
  %246 = load ptr, ptr %245, align 8, !tbaa !38
  %247 = icmp eq ptr %246, null
  br i1 %247, label %249, label %248

248:                                              ; preds = %244
  call void @_ZdaPv(ptr noundef %246) #11
  br label %249

249:                                              ; preds = %248, %244
  br label %250

250:                                              ; preds = %249, %208
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  %251 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 1
  %252 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %251)
  %253 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 21
  %254 = load ptr, ptr %252, align 8, !tbaa !39
  %255 = getelementptr inbounds ptr, ptr %254, i64 2
  %256 = load ptr, ptr %255, align 8
  %257 = call noundef zeroext i1 %256(ptr noundef nonnull align 8 dereferenceable(12) %252, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %253)
  %258 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 10
  %259 = load i8, ptr %258, align 1, !tbaa !30, !range !28, !noundef !29
  %260 = trunc i8 %259 to i1
  br i1 %260, label %261, label %318

261:                                              ; preds = %250
  %262 = load i32, ptr %42, align 4, !tbaa !41
  %263 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %264 = load i32, ptr %263, align 8, !tbaa !42
  %265 = icmp eq i32 %262, %264
  br i1 %265, label %266, label %281

266:                                              ; preds = %261
  %267 = load i32, ptr %43, align 4, !tbaa !41
  %268 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %269 = load i32, ptr %268, align 4, !tbaa !43
  %270 = icmp eq i32 %267, %269
  br i1 %270, label %271, label %281

271:                                              ; preds = %266
  %272 = load i32, ptr %44, align 4, !tbaa !41
  %273 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %274 = load i32, ptr %273, align 4, !tbaa !44
  %275 = icmp eq i32 %272, %274
  br i1 %275, label %276, label %281

276:                                              ; preds = %271
  %277 = load i32, ptr %45, align 4, !tbaa !41
  %278 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %279 = load i32, ptr %278, align 8, !tbaa !45
  %280 = icmp eq i32 %277, %279
  br i1 %280, label %318, label %281

281:                                              ; preds = %276, %271, %266, %261
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.47, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %282 unwind label %291

282:                                              ; preds = %281
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #9
  %283 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.1)
          to label %284 unwind label %295

284:                                              ; preds = %282
  %285 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.48)
          to label %286 unwind label %295

286:                                              ; preds = %284
  store i1 true, ptr %51, align 1
  %287 = call ptr @__cxa_allocate_exception(i64 112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %288 unwind label %299

288:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %289 unwind label %303

289:                                              ; preds = %288
  invoke void @_ZN10SimTKIpopt17INVALID_WARMSTARTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %287, ptr noundef %48, ptr noundef %49, i32 noundef 233)
          to label %290 unwind label %307

290:                                              ; preds = %289
  store i1 false, ptr %51, align 1
  invoke void @__cxa_throw(ptr %287, ptr @_ZTIN10SimTKIpopt17INVALID_WARMSTARTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %1873 unwind label %307

291:                                              ; preds = %281
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %36, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %37, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #9
  br label %317

295:                                              ; preds = %284, %282
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %36, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %37, align 4
  br label %316

299:                                              ; preds = %286
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %36, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %37, align 4
  br label %312

303:                                              ; preds = %288
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %36, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %37, align 4
  br label %311

307:                                              ; preds = %290, %289
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %36, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %312

312:                                              ; preds = %311, %299
  %313 = load i1, ptr %51, align 1
  br i1 %313, label %314, label %315

314:                                              ; preds = %312
  call void @__cxa_free_exception(ptr %287) #9
  br label %315

315:                                              ; preds = %314, %312
  br label %316

316:                                              ; preds = %315, %295
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %317

317:                                              ; preds = %316, %291
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %1865

318:                                              ; preds = %276, %250
  %319 = load i32, ptr %42, align 4, !tbaa !41
  %320 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  store i32 %319, ptr %320, align 8, !tbaa !42
  %321 = load i32, ptr %43, align 4, !tbaa !41
  %322 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  store i32 %321, ptr %322, align 4, !tbaa !43
  %323 = load i32, ptr %44, align 4, !tbaa !41
  %324 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  store i32 %323, ptr %324, align 4, !tbaa !44
  %325 = load i32, ptr %45, align 4, !tbaa !41
  %326 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  store i32 %325, ptr %326, align 8, !tbaa !45
  %327 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 10
  %328 = load i8, ptr %327, align 1, !tbaa !30, !range !28, !noundef !29
  %329 = trunc i8 %328 to i1
  br i1 %329, label %1806, label %330

330:                                              ; preds = %318
  %331 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %332 = load i32, ptr %331, align 8, !tbaa !42
  %333 = sext i32 %332 to i64
  %334 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %333, i64 8)
  %335 = extractvalue { i64, i1 } %334, 1
  %336 = extractvalue { i64, i1 } %334, 0
  %337 = select i1 %335, i64 -1, i64 %336
  %338 = call noalias noundef nonnull ptr @_Znam(i64 noundef %337) #12
  %339 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 36
  store ptr %338, ptr %339, align 8, !tbaa !31
  %340 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %341 = load i32, ptr %340, align 4, !tbaa !43
  %342 = sext i32 %341 to i64
  %343 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %342, i64 8)
  %344 = extractvalue { i64, i1 } %343, 1
  %345 = extractvalue { i64, i1 } %343, 0
  %346 = select i1 %344, i64 -1, i64 %345
  %347 = call noalias noundef nonnull ptr @_Znam(i64 noundef %346) #12
  %348 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 37
  store ptr %347, ptr %348, align 8, !tbaa !32
  %349 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %350 = load i32, ptr %349, align 4, !tbaa !43
  %351 = sext i32 %350 to i64
  %352 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %351, i64 8)
  %353 = extractvalue { i64, i1 } %352, 1
  %354 = extractvalue { i64, i1 } %352, 0
  %355 = select i1 %353, i64 -1, i64 %354
  %356 = call noalias noundef nonnull ptr @_Znam(i64 noundef %355) #12
  %357 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 38
  store ptr %356, ptr %357, align 8, !tbaa !33
  %358 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %359 = load i32, ptr %358, align 4, !tbaa !44
  %360 = sext i32 %359 to i64
  %361 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %360, i64 8)
  %362 = extractvalue { i64, i1 } %361, 1
  %363 = extractvalue { i64, i1 } %361, 0
  %364 = select i1 %362, i64 -1, i64 %363
  %365 = call noalias noundef nonnull ptr @_Znam(i64 noundef %364) #12
  %366 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 39
  store ptr %365, ptr %366, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %367 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %368 = load i32, ptr %367, align 8, !tbaa !42
  %369 = sext i32 %368 to i64
  %370 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %369, i64 8)
  %371 = extractvalue { i64, i1 } %370, 1
  %372 = extractvalue { i64, i1 } %370, 0
  %373 = select i1 %371, i64 -1, i64 %372
  %374 = call noalias noundef nonnull ptr @_Znam(i64 noundef %373) #12
  store ptr %374, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %375 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %376 = load i32, ptr %375, align 8, !tbaa !42
  %377 = sext i32 %376 to i64
  %378 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %377, i64 8)
  %379 = extractvalue { i64, i1 } %378, 1
  %380 = extractvalue { i64, i1 } %378, 0
  %381 = select i1 %379, i64 -1, i64 %380
  %382 = call noalias noundef nonnull ptr @_Znam(i64 noundef %381) #12
  store ptr %382, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %383 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %384 = load i32, ptr %383, align 4, !tbaa !43
  %385 = sext i32 %384 to i64
  %386 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %385, i64 8)
  %387 = extractvalue { i64, i1 } %386, 1
  %388 = extractvalue { i64, i1 } %386, 0
  %389 = select i1 %387, i64 -1, i64 %388
  %390 = call noalias noundef nonnull ptr @_Znam(i64 noundef %389) #12
  store ptr %390, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %391 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %392 = load i32, ptr %391, align 4, !tbaa !43
  %393 = sext i32 %392 to i64
  %394 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %393, i64 8)
  %395 = extractvalue { i64, i1 } %394, 1
  %396 = extractvalue { i64, i1 } %394, 0
  %397 = select i1 %395, i64 -1, i64 %396
  %398 = call noalias noundef nonnull ptr @_Znam(i64 noundef %397) #12
  store ptr %398, ptr %55, align 8, !tbaa !5
  %399 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 1
  %400 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %399)
  %401 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %402 = load i32, ptr %401, align 8, !tbaa !42
  %403 = load ptr, ptr %52, align 8, !tbaa !5
  %404 = load ptr, ptr %53, align 8, !tbaa !5
  %405 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %406 = load i32, ptr %405, align 4, !tbaa !43
  %407 = load ptr, ptr %54, align 8, !tbaa !5
  %408 = load ptr, ptr %55, align 8, !tbaa !5
  %409 = load ptr, ptr %400, align 8, !tbaa !39
  %410 = getelementptr inbounds ptr, ptr %409, i64 3
  %411 = load ptr, ptr %410, align 8
  %412 = call noundef zeroext i1 %411(ptr noundef nonnull align 8 dereferenceable(12) %400, i32 noundef %402, ptr noundef %403, ptr noundef %404, i32 noundef %406, ptr noundef %407, ptr noundef %408)
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i32 0, ptr %56, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  store i32 0, ptr %57, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  store i32 0, ptr %58, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %413 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %414 = load i32, ptr %413, align 8, !tbaa !42
  %415 = sext i32 %414 to i64
  %416 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %415, i64 4)
  %417 = extractvalue { i64, i1 } %416, 1
  %418 = extractvalue { i64, i1 } %416, 0
  %419 = select i1 %417, i64 -1, i64 %418
  %420 = call noalias noundef nonnull ptr @_Znam(i64 noundef %419) #12
  store ptr %420, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  %421 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %422 = load i32, ptr %421, align 8, !tbaa !42
  %423 = sext i32 %422 to i64
  %424 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %423, i64 4)
  %425 = extractvalue { i64, i1 } %424, 1
  %426 = extractvalue { i64, i1 } %424, 0
  %427 = select i1 %425, i64 -1, i64 %426
  %428 = call noalias noundef nonnull ptr @_Znam(i64 noundef %427) #12
  store ptr %428, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %429 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %430 = load i32, ptr %429, align 8, !tbaa !42
  %431 = sext i32 %430 to i64
  %432 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %431, i64 4)
  %433 = extractvalue { i64, i1 } %432, 1
  %434 = extractvalue { i64, i1 } %432, 0
  %435 = select i1 %433, i64 -1, i64 %434
  %436 = call noalias noundef nonnull ptr @_Znam(i64 noundef %435) #12
  store ptr %436, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %437 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %438 = load i32, ptr %437, align 8, !tbaa !42
  %439 = sext i32 %438 to i64
  %440 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %439, i64 4)
  %441 = extractvalue { i64, i1 } %440, 1
  %442 = extractvalue { i64, i1 } %440, 0
  %443 = select i1 %441, i64 -1, i64 %442
  %444 = call noalias noundef nonnull ptr @_Znam(i64 noundef %443) #12
  store ptr %444, ptr %62, align 8, !tbaa !5
  %445 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  store i32 0, ptr %445, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  store i32 0, ptr %63, align 4, !tbaa !41
  br label %446

446:                                              ; preds = %588, %330
  %447 = load i32, ptr %63, align 4, !tbaa !41
  %448 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %449 = load i32, ptr %448, align 8, !tbaa !42
  %450 = icmp slt i32 %447, %449
  br i1 %450, label %452, label %451

451:                                              ; preds = %446
  store i32 2, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %591

452:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %453 = load ptr, ptr %52, align 8, !tbaa !5
  %454 = load i32, ptr %63, align 4, !tbaa !41
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %453, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !47
  store double %457, ptr %64, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %458 = load ptr, ptr %53, align 8, !tbaa !5
  %459 = load i32, ptr %63, align 4, !tbaa !41
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %458, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !47
  store double %462, ptr %65, align 8, !tbaa !47
  %463 = load double, ptr %64, align 8, !tbaa !47
  %464 = load double, ptr %65, align 8, !tbaa !47
  %465 = fcmp oeq double %463, %464
  br i1 %465, label %466, label %504

466:                                              ; preds = %452
  %467 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 5
  %468 = load i32, ptr %467, align 8, !tbaa !48
  switch i32 %468, label %502 [
    i32 0, label %469
    i32 1, label %485
  ]

469:                                              ; preds = %466
  %470 = load double, ptr %64, align 8, !tbaa !47
  %471 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 36
  %472 = load ptr, ptr %471, align 8, !tbaa !31
  %473 = load i32, ptr %63, align 4, !tbaa !41
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %472, i64 %474
  store double %470, ptr %475, align 8, !tbaa !47
  %476 = load i32, ptr %63, align 4, !tbaa !41
  %477 = load ptr, ptr %60, align 8, !tbaa !5
  %478 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %479 = load i32, ptr %478, align 8, !tbaa !46
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds i32, ptr %477, i64 %480
  store i32 %476, ptr %481, align 4, !tbaa !41
  %482 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %483 = load i32, ptr %482, align 8, !tbaa !46
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %482, align 8, !tbaa !46
  br label %503

485:                                              ; preds = %466
  %486 = load i32, ptr %63, align 4, !tbaa !41
  %487 = load ptr, ptr %60, align 8, !tbaa !5
  %488 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %489 = load i32, ptr %488, align 8, !tbaa !46
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %487, i64 %490
  store i32 %486, ptr %491, align 4, !tbaa !41
  %492 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %493 = load i32, ptr %492, align 8, !tbaa !46
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %492, align 8, !tbaa !46
  %495 = load i32, ptr %63, align 4, !tbaa !41
  %496 = load ptr, ptr %59, align 8, !tbaa !5
  %497 = load i32, ptr %56, align 4, !tbaa !41
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i32, ptr %496, i64 %498
  store i32 %495, ptr %499, align 4, !tbaa !41
  %500 = load i32, ptr %56, align 4, !tbaa !41
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %56, align 4, !tbaa !41
  br label %503

502:                                              ; preds = %466
  br label %503

503:                                              ; preds = %502, %485, %469
  br label %587

504:                                              ; preds = %452
  %505 = load double, ptr %64, align 8, !tbaa !47
  %506 = load double, ptr %65, align 8, !tbaa !47
  %507 = fcmp ogt double %505, %506
  br i1 %507, label %508, label %552

508:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  store i32 256, ptr %66, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 256, ptr %67) #9
  %509 = getelementptr inbounds [256 x i8], ptr %67, i64 0, i64 0
  %510 = load i32, ptr %63, align 4, !tbaa !41
  %511 = load double, ptr %64, align 8, !tbaa !47
  %512 = load double, ptr %65, align 8, !tbaa !47
  %513 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %509, i64 noundef 256, ptr noundef @.str.49, i32 noundef %510, double noundef %511, double noundef %512) #9
  %514 = load ptr, ptr %59, align 8, !tbaa !5
  %515 = icmp eq ptr %514, null
  br i1 %515, label %517, label %516

516:                                              ; preds = %508
  call void @_ZdaPv(ptr noundef %514) #11
  br label %517

517:                                              ; preds = %516, %508
  %518 = load ptr, ptr %60, align 8, !tbaa !5
  %519 = icmp eq ptr %518, null
  br i1 %519, label %521, label %520

520:                                              ; preds = %517
  call void @_ZdaPv(ptr noundef %518) #11
  br label %521

521:                                              ; preds = %520, %517
  %522 = load ptr, ptr %61, align 8, !tbaa !5
  %523 = icmp eq ptr %522, null
  br i1 %523, label %525, label %524

524:                                              ; preds = %521
  call void @_ZdaPv(ptr noundef %522) #11
  br label %525

525:                                              ; preds = %524, %521
  %526 = load ptr, ptr %62, align 8, !tbaa !5
  %527 = icmp eq ptr %526, null
  br i1 %527, label %529, label %528

528:                                              ; preds = %525
  call void @_ZdaPv(ptr noundef %526) #11
  br label %529

529:                                              ; preds = %528, %525
  store i1 true, ptr %72, align 1
  %530 = call ptr @__cxa_allocate_exception(i64 112) #9
  %531 = getelementptr inbounds [256 x i8], ptr %67, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef %531, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %532 unwind label %535

532:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %533 unwind label %539

533:                                              ; preds = %532
  invoke void @_ZN10SimTKIpopt11TNLPAdapter12INVALID_TNLPC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %530, ptr noundef %68, ptr noundef %70, i32 noundef 302)
          to label %534 unwind label %543

534:                                              ; preds = %533
  store i1 false, ptr %72, align 1
  invoke void @__cxa_throw(ptr %530, ptr @_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %1873 unwind label %543

535:                                              ; preds = %529
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %36, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %37, align 4
  br label %548

539:                                              ; preds = %532
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %36, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %37, align 4
  br label %547

543:                                              ; preds = %534, %533
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %36, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  br label %547

547:                                              ; preds = %543, %539
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  br label %548

548:                                              ; preds = %547, %535
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  %549 = load i1, ptr %72, align 1
  br i1 %549, label %550, label %551

550:                                              ; preds = %548
  call void @__cxa_free_exception(ptr %530) #9
  br label %551

551:                                              ; preds = %550, %548
  call void @llvm.lifetime.end.p0(i64 256, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %1805

552:                                              ; preds = %504
  %553 = load i32, ptr %63, align 4, !tbaa !41
  %554 = load ptr, ptr %59, align 8, !tbaa !5
  %555 = load i32, ptr %56, align 4, !tbaa !41
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %554, i64 %556
  store i32 %553, ptr %557, align 4, !tbaa !41
  %558 = load double, ptr %64, align 8, !tbaa !47
  %559 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 3
  %560 = load double, ptr %559, align 8, !tbaa !49
  %561 = fcmp ogt double %558, %560
  br i1 %561, label %562, label %570

562:                                              ; preds = %552
  %563 = load i32, ptr %56, align 4, !tbaa !41
  %564 = load ptr, ptr %61, align 8, !tbaa !5
  %565 = load i32, ptr %57, align 4, !tbaa !41
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds i32, ptr %564, i64 %566
  store i32 %563, ptr %567, align 4, !tbaa !41
  %568 = load i32, ptr %57, align 4, !tbaa !41
  %569 = add nsw i32 %568, 1
  store i32 %569, ptr %57, align 4, !tbaa !41
  br label %570

570:                                              ; preds = %562, %552
  %571 = load double, ptr %65, align 8, !tbaa !47
  %572 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 4
  %573 = load double, ptr %572, align 8, !tbaa !50
  %574 = fcmp olt double %571, %573
  br i1 %574, label %575, label %583

575:                                              ; preds = %570
  %576 = load i32, ptr %56, align 4, !tbaa !41
  %577 = load ptr, ptr %62, align 8, !tbaa !5
  %578 = load i32, ptr %58, align 4, !tbaa !41
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  store i32 %576, ptr %580, align 4, !tbaa !41
  %581 = load i32, ptr %58, align 4, !tbaa !41
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %58, align 4, !tbaa !41
  br label %583

583:                                              ; preds = %575, %570
  %584 = load i32, ptr %56, align 4, !tbaa !41
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %56, align 4, !tbaa !41
  br label %586

586:                                              ; preds = %583
  br label %587

587:                                              ; preds = %586, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr %63, align 4, !tbaa !41
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %63, align 4, !tbaa !41
  br label %446, !llvm.loop !51

591:                                              ; preds = %451
  %592 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %593 = load i32, ptr %592, align 8, !tbaa !46
  %594 = icmp sgt i32 %593, 0
  br i1 %594, label %595, label %626

595:                                              ; preds = %591
  %596 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %597 = load i32, ptr %596, align 8, !tbaa !46
  %598 = sext i32 %597 to i64
  %599 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %598, i64 4)
  %600 = extractvalue { i64, i1 } %599, 1
  %601 = extractvalue { i64, i1 } %599, 0
  %602 = select i1 %600, i64 -1, i64 %601
  %603 = call noalias noundef nonnull ptr @_Znam(i64 noundef %602) #12
  %604 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 58
  store ptr %603, ptr %604, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #9
  store i32 0, ptr %73, align 4, !tbaa !41
  br label %605

605:                                              ; preds = %622, %595
  %606 = load i32, ptr %73, align 4, !tbaa !41
  %607 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %608 = load i32, ptr %607, align 8, !tbaa !46
  %609 = icmp slt i32 %606, %608
  br i1 %609, label %611, label %610

610:                                              ; preds = %605
  store i32 6, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  br label %625

611:                                              ; preds = %605
  %612 = load ptr, ptr %60, align 8, !tbaa !5
  %613 = load i32, ptr %73, align 4, !tbaa !41
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %612, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !41
  %617 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 58
  %618 = load ptr, ptr %617, align 8, !tbaa !38
  %619 = load i32, ptr %73, align 4, !tbaa !41
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds i32, ptr %618, i64 %620
  store i32 %616, ptr %621, align 4, !tbaa !41
  br label %622

622:                                              ; preds = %611
  %623 = load i32, ptr %73, align 4, !tbaa !41
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %73, align 4, !tbaa !41
  br label %605, !llvm.loop !53

625:                                              ; preds = %610
  br label %628

626:                                              ; preds = %591
  %627 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 58
  store ptr null, ptr %627, align 8, !tbaa !38
  br label %628

628:                                              ; preds = %626, %625
  %629 = load ptr, ptr %60, align 8, !tbaa !5
  %630 = icmp eq ptr %629, null
  br i1 %630, label %632, label %631

631:                                              ; preds = %628
  call void @_ZdaPv(ptr noundef %629) #11
  br label %632

632:                                              ; preds = %631, %628
  %633 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %634 = load i32, ptr %56, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %633, i32 noundef %634)
          to label %635 unwind label %669

635:                                              ; preds = %632
  %636 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 22
  %637 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef %633)
  %638 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %639 = load i32, ptr %57, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %638, i32 noundef %639)
          to label %640 unwind label %673

640:                                              ; preds = %635
  %641 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 25
  %642 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef %638)
  %643 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %644 = load i32, ptr %58, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %643, i32 noundef %644)
          to label %645 unwind label %677

645:                                              ; preds = %640
  %646 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 27
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %646, ptr noundef %643)
  %648 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %649 = load i32, ptr %648, align 8, !tbaa !46
  %650 = icmp sgt i32 %649, 0
  br i1 %650, label %651, label %685

651:                                              ; preds = %645
  %652 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 5
  %653 = load i32, ptr %652, align 8, !tbaa !48
  %654 = icmp eq i32 %653, 0
  br i1 %654, label %655, label %685

655:                                              ; preds = %651
  %656 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %657 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %658 = load i32, ptr %657, align 8, !tbaa !42
  %659 = load i32, ptr %56, align 4, !tbaa !41
  %660 = load ptr, ptr %59, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %656, i32 noundef %658, i32 noundef %659, ptr noundef %660, i32 noundef 0)
          to label %661 unwind label %681

661:                                              ; preds = %655
  %662 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 47
  %663 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef %656)
  %664 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 47
  %665 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %664)
  %666 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %665)
  %667 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %668 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %667, ptr noundef %666)
  br label %690

669:                                              ; preds = %632
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %36, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %633, i64 noundef 16) #11
  br label %1805

673:                                              ; preds = %635
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %36, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %638, i64 noundef 16) #11
  br label %1805

677:                                              ; preds = %640
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %36, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %643, i64 noundef 16) #11
  br label %1805

681:                                              ; preds = %655
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %36, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %656, i64 noundef 40) #11
  br label %1805

685:                                              ; preds = %651, %645
  %686 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 47
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %686, ptr noundef null)
  %688 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %689 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %688, ptr noundef null)
  br label %690

690:                                              ; preds = %685, %661
  %691 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %692 = load i32, ptr %56, align 4, !tbaa !41
  %693 = load i32, ptr %57, align 4, !tbaa !41
  %694 = load ptr, ptr %61, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %691, i32 noundef %692, i32 noundef %693, ptr noundef %694, i32 noundef 0)
          to label %695 unwind label %781

695:                                              ; preds = %690
  %696 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 49
  %697 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef %691)
  %698 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 49
  %699 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_20ExpansionMatrixSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %698)
  %700 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 26
  %701 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef %699)
  %702 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 49
  %703 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %702)
  %704 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %703)
  %705 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 48
  %706 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %705, ptr noundef %704)
  %707 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %708 = load i32, ptr %56, align 4, !tbaa !41
  %709 = load i32, ptr %58, align 4, !tbaa !41
  %710 = load ptr, ptr %62, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %707, i32 noundef %708, i32 noundef %709, ptr noundef %710, i32 noundef 0)
          to label %711 unwind label %785

711:                                              ; preds = %695
  %712 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 51
  %713 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %712, ptr noundef %707)
  %714 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 51
  %715 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_20ExpansionMatrixSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %714)
  %716 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 28
  %717 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %716, ptr noundef %715)
  %718 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 51
  %719 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %718)
  %720 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %719)
  %721 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 50
  %722 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %721, ptr noundef %720)
  %723 = load ptr, ptr %52, align 8, !tbaa !5
  %724 = icmp eq ptr %723, null
  br i1 %724, label %726, label %725

725:                                              ; preds = %711
  call void @_ZdaPv(ptr noundef %723) #11
  br label %726

726:                                              ; preds = %725, %711
  store ptr null, ptr %52, align 8, !tbaa !5
  %727 = load ptr, ptr %53, align 8, !tbaa !5
  %728 = icmp eq ptr %727, null
  br i1 %728, label %730, label %729

729:                                              ; preds = %726
  call void @_ZdaPv(ptr noundef %727) #11
  br label %730

730:                                              ; preds = %729, %726
  store ptr null, ptr %53, align 8, !tbaa !5
  %731 = load ptr, ptr %59, align 8, !tbaa !5
  %732 = icmp eq ptr %731, null
  br i1 %732, label %734, label %733

733:                                              ; preds = %730
  call void @_ZdaPv(ptr noundef %731) #11
  br label %734

734:                                              ; preds = %733, %730
  store ptr null, ptr %59, align 8, !tbaa !5
  %735 = load ptr, ptr %61, align 8, !tbaa !5
  %736 = icmp eq ptr %735, null
  br i1 %736, label %738, label %737

737:                                              ; preds = %734
  call void @_ZdaPv(ptr noundef %735) #11
  br label %738

738:                                              ; preds = %737, %734
  store ptr null, ptr %61, align 8, !tbaa !5
  %739 = load ptr, ptr %62, align 8, !tbaa !5
  %740 = icmp eq ptr %739, null
  br i1 %740, label %742, label %741

741:                                              ; preds = %738
  call void @_ZdaPv(ptr noundef %739) #11
  br label %742

742:                                              ; preds = %741, %738
  store ptr null, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #9
  store i32 0, ptr %74, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  store i32 0, ptr %75, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #9
  store i32 0, ptr %76, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  store i32 0, ptr %77, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  %743 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %744 = load i32, ptr %743, align 4, !tbaa !43
  %745 = sext i32 %744 to i64
  %746 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %745, i64 4)
  %747 = extractvalue { i64, i1 } %746, 1
  %748 = extractvalue { i64, i1 } %746, 0
  %749 = select i1 %747, i64 -1, i64 %748
  %750 = call noalias noundef nonnull ptr @_Znam(i64 noundef %749) #12
  store ptr %750, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %751 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %752 = load i32, ptr %751, align 4, !tbaa !43
  %753 = sext i32 %752 to i64
  %754 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %753, i64 4)
  %755 = extractvalue { i64, i1 } %754, 1
  %756 = extractvalue { i64, i1 } %754, 0
  %757 = select i1 %755, i64 -1, i64 %756
  %758 = call noalias noundef nonnull ptr @_Znam(i64 noundef %757) #12
  store ptr %758, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %759 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %760 = load i32, ptr %759, align 4, !tbaa !43
  %761 = sext i32 %760 to i64
  %762 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %761, i64 4)
  %763 = extractvalue { i64, i1 } %762, 1
  %764 = extractvalue { i64, i1 } %762, 0
  %765 = select i1 %763, i64 -1, i64 %764
  %766 = call noalias noundef nonnull ptr @_Znam(i64 noundef %765) #12
  store ptr %766, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %767 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %768 = load i32, ptr %767, align 4, !tbaa !43
  %769 = sext i32 %768 to i64
  %770 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %769, i64 4)
  %771 = extractvalue { i64, i1 } %770, 1
  %772 = extractvalue { i64, i1 } %770, 0
  %773 = select i1 %771, i64 -1, i64 %772
  %774 = call noalias noundef nonnull ptr @_Znam(i64 noundef %773) #12
  store ptr %774, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #9
  store i32 0, ptr %82, align 4, !tbaa !41
  br label %775

775:                                              ; preds = %895, %742
  %776 = load i32, ptr %82, align 4, !tbaa !41
  %777 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %778 = load i32, ptr %777, align 4, !tbaa !43
  %779 = icmp slt i32 %776, %778
  br i1 %779, label %789, label %780

780:                                              ; preds = %775
  store i32 9, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  br label %898

781:                                              ; preds = %690
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %36, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %691, i64 noundef 40) #11
  br label %1805

785:                                              ; preds = %695
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %36, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %707, i64 noundef 40) #11
  br label %1805

789:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %790 = load ptr, ptr %54, align 8, !tbaa !5
  %791 = load i32, ptr %82, align 4, !tbaa !41
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds double, ptr %790, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !47
  store double %794, ptr %83, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %795 = load ptr, ptr %55, align 8, !tbaa !5
  %796 = load i32, ptr %82, align 4, !tbaa !41
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  %799 = load double, ptr %798, align 8, !tbaa !47
  store double %799, ptr %84, align 8, !tbaa !47
  %800 = load double, ptr %83, align 8, !tbaa !47
  %801 = load double, ptr %84, align 8, !tbaa !47
  %802 = fcmp oeq double %800, %801
  br i1 %802, label %803, label %811

803:                                              ; preds = %789
  %804 = load i32, ptr %82, align 4, !tbaa !41
  %805 = load ptr, ptr %78, align 8, !tbaa !5
  %806 = load i32, ptr %74, align 4, !tbaa !41
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds i32, ptr %805, i64 %807
  store i32 %804, ptr %808, align 4, !tbaa !41
  %809 = load i32, ptr %74, align 4, !tbaa !41
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %74, align 4, !tbaa !41
  br label %894

811:                                              ; preds = %789
  %812 = load double, ptr %83, align 8, !tbaa !47
  %813 = load double, ptr %84, align 8, !tbaa !47
  %814 = fcmp ogt double %812, %813
  br i1 %814, label %815, label %859

815:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  store i32 256, ptr %85, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 256, ptr %86) #9
  %816 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  %817 = load i32, ptr %82, align 4, !tbaa !41
  %818 = load double, ptr %83, align 8, !tbaa !47
  %819 = load double, ptr %84, align 8, !tbaa !47
  %820 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %816, i64 noundef 256, ptr noundef @.str.50, i32 noundef %817, double noundef %818, double noundef %819) #9
  %821 = load ptr, ptr %79, align 8, !tbaa !5
  %822 = icmp eq ptr %821, null
  br i1 %822, label %824, label %823

823:                                              ; preds = %815
  call void @_ZdaPv(ptr noundef %821) #11
  br label %824

824:                                              ; preds = %823, %815
  %825 = load ptr, ptr %78, align 8, !tbaa !5
  %826 = icmp eq ptr %825, null
  br i1 %826, label %828, label %827

827:                                              ; preds = %824
  call void @_ZdaPv(ptr noundef %825) #11
  br label %828

828:                                              ; preds = %827, %824
  %829 = load ptr, ptr %81, align 8, !tbaa !5
  %830 = icmp eq ptr %829, null
  br i1 %830, label %832, label %831

831:                                              ; preds = %828
  call void @_ZdaPv(ptr noundef %829) #11
  br label %832

832:                                              ; preds = %831, %828
  %833 = load ptr, ptr %80, align 8, !tbaa !5
  %834 = icmp eq ptr %833, null
  br i1 %834, label %836, label %835

835:                                              ; preds = %832
  call void @_ZdaPv(ptr noundef %833) #11
  br label %836

836:                                              ; preds = %835, %832
  store i1 true, ptr %91, align 1
  %837 = call ptr @__cxa_allocate_exception(i64 112) #9
  %838 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef %838, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %839 unwind label %842

839:                                              ; preds = %836
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %840 unwind label %846

840:                                              ; preds = %839
  invoke void @_ZN10SimTKIpopt11TNLPAdapter12INVALID_TNLPC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %837, ptr noundef %87, ptr noundef %89, i32 noundef 397)
          to label %841 unwind label %850

841:                                              ; preds = %840
  store i1 false, ptr %91, align 1
  invoke void @__cxa_throw(ptr %837, ptr @_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %1873 unwind label %850

842:                                              ; preds = %836
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %36, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %37, align 4
  br label %855

846:                                              ; preds = %839
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %36, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %37, align 4
  br label %854

850:                                              ; preds = %841, %840
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %36, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #9
  br label %854

854:                                              ; preds = %850, %846
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %855

855:                                              ; preds = %854, %842
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #9
  %856 = load i1, ptr %91, align 1
  br i1 %856, label %857, label %858

857:                                              ; preds = %855
  call void @__cxa_free_exception(ptr %837) #9
  br label %858

858:                                              ; preds = %857, %855
  call void @llvm.lifetime.end.p0(i64 256, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  br label %1804

859:                                              ; preds = %811
  %860 = load i32, ptr %82, align 4, !tbaa !41
  %861 = load ptr, ptr %79, align 8, !tbaa !5
  %862 = load i32, ptr %75, align 4, !tbaa !41
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds i32, ptr %861, i64 %863
  store i32 %860, ptr %864, align 4, !tbaa !41
  %865 = load double, ptr %83, align 8, !tbaa !47
  %866 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 3
  %867 = load double, ptr %866, align 8, !tbaa !49
  %868 = fcmp ogt double %865, %867
  br i1 %868, label %869, label %877

869:                                              ; preds = %859
  %870 = load i32, ptr %75, align 4, !tbaa !41
  %871 = load ptr, ptr %80, align 8, !tbaa !5
  %872 = load i32, ptr %76, align 4, !tbaa !41
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds i32, ptr %871, i64 %873
  store i32 %870, ptr %874, align 4, !tbaa !41
  %875 = load i32, ptr %76, align 4, !tbaa !41
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %76, align 4, !tbaa !41
  br label %877

877:                                              ; preds = %869, %859
  %878 = load double, ptr %84, align 8, !tbaa !47
  %879 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 4
  %880 = load double, ptr %879, align 8, !tbaa !50
  %881 = fcmp olt double %878, %880
  br i1 %881, label %882, label %890

882:                                              ; preds = %877
  %883 = load i32, ptr %75, align 4, !tbaa !41
  %884 = load ptr, ptr %81, align 8, !tbaa !5
  %885 = load i32, ptr %77, align 4, !tbaa !41
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i32, ptr %884, i64 %886
  store i32 %883, ptr %887, align 4, !tbaa !41
  %888 = load i32, ptr %77, align 4, !tbaa !41
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %77, align 4, !tbaa !41
  br label %890

890:                                              ; preds = %882, %877
  %891 = load i32, ptr %75, align 4, !tbaa !41
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr %75, align 4, !tbaa !41
  br label %893

893:                                              ; preds = %890
  br label %894

894:                                              ; preds = %893, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  br label %895

895:                                              ; preds = %894
  %896 = load i32, ptr %82, align 4, !tbaa !41
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %82, align 4, !tbaa !41
  br label %775, !llvm.loop !54

898:                                              ; preds = %780
  %899 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %900 = load i32, ptr %899, align 8, !tbaa !46
  %901 = icmp eq i32 %900, 0
  br i1 %901, label %906, label %902

902:                                              ; preds = %898
  %903 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 5
  %904 = load i32, ptr %903, align 8, !tbaa !48
  %905 = icmp eq i32 %904, 0
  br i1 %905, label %906, label %933

906:                                              ; preds = %902, %898
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %907 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %908 = load i32, ptr %74, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %907, i32 noundef %908)
          to label %909 unwind label %924

909:                                              ; preds = %906
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef %907)
  %910 = invoke noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_16DenseVectorSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %911 unwind label %928

911:                                              ; preds = %909
  %912 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 23
  %913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %912, ptr noundef %910)
          to label %914 unwind label %928

914:                                              ; preds = %911
  %915 = load i32, ptr %74, align 4, !tbaa !41
  %916 = sext i32 %915 to i64
  %917 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %916, i64 8)
  %918 = extractvalue { i64, i1 } %917, 1
  %919 = extractvalue { i64, i1 } %917, 0
  %920 = select i1 %918, i64 -1, i64 %919
  %921 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %920) #12
          to label %922 unwind label %928

922:                                              ; preds = %914
  %923 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 40
  store ptr %921, ptr %923, align 8, !tbaa !35
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %966

924:                                              ; preds = %906
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %36, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %907, i64 noundef 16) #11
  br label %932

928:                                              ; preds = %914, %911, %909
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %36, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %37, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  br label %932

932:                                              ; preds = %928, %924
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %1804

933:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %934 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %935 = load i32, ptr %74, align 4, !tbaa !41
  %936 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %937 = load i32, ptr %936, align 8, !tbaa !46
  %938 = add nsw i32 %935, %937
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %934, i32 noundef %938)
          to label %939 unwind label %957

939:                                              ; preds = %933
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef %934)
  %940 = invoke noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_16DenseVectorSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %941 unwind label %961

941:                                              ; preds = %939
  %942 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 23
  %943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %942, ptr noundef %940)
          to label %944 unwind label %961

944:                                              ; preds = %941
  %945 = load i32, ptr %74, align 4, !tbaa !41
  %946 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %947 = load i32, ptr %946, align 8, !tbaa !46
  %948 = add nsw i32 %945, %947
  %949 = sext i32 %948 to i64
  %950 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %949, i64 8)
  %951 = extractvalue { i64, i1 } %950, 1
  %952 = extractvalue { i64, i1 } %950, 0
  %953 = select i1 %951, i64 -1, i64 %952
  %954 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %953) #12
          to label %955 unwind label %961

955:                                              ; preds = %944
  %956 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 40
  store ptr %954, ptr %956, align 8, !tbaa !35
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  br label %966

957:                                              ; preds = %933
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %36, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %934, i64 noundef 16) #11
  br label %965

961:                                              ; preds = %944, %941, %939
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %36, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %37, align 4
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  br label %965

965:                                              ; preds = %961, %957
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  br label %1804

966:                                              ; preds = %955, %922
  %967 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %968 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %969 = load i32, ptr %968, align 4, !tbaa !43
  %970 = load i32, ptr %74, align 4, !tbaa !41
  %971 = load ptr, ptr %78, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %967, i32 noundef %969, i32 noundef %970, ptr noundef %971, i32 noundef 0)
          to label %972 unwind label %1086

972:                                              ; preds = %966
  %973 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 52
  %974 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %973, ptr noundef %967)
  %975 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 52
  %976 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %975)
  %977 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %976)
  %978 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 53
  %979 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %978, ptr noundef %977)
  %980 = load ptr, ptr %78, align 8, !tbaa !5
  %981 = icmp eq ptr %980, null
  br i1 %981, label %983, label %982

982:                                              ; preds = %972
  call void @_ZdaPv(ptr noundef %980) #11
  br label %983

983:                                              ; preds = %982, %972
  store ptr null, ptr %78, align 8, !tbaa !5
  %984 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %985 = load i32, ptr %75, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %984, i32 noundef %985)
          to label %986 unwind label %1090

986:                                              ; preds = %983
  %987 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 24
  %988 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %987, ptr noundef %984)
  %989 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %990 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %991 = load i32, ptr %990, align 4, !tbaa !43
  %992 = load i32, ptr %75, align 4, !tbaa !41
  %993 = load ptr, ptr %79, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %989, i32 noundef %991, i32 noundef %992, ptr noundef %993, i32 noundef 0)
          to label %994 unwind label %1094

994:                                              ; preds = %986
  %995 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 54
  %996 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %995, ptr noundef %989)
  %997 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 54
  %998 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %997)
  %999 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %998)
  %1000 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 55
  %1001 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %1000, ptr noundef %999)
  %1002 = load ptr, ptr %79, align 8, !tbaa !5
  %1003 = icmp eq ptr %1002, null
  br i1 %1003, label %1005, label %1004

1004:                                             ; preds = %994
  call void @_ZdaPv(ptr noundef %1002) #11
  br label %1005

1005:                                             ; preds = %1004, %994
  store ptr null, ptr %79, align 8, !tbaa !5
  %1006 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %1007 = load i32, ptr %76, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %1006, i32 noundef %1007)
          to label %1008 unwind label %1098

1008:                                             ; preds = %1005
  %1009 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 29
  %1010 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1009, ptr noundef %1006)
  %1011 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %1012 = load i32, ptr %75, align 4, !tbaa !41
  %1013 = load i32, ptr %76, align 4, !tbaa !41
  %1014 = load ptr, ptr %80, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %1011, i32 noundef %1012, i32 noundef %1013, ptr noundef %1014, i32 noundef 0)
          to label %1015 unwind label %1102

1015:                                             ; preds = %1008
  %1016 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 30
  %1017 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1016, ptr noundef %1011)
  %1018 = load ptr, ptr %80, align 8, !tbaa !5
  %1019 = icmp eq ptr %1018, null
  br i1 %1019, label %1021, label %1020

1020:                                             ; preds = %1015
  call void @_ZdaPv(ptr noundef %1018) #11
  br label %1021

1021:                                             ; preds = %1020, %1015
  store ptr null, ptr %80, align 8, !tbaa !5
  %1022 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #12
  %1023 = load i32, ptr %77, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %1022, i32 noundef %1023)
          to label %1024 unwind label %1106

1024:                                             ; preds = %1021
  %1025 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 31
  %1026 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1025, ptr noundef %1022)
  %1027 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %1028 = load i32, ptr %75, align 4, !tbaa !41
  %1029 = load i32, ptr %77, align 4, !tbaa !41
  %1030 = load ptr, ptr %81, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %1027, i32 noundef %1028, i32 noundef %1029, ptr noundef %1030, i32 noundef 0)
          to label %1031 unwind label %1110

1031:                                             ; preds = %1024
  %1032 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 32
  %1033 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1032, ptr noundef %1027)
  %1034 = load ptr, ptr %81, align 8, !tbaa !5
  %1035 = icmp eq ptr %1034, null
  br i1 %1035, label %1037, label %1036

1036:                                             ; preds = %1031
  call void @_ZdaPv(ptr noundef %1034) #11
  br label %1037

1037:                                             ; preds = %1036, %1031
  store ptr null, ptr %81, align 8, !tbaa !5
  %1038 = load ptr, ptr %54, align 8, !tbaa !5
  %1039 = icmp eq ptr %1038, null
  br i1 %1039, label %1041, label %1040

1040:                                             ; preds = %1037
  call void @_ZdaPv(ptr noundef %1038) #11
  br label %1041

1041:                                             ; preds = %1040, %1037
  store ptr null, ptr %54, align 8, !tbaa !5
  %1042 = load ptr, ptr %55, align 8, !tbaa !5
  %1043 = icmp eq ptr %1042, null
  br i1 %1043, label %1045, label %1044

1044:                                             ; preds = %1041
  call void @_ZdaPv(ptr noundef %1042) #11
  br label %1045

1045:                                             ; preds = %1044, %1041
  store ptr null, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %1046 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1047 = load i32, ptr %1046, align 4, !tbaa !44
  %1048 = sext i32 %1047 to i64
  %1049 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1048, i64 4)
  %1050 = extractvalue { i64, i1 } %1049, 1
  %1051 = extractvalue { i64, i1 } %1049, 0
  %1052 = select i1 %1050, i64 -1, i64 %1051
  %1053 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1052) #12
  store ptr %1053, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #9
  %1054 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1055 = load i32, ptr %1054, align 4, !tbaa !44
  %1056 = sext i32 %1055 to i64
  %1057 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1056, i64 4)
  %1058 = extractvalue { i64, i1 } %1057, 1
  %1059 = extractvalue { i64, i1 } %1057, 0
  %1060 = select i1 %1058, i64 -1, i64 %1059
  %1061 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1060) #12
  store ptr %1061, ptr %95, align 8, !tbaa !5
  %1062 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 1
  %1063 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1062)
  %1064 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %1065 = load i32, ptr %1064, align 8, !tbaa !42
  %1066 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %1067 = load i32, ptr %1066, align 4, !tbaa !43
  %1068 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1069 = load i32, ptr %1068, align 4, !tbaa !44
  %1070 = load ptr, ptr %94, align 8, !tbaa !5
  %1071 = load ptr, ptr %95, align 8, !tbaa !5
  %1072 = load ptr, ptr %1063, align 8, !tbaa !39
  %1073 = getelementptr inbounds ptr, ptr %1072, i64 10
  %1074 = load ptr, ptr %1073, align 8
  %1075 = call noundef zeroext i1 %1074(ptr noundef nonnull align 8 dereferenceable(12) %1063, i32 noundef %1065, ptr noundef null, i1 noundef zeroext false, i32 noundef %1067, i32 noundef %1069, ptr noundef %1070, ptr noundef %1071, ptr noundef null)
  %1076 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 21
  %1077 = load i32, ptr %1076, align 4, !tbaa !55
  %1078 = icmp ne i32 %1077, 1
  br i1 %1078, label %1079, label %1131

1079:                                             ; preds = %1045
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #9
  store i32 0, ptr %96, align 4, !tbaa !41
  br label %1080

1080:                                             ; preds = %1127, %1079
  %1081 = load i32, ptr %96, align 4, !tbaa !41
  %1082 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1083 = load i32, ptr %1082, align 4, !tbaa !44
  %1084 = icmp slt i32 %1081, %1083
  br i1 %1084, label %1114, label %1085

1085:                                             ; preds = %1080
  store i32 12, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #9
  br label %1130

1086:                                             ; preds = %966
  %1087 = landingpad { ptr, i32 }
          cleanup
  %1088 = extractvalue { ptr, i32 } %1087, 0
  store ptr %1088, ptr %36, align 8
  %1089 = extractvalue { ptr, i32 } %1087, 1
  store i32 %1089, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %967, i64 noundef 40) #11
  br label %1804

1090:                                             ; preds = %983
  %1091 = landingpad { ptr, i32 }
          cleanup
  %1092 = extractvalue { ptr, i32 } %1091, 0
  store ptr %1092, ptr %36, align 8
  %1093 = extractvalue { ptr, i32 } %1091, 1
  store i32 %1093, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %984, i64 noundef 16) #11
  br label %1804

1094:                                             ; preds = %986
  %1095 = landingpad { ptr, i32 }
          cleanup
  %1096 = extractvalue { ptr, i32 } %1095, 0
  store ptr %1096, ptr %36, align 8
  %1097 = extractvalue { ptr, i32 } %1095, 1
  store i32 %1097, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %989, i64 noundef 40) #11
  br label %1804

1098:                                             ; preds = %1005
  %1099 = landingpad { ptr, i32 }
          cleanup
  %1100 = extractvalue { ptr, i32 } %1099, 0
  store ptr %1100, ptr %36, align 8
  %1101 = extractvalue { ptr, i32 } %1099, 1
  store i32 %1101, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1006, i64 noundef 16) #11
  br label %1804

1102:                                             ; preds = %1008
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %36, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1011, i64 noundef 40) #11
  br label %1804

1106:                                             ; preds = %1021
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %36, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1022, i64 noundef 16) #11
  br label %1804

1110:                                             ; preds = %1024
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %36, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1027, i64 noundef 40) #11
  br label %1804

1114:                                             ; preds = %1080
  %1115 = load ptr, ptr %94, align 8, !tbaa !5
  %1116 = load i32, ptr %96, align 4, !tbaa !41
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds i32, ptr %1115, i64 %1117
  %1119 = load i32, ptr %1118, align 4, !tbaa !41
  %1120 = add nsw i32 %1119, 1
  store i32 %1120, ptr %1118, align 4, !tbaa !41
  %1121 = load ptr, ptr %95, align 8, !tbaa !5
  %1122 = load i32, ptr %96, align 4, !tbaa !41
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1121, i64 %1123
  %1125 = load i32, ptr %1124, align 4, !tbaa !41
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr %1124, align 4, !tbaa !41
  br label %1127

1127:                                             ; preds = %1114
  %1128 = load i32, ptr %96, align 4, !tbaa !41
  %1129 = add nsw i32 %1128, 1
  store i32 %1129, ptr %96, align 4, !tbaa !41
  br label %1080, !llvm.loop !56

1130:                                             ; preds = %1085
  br label %1131

1131:                                             ; preds = %1130, %1045
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #9
  %1132 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 5
  %1133 = load i32, ptr %1132, align 8, !tbaa !48
  %1134 = icmp eq i32 %1133, 0
  br i1 %1134, label %1135, label %1138

1135:                                             ; preds = %1131
  %1136 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1137 = load i32, ptr %1136, align 4, !tbaa !44
  store i32 %1137, ptr %97, align 4, !tbaa !41
  br label %1144

1138:                                             ; preds = %1131
  %1139 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1140 = load i32, ptr %1139, align 4, !tbaa !44
  %1141 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %1142 = load i32, ptr %1141, align 8, !tbaa !46
  %1143 = add nsw i32 %1140, %1142
  store i32 %1143, ptr %97, align 4, !tbaa !41
  br label %1144

1144:                                             ; preds = %1138, %1135
  %1145 = load i32, ptr %97, align 4, !tbaa !41
  %1146 = sext i32 %1145 to i64
  %1147 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1146, i64 4)
  %1148 = extractvalue { i64, i1 } %1147, 1
  %1149 = extractvalue { i64, i1 } %1147, 0
  %1150 = select i1 %1148, i64 -1, i64 %1149
  %1151 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1150) #12
  %1152 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  store ptr %1151, ptr %1152, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %1153 = load i32, ptr %97, align 4, !tbaa !41
  %1154 = sext i32 %1153 to i64
  %1155 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1154, i64 4)
  %1156 = extractvalue { i64, i1 } %1155, 1
  %1157 = extractvalue { i64, i1 } %1155, 0
  %1158 = select i1 %1156, i64 -1, i64 %1157
  %1159 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1158) #12
  store ptr %1159, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %1160 = load i32, ptr %97, align 4, !tbaa !41
  %1161 = sext i32 %1160 to i64
  %1162 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1161, i64 4)
  %1163 = extractvalue { i64, i1 } %1162, 1
  %1164 = extractvalue { i64, i1 } %1162, 0
  %1165 = select i1 %1163, i64 -1, i64 %1164
  %1166 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1165) #12
  store ptr %1166, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #9
  store i32 0, ptr %100, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %1167 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 53
  %1168 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1167)
  %1169 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %1168)
  store ptr %1169, ptr %101, align 8, !tbaa !5
  %1170 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1171 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %1170)
  br i1 %1171, label %1172, label %1234

1172:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #9
  %1173 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1174 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1173)
  %1175 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %1174)
  store ptr %1175, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #9
  store i32 0, ptr %103, align 4, !tbaa !41
  br label %1176

1176:                                             ; preds = %1230, %1172
  %1177 = load i32, ptr %103, align 4, !tbaa !41
  %1178 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1179 = load i32, ptr %1178, align 4, !tbaa !44
  %1180 = icmp slt i32 %1177, %1179
  br i1 %1180, label %1182, label %1181

1181:                                             ; preds = %1176
  store i32 15, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  br label %1233

1182:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #9
  %1183 = load ptr, ptr %101, align 8, !tbaa !5
  %1184 = load ptr, ptr %94, align 8, !tbaa !5
  %1185 = load i32, ptr %103, align 4, !tbaa !41
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds i32, ptr %1184, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !41
  %1189 = sub nsw i32 %1188, 1
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds i32, ptr %1183, i64 %1190
  %1192 = load i32, ptr %1191, align 4, !tbaa !41
  store i32 %1192, ptr %104, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #9
  %1193 = load ptr, ptr %102, align 8, !tbaa !5
  %1194 = load ptr, ptr %95, align 8, !tbaa !5
  %1195 = load i32, ptr %103, align 4, !tbaa !41
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds i32, ptr %1194, i64 %1196
  %1198 = load i32, ptr %1197, align 4, !tbaa !41
  %1199 = sub nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds i32, ptr %1193, i64 %1200
  %1202 = load i32, ptr %1201, align 4, !tbaa !41
  store i32 %1202, ptr %105, align 4, !tbaa !41
  %1203 = load i32, ptr %105, align 4, !tbaa !41
  %1204 = icmp ne i32 %1203, -1
  br i1 %1204, label %1205, label %1229

1205:                                             ; preds = %1182
  %1206 = load i32, ptr %104, align 4, !tbaa !41
  %1207 = icmp ne i32 %1206, -1
  br i1 %1207, label %1208, label %1229

1208:                                             ; preds = %1205
  %1209 = load i32, ptr %103, align 4, !tbaa !41
  %1210 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  %1211 = load ptr, ptr %1210, align 8, !tbaa !36
  %1212 = load i32, ptr %100, align 4, !tbaa !41
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds i32, ptr %1211, i64 %1213
  store i32 %1209, ptr %1214, align 4, !tbaa !41
  %1215 = load i32, ptr %104, align 4, !tbaa !41
  %1216 = add nsw i32 %1215, 1
  %1217 = load ptr, ptr %98, align 8, !tbaa !5
  %1218 = load i32, ptr %100, align 4, !tbaa !41
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds i32, ptr %1217, i64 %1219
  store i32 %1216, ptr %1220, align 4, !tbaa !41
  %1221 = load i32, ptr %105, align 4, !tbaa !41
  %1222 = add nsw i32 %1221, 1
  %1223 = load ptr, ptr %99, align 8, !tbaa !5
  %1224 = load i32, ptr %100, align 4, !tbaa !41
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds i32, ptr %1223, i64 %1225
  store i32 %1222, ptr %1226, align 4, !tbaa !41
  %1227 = load i32, ptr %100, align 4, !tbaa !41
  %1228 = add nsw i32 %1227, 1
  store i32 %1228, ptr %100, align 4, !tbaa !41
  br label %1229

1229:                                             ; preds = %1208, %1205, %1182
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #9
  br label %1230

1230:                                             ; preds = %1229
  %1231 = load i32, ptr %103, align 4, !tbaa !41
  %1232 = add nsw i32 %1231, 1
  store i32 %1232, ptr %103, align 4, !tbaa !41
  br label %1176, !llvm.loop !57

1233:                                             ; preds = %1181
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  br label %1286

1234:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #9
  store i32 0, ptr %106, align 4, !tbaa !41
  br label %1235

1235:                                             ; preds = %1282, %1234
  %1236 = load i32, ptr %106, align 4, !tbaa !41
  %1237 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1238 = load i32, ptr %1237, align 4, !tbaa !44
  %1239 = icmp slt i32 %1236, %1238
  br i1 %1239, label %1241, label %1240

1240:                                             ; preds = %1235
  store i32 18, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #9
  br label %1285

1241:                                             ; preds = %1235
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #9
  %1242 = load ptr, ptr %101, align 8, !tbaa !5
  %1243 = load ptr, ptr %94, align 8, !tbaa !5
  %1244 = load i32, ptr %106, align 4, !tbaa !41
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds i32, ptr %1243, i64 %1245
  %1247 = load i32, ptr %1246, align 4, !tbaa !41
  %1248 = sub nsw i32 %1247, 1
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds i32, ptr %1242, i64 %1249
  %1251 = load i32, ptr %1250, align 4, !tbaa !41
  store i32 %1251, ptr %107, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  %1252 = load ptr, ptr %95, align 8, !tbaa !5
  %1253 = load i32, ptr %106, align 4, !tbaa !41
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds i32, ptr %1252, i64 %1254
  %1256 = load i32, ptr %1255, align 4, !tbaa !41
  %1257 = sub nsw i32 %1256, 1
  store i32 %1257, ptr %108, align 4, !tbaa !41
  %1258 = load i32, ptr %107, align 4, !tbaa !41
  %1259 = icmp ne i32 %1258, -1
  br i1 %1259, label %1260, label %1281

1260:                                             ; preds = %1241
  %1261 = load i32, ptr %106, align 4, !tbaa !41
  %1262 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  %1263 = load ptr, ptr %1262, align 8, !tbaa !36
  %1264 = load i32, ptr %100, align 4, !tbaa !41
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds i32, ptr %1263, i64 %1265
  store i32 %1261, ptr %1266, align 4, !tbaa !41
  %1267 = load i32, ptr %107, align 4, !tbaa !41
  %1268 = add nsw i32 %1267, 1
  %1269 = load ptr, ptr %98, align 8, !tbaa !5
  %1270 = load i32, ptr %100, align 4, !tbaa !41
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds i32, ptr %1269, i64 %1271
  store i32 %1268, ptr %1272, align 4, !tbaa !41
  %1273 = load i32, ptr %108, align 4, !tbaa !41
  %1274 = add nsw i32 %1273, 1
  %1275 = load ptr, ptr %99, align 8, !tbaa !5
  %1276 = load i32, ptr %100, align 4, !tbaa !41
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds i32, ptr %1275, i64 %1277
  store i32 %1274, ptr %1278, align 4, !tbaa !41
  %1279 = load i32, ptr %100, align 4, !tbaa !41
  %1280 = add nsw i32 %1279, 1
  store i32 %1280, ptr %100, align 4, !tbaa !41
  br label %1281

1281:                                             ; preds = %1260, %1241
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #9
  br label %1282

1282:                                             ; preds = %1281
  %1283 = load i32, ptr %106, align 4, !tbaa !41
  %1284 = add nsw i32 %1283, 1
  store i32 %1284, ptr %106, align 4, !tbaa !41
  br label %1235, !llvm.loop !58

1285:                                             ; preds = %1240
  br label %1286

1286:                                             ; preds = %1285, %1233
  %1287 = load i32, ptr %100, align 4, !tbaa !41
  %1288 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 15
  store i32 %1287, ptr %1288, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  %1289 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 5
  %1290 = load i32, ptr %1289, align 8, !tbaa !48
  %1291 = icmp eq i32 %1290, 0
  br i1 %1291, label %1292, label %1296

1292:                                             ; preds = %1286
  %1293 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 15
  %1294 = load i32, ptr %1293, align 4, !tbaa !59
  %1295 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 14
  store i32 %1294, ptr %1295, align 8, !tbaa !60
  store i32 0, ptr %109, align 4, !tbaa !41
  br label %1337

1296:                                             ; preds = %1286
  %1297 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 15
  %1298 = load i32, ptr %1297, align 4, !tbaa !59
  %1299 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %1300 = load i32, ptr %1299, align 8, !tbaa !46
  %1301 = add nsw i32 %1298, %1300
  %1302 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 14
  store i32 %1301, ptr %1302, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #9
  store i32 0, ptr %110, align 4, !tbaa !41
  br label %1303

1303:                                             ; preds = %1331, %1296
  %1304 = load i32, ptr %110, align 4, !tbaa !41
  %1305 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %1306 = load i32, ptr %1305, align 8, !tbaa !46
  %1307 = icmp slt i32 %1304, %1306
  br i1 %1307, label %1309, label %1308

1308:                                             ; preds = %1303
  store i32 21, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  br label %1334

1309:                                             ; preds = %1303
  %1310 = load i32, ptr %74, align 4, !tbaa !41
  %1311 = load i32, ptr %110, align 4, !tbaa !41
  %1312 = add nsw i32 %1310, %1311
  %1313 = add nsw i32 %1312, 1
  %1314 = load ptr, ptr %98, align 8, !tbaa !5
  %1315 = load i32, ptr %100, align 4, !tbaa !41
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds i32, ptr %1314, i64 %1316
  store i32 %1313, ptr %1317, align 4, !tbaa !41
  %1318 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 58
  %1319 = load ptr, ptr %1318, align 8, !tbaa !38
  %1320 = load i32, ptr %110, align 4, !tbaa !41
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds i32, ptr %1319, i64 %1321
  %1323 = load i32, ptr %1322, align 4, !tbaa !41
  %1324 = add nsw i32 %1323, 1
  %1325 = load ptr, ptr %99, align 8, !tbaa !5
  %1326 = load i32, ptr %100, align 4, !tbaa !41
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds i32, ptr %1325, i64 %1327
  store i32 %1324, ptr %1328, align 4, !tbaa !41
  %1329 = load i32, ptr %100, align 4, !tbaa !41
  %1330 = add nsw i32 %1329, 1
  store i32 %1330, ptr %100, align 4, !tbaa !41
  br label %1331

1331:                                             ; preds = %1309
  %1332 = load i32, ptr %110, align 4, !tbaa !41
  %1333 = add nsw i32 %1332, 1
  store i32 %1333, ptr %110, align 4, !tbaa !41
  br label %1303, !llvm.loop !61

1334:                                             ; preds = %1308
  %1335 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 20
  %1336 = load i32, ptr %1335, align 8, !tbaa !46
  store i32 %1336, ptr %109, align 4, !tbaa !41
  br label %1337

1337:                                             ; preds = %1334, %1292
  %1338 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %1339 = load i32, ptr %74, align 4, !tbaa !41
  %1340 = load i32, ptr %109, align 4, !tbaa !41
  %1341 = add nsw i32 %1339, %1340
  %1342 = load i32, ptr %56, align 4, !tbaa !41
  %1343 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 14
  %1344 = load i32, ptr %1343, align 8, !tbaa !60
  %1345 = load ptr, ptr %98, align 8, !tbaa !5
  %1346 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %1338, i32 noundef %1341, i32 noundef %1342, i32 noundef %1344, ptr noundef %1345, ptr noundef %1346)
          to label %1347 unwind label %1389

1347:                                             ; preds = %1337
  %1348 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 33
  %1349 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1348, ptr noundef %1338)
  %1350 = load ptr, ptr %98, align 8, !tbaa !5
  %1351 = icmp eq ptr %1350, null
  br i1 %1351, label %1353, label %1352

1352:                                             ; preds = %1347
  call void @_ZdaPv(ptr noundef %1350) #11
  br label %1353

1353:                                             ; preds = %1352, %1347
  store ptr null, ptr %98, align 8, !tbaa !5
  %1354 = load ptr, ptr %99, align 8, !tbaa !5
  %1355 = icmp eq ptr %1354, null
  br i1 %1355, label %1357, label %1356

1356:                                             ; preds = %1353
  call void @_ZdaPv(ptr noundef %1354) #11
  br label %1357

1357:                                             ; preds = %1356, %1353
  store ptr null, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %1358 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1359 = load i32, ptr %1358, align 4, !tbaa !44
  %1360 = sext i32 %1359 to i64
  %1361 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1360, i64 4)
  %1362 = extractvalue { i64, i1 } %1361, 1
  %1363 = extractvalue { i64, i1 } %1361, 0
  %1364 = select i1 %1362, i64 -1, i64 %1363
  %1365 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1364) #12
  store ptr %1365, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %1366 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1367 = load i32, ptr %1366, align 4, !tbaa !44
  %1368 = sext i32 %1367 to i64
  %1369 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1368, i64 4)
  %1370 = extractvalue { i64, i1 } %1369, 1
  %1371 = extractvalue { i64, i1 } %1369, 0
  %1372 = select i1 %1370, i64 -1, i64 %1371
  %1373 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1372) #12
  store ptr %1373, ptr %112, align 8, !tbaa !5
  store i32 0, ptr %100, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #9
  %1374 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 55
  %1375 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1374)
  %1376 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %1375)
  store ptr %1376, ptr %113, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1378 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %1377)
  br i1 %1378, label %1379, label %1448

1379:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1380 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1381 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1380)
  %1382 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %1381)
  store ptr %1382, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #9
  store i32 0, ptr %115, align 4, !tbaa !41
  br label %1383

1383:                                             ; preds = %1444, %1379
  %1384 = load i32, ptr %115, align 4, !tbaa !41
  %1385 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1386 = load i32, ptr %1385, align 4, !tbaa !44
  %1387 = icmp slt i32 %1384, %1386
  br i1 %1387, label %1393, label %1388

1388:                                             ; preds = %1383
  store i32 24, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #9
  br label %1447

1389:                                             ; preds = %1337
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %36, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1338, i64 noundef 40) #11
  br label %1803

1393:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #9
  %1394 = load ptr, ptr %113, align 8, !tbaa !5
  %1395 = load ptr, ptr %94, align 8, !tbaa !5
  %1396 = load i32, ptr %115, align 4, !tbaa !41
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds i32, ptr %1395, i64 %1397
  %1399 = load i32, ptr %1398, align 4, !tbaa !41
  %1400 = sub nsw i32 %1399, 1
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds i32, ptr %1394, i64 %1401
  %1403 = load i32, ptr %1402, align 4, !tbaa !41
  store i32 %1403, ptr %116, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #9
  %1404 = load ptr, ptr %114, align 8, !tbaa !5
  %1405 = load ptr, ptr %95, align 8, !tbaa !5
  %1406 = load i32, ptr %115, align 4, !tbaa !41
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds i32, ptr %1405, i64 %1407
  %1409 = load i32, ptr %1408, align 4, !tbaa !41
  %1410 = sub nsw i32 %1409, 1
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i32, ptr %1404, i64 %1411
  %1413 = load i32, ptr %1412, align 4, !tbaa !41
  store i32 %1413, ptr %117, align 4, !tbaa !41
  %1414 = load i32, ptr %117, align 4, !tbaa !41
  %1415 = icmp ne i32 %1414, -1
  br i1 %1415, label %1416, label %1443

1416:                                             ; preds = %1393
  %1417 = load i32, ptr %116, align 4, !tbaa !41
  %1418 = icmp ne i32 %1417, -1
  br i1 %1418, label %1419, label %1443

1419:                                             ; preds = %1416
  %1420 = load i32, ptr %115, align 4, !tbaa !41
  %1421 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  %1422 = load ptr, ptr %1421, align 8, !tbaa !36
  %1423 = load i32, ptr %100, align 4, !tbaa !41
  %1424 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 15
  %1425 = load i32, ptr %1424, align 4, !tbaa !59
  %1426 = add nsw i32 %1423, %1425
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds i32, ptr %1422, i64 %1427
  store i32 %1420, ptr %1428, align 4, !tbaa !41
  %1429 = load i32, ptr %116, align 4, !tbaa !41
  %1430 = add nsw i32 %1429, 1
  %1431 = load ptr, ptr %111, align 8, !tbaa !5
  %1432 = load i32, ptr %100, align 4, !tbaa !41
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds i32, ptr %1431, i64 %1433
  store i32 %1430, ptr %1434, align 4, !tbaa !41
  %1435 = load i32, ptr %117, align 4, !tbaa !41
  %1436 = add nsw i32 %1435, 1
  %1437 = load ptr, ptr %112, align 8, !tbaa !5
  %1438 = load i32, ptr %100, align 4, !tbaa !41
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds i32, ptr %1437, i64 %1439
  store i32 %1436, ptr %1440, align 4, !tbaa !41
  %1441 = load i32, ptr %100, align 4, !tbaa !41
  %1442 = add nsw i32 %1441, 1
  store i32 %1442, ptr %100, align 4, !tbaa !41
  br label %1443

1443:                                             ; preds = %1419, %1416, %1393
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #9
  br label %1444

1444:                                             ; preds = %1443
  %1445 = load i32, ptr %115, align 4, !tbaa !41
  %1446 = add nsw i32 %1445, 1
  store i32 %1446, ptr %115, align 4, !tbaa !41
  br label %1383, !llvm.loop !62

1447:                                             ; preds = %1388
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  br label %1503

1448:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #9
  store i32 0, ptr %118, align 4, !tbaa !41
  br label %1449

1449:                                             ; preds = %1499, %1448
  %1450 = load i32, ptr %118, align 4, !tbaa !41
  %1451 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 17
  %1452 = load i32, ptr %1451, align 4, !tbaa !44
  %1453 = icmp slt i32 %1450, %1452
  br i1 %1453, label %1455, label %1454

1454:                                             ; preds = %1449
  store i32 27, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #9
  br label %1502

1455:                                             ; preds = %1449
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #9
  %1456 = load ptr, ptr %113, align 8, !tbaa !5
  %1457 = load ptr, ptr %94, align 8, !tbaa !5
  %1458 = load i32, ptr %118, align 4, !tbaa !41
  %1459 = sext i32 %1458 to i64
  %1460 = getelementptr inbounds i32, ptr %1457, i64 %1459
  %1461 = load i32, ptr %1460, align 4, !tbaa !41
  %1462 = sub nsw i32 %1461, 1
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds i32, ptr %1456, i64 %1463
  %1465 = load i32, ptr %1464, align 4, !tbaa !41
  store i32 %1465, ptr %119, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #9
  %1466 = load ptr, ptr %95, align 8, !tbaa !5
  %1467 = load i32, ptr %118, align 4, !tbaa !41
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds i32, ptr %1466, i64 %1468
  %1470 = load i32, ptr %1469, align 4, !tbaa !41
  %1471 = sub nsw i32 %1470, 1
  store i32 %1471, ptr %120, align 4, !tbaa !41
  %1472 = load i32, ptr %119, align 4, !tbaa !41
  %1473 = icmp ne i32 %1472, -1
  br i1 %1473, label %1474, label %1498

1474:                                             ; preds = %1455
  %1475 = load i32, ptr %118, align 4, !tbaa !41
  %1476 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 56
  %1477 = load ptr, ptr %1476, align 8, !tbaa !36
  %1478 = load i32, ptr %100, align 4, !tbaa !41
  %1479 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 15
  %1480 = load i32, ptr %1479, align 4, !tbaa !59
  %1481 = add nsw i32 %1478, %1480
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds i32, ptr %1477, i64 %1482
  store i32 %1475, ptr %1483, align 4, !tbaa !41
  %1484 = load i32, ptr %119, align 4, !tbaa !41
  %1485 = add nsw i32 %1484, 1
  %1486 = load ptr, ptr %111, align 8, !tbaa !5
  %1487 = load i32, ptr %100, align 4, !tbaa !41
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds i32, ptr %1486, i64 %1488
  store i32 %1485, ptr %1489, align 4, !tbaa !41
  %1490 = load i32, ptr %120, align 4, !tbaa !41
  %1491 = add nsw i32 %1490, 1
  %1492 = load ptr, ptr %112, align 8, !tbaa !5
  %1493 = load i32, ptr %100, align 4, !tbaa !41
  %1494 = sext i32 %1493 to i64
  %1495 = getelementptr inbounds i32, ptr %1492, i64 %1494
  store i32 %1491, ptr %1495, align 4, !tbaa !41
  %1496 = load i32, ptr %100, align 4, !tbaa !41
  %1497 = add nsw i32 %1496, 1
  store i32 %1497, ptr %100, align 4, !tbaa !41
  br label %1498

1498:                                             ; preds = %1474, %1455
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #9
  br label %1499

1499:                                             ; preds = %1498
  %1500 = load i32, ptr %118, align 4, !tbaa !41
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr %118, align 4, !tbaa !41
  br label %1449, !llvm.loop !63

1502:                                             ; preds = %1454
  br label %1503

1503:                                             ; preds = %1502, %1447
  %1504 = load i32, ptr %100, align 4, !tbaa !41
  %1505 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 16
  store i32 %1504, ptr %1505, align 8, !tbaa !64
  %1506 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %1507 = load i32, ptr %75, align 4, !tbaa !41
  %1508 = load i32, ptr %56, align 4, !tbaa !41
  %1509 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 16
  %1510 = load i32, ptr %1509, align 8, !tbaa !64
  %1511 = load ptr, ptr %111, align 8, !tbaa !5
  %1512 = load ptr, ptr %112, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %1506, i32 noundef %1507, i32 noundef %1508, i32 noundef %1510, ptr noundef %1511, ptr noundef %1512)
          to label %1513 unwind label %1600

1513:                                             ; preds = %1503
  %1514 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 34
  %1515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1514, ptr noundef %1506)
  %1516 = load ptr, ptr %111, align 8, !tbaa !5
  %1517 = icmp eq ptr %1516, null
  br i1 %1517, label %1519, label %1518

1518:                                             ; preds = %1513
  call void @_ZdaPv(ptr noundef %1516) #11
  br label %1519

1519:                                             ; preds = %1518, %1513
  store ptr null, ptr %111, align 8, !tbaa !5
  %1520 = load ptr, ptr %112, align 8, !tbaa !5
  %1521 = icmp eq ptr %1520, null
  br i1 %1521, label %1523, label %1522

1522:                                             ; preds = %1519
  call void @_ZdaPv(ptr noundef %1520) #11
  br label %1523

1523:                                             ; preds = %1522, %1519
  store ptr null, ptr %112, align 8, !tbaa !5
  %1524 = load ptr, ptr %94, align 8, !tbaa !5
  %1525 = icmp eq ptr %1524, null
  br i1 %1525, label %1527, label %1526

1526:                                             ; preds = %1523
  call void @_ZdaPv(ptr noundef %1524) #11
  br label %1527

1527:                                             ; preds = %1526, %1523
  store ptr null, ptr %94, align 8, !tbaa !5
  %1528 = load ptr, ptr %95, align 8, !tbaa !5
  %1529 = icmp eq ptr %1528, null
  br i1 %1529, label %1531, label %1530

1530:                                             ; preds = %1527
  call void @_ZdaPv(ptr noundef %1528) #11
  br label %1531

1531:                                             ; preds = %1530, %1527
  store ptr null, ptr %95, align 8, !tbaa !5
  %1532 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 11
  %1533 = load i32, ptr %1532, align 4, !tbaa !65
  %1534 = icmp eq i32 %1533, 0
  br i1 %1534, label %1535, label %1797

1535:                                             ; preds = %1531
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  %1536 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1537 = load i32, ptr %1536, align 8, !tbaa !45
  %1538 = sext i32 %1537 to i64
  %1539 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1538, i64 4)
  %1540 = extractvalue { i64, i1 } %1539, 1
  %1541 = extractvalue { i64, i1 } %1539, 0
  %1542 = select i1 %1540, i64 -1, i64 %1541
  %1543 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1542) #12
  store ptr %1543, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  %1544 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1545 = load i32, ptr %1544, align 8, !tbaa !45
  %1546 = sext i32 %1545 to i64
  %1547 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1546, i64 4)
  %1548 = extractvalue { i64, i1 } %1547, 1
  %1549 = extractvalue { i64, i1 } %1547, 0
  %1550 = select i1 %1548, i64 -1, i64 %1549
  %1551 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1550) #12
  store ptr %1551, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1552 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1553 = load i32, ptr %1552, align 8, !tbaa !45
  %1554 = sext i32 %1553 to i64
  %1555 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1554, i64 4)
  %1556 = extractvalue { i64, i1 } %1555, 1
  %1557 = extractvalue { i64, i1 } %1555, 0
  %1558 = select i1 %1556, i64 -1, i64 %1557
  %1559 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1558) #12
  store ptr %1559, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #9
  %1560 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1561 = load i32, ptr %1560, align 8, !tbaa !45
  %1562 = sext i32 %1561 to i64
  %1563 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1562, i64 4)
  %1564 = extractvalue { i64, i1 } %1563, 1
  %1565 = extractvalue { i64, i1 } %1563, 0
  %1566 = select i1 %1564, i64 -1, i64 %1565
  %1567 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1566) #12
  store ptr %1567, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #9
  %1568 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 1
  %1569 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1568)
  %1570 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 12
  %1571 = load i32, ptr %1570, align 8, !tbaa !42
  %1572 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 13
  %1573 = load i32, ptr %1572, align 4, !tbaa !43
  %1574 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1575 = load i32, ptr %1574, align 8, !tbaa !45
  %1576 = load ptr, ptr %121, align 8, !tbaa !5
  %1577 = load ptr, ptr %122, align 8, !tbaa !5
  %1578 = load ptr, ptr %1569, align 8, !tbaa !39
  %1579 = getelementptr inbounds ptr, ptr %1578, i64 11
  %1580 = load ptr, ptr %1579, align 8
  %1581 = call noundef zeroext i1 %1580(ptr noundef nonnull align 8 dereferenceable(12) %1569, i32 noundef %1571, ptr noundef null, i1 noundef zeroext false, double noundef 0.000000e+00, i32 noundef %1573, ptr noundef null, i1 noundef zeroext false, i32 noundef %1575, ptr noundef %1576, ptr noundef %1577, ptr noundef null)
  %1582 = zext i1 %1581 to i8
  store i8 %1582, ptr %125, align 1, !tbaa !27
  %1583 = load i8, ptr %125, align 1, !tbaa !27, !range !28, !noundef !29
  %1584 = trunc i8 %1583 to i1
  br i1 %1584, label %1621, label %1585

1585:                                             ; preds = %1535
  %1586 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %1587 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1586)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1587, i32 noundef 1, i32 noundef 3, ptr noundef @.str.51)
  %1588 = load ptr, ptr %123, align 8, !tbaa !5
  %1589 = icmp eq ptr %1588, null
  br i1 %1589, label %1591, label %1590

1590:                                             ; preds = %1585
  call void @_ZdaPv(ptr noundef %1588) #11
  br label %1591

1591:                                             ; preds = %1590, %1585
  %1592 = load ptr, ptr %124, align 8, !tbaa !5
  %1593 = icmp eq ptr %1592, null
  br i1 %1593, label %1595, label %1594

1594:                                             ; preds = %1591
  call void @_ZdaPv(ptr noundef %1592) #11
  br label %1595

1595:                                             ; preds = %1594, %1591
  store i1 true, ptr %130, align 1
  %1596 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.52, ptr noundef nonnull align 1 dereferenceable(1) %127)
          to label %1597 unwind label %1604

1597:                                             ; preds = %1595
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %129)
          to label %1598 unwind label %1608

1598:                                             ; preds = %1597
  invoke void @_ZN10SimTKIpopt14OPTION_INVALIDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %1596, ptr noundef %126, ptr noundef %128, i32 noundef 597)
          to label %1599 unwind label %1612

1599:                                             ; preds = %1598
  store i1 false, ptr %130, align 1
  invoke void @__cxa_throw(ptr %1596, ptr @_ZTIN10SimTKIpopt14OPTION_INVALIDE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %1873 unwind label %1612

1600:                                             ; preds = %1503
  %1601 = landingpad { ptr, i32 }
          cleanup
  %1602 = extractvalue { ptr, i32 } %1601, 0
  store ptr %1602, ptr %36, align 8
  %1603 = extractvalue { ptr, i32 } %1601, 1
  store i32 %1603, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1506, i64 noundef 40) #11
  br label %1802

1604:                                             ; preds = %1595
  %1605 = landingpad { ptr, i32 }
          cleanup
  %1606 = extractvalue { ptr, i32 } %1605, 0
  store ptr %1606, ptr %36, align 8
  %1607 = extractvalue { ptr, i32 } %1605, 1
  store i32 %1607, ptr %37, align 4
  br label %1617

1608:                                             ; preds = %1597
  %1609 = landingpad { ptr, i32 }
          cleanup
  %1610 = extractvalue { ptr, i32 } %1609, 0
  store ptr %1610, ptr %36, align 8
  %1611 = extractvalue { ptr, i32 } %1609, 1
  store i32 %1611, ptr %37, align 4
  br label %1616

1612:                                             ; preds = %1599, %1598
  %1613 = landingpad { ptr, i32 }
          cleanup
  %1614 = extractvalue { ptr, i32 } %1613, 0
  store ptr %1614, ptr %36, align 8
  %1615 = extractvalue { ptr, i32 } %1613, 1
  store i32 %1615, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  br label %1616

1616:                                             ; preds = %1612, %1608
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %129) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #9
  br label %1617

1617:                                             ; preds = %1616, %1604
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #9
  %1618 = load i1, ptr %130, align 1
  br i1 %1618, label %1619, label %1620

1619:                                             ; preds = %1617
  call void @__cxa_free_exception(ptr %1596) #9
  br label %1620

1620:                                             ; preds = %1619, %1617
  br label %1796

1621:                                             ; preds = %1535
  %1622 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 21
  %1623 = load i32, ptr %1622, align 4, !tbaa !55
  %1624 = icmp ne i32 %1623, 1
  br i1 %1624, label %1625, label %1649

1625:                                             ; preds = %1621
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #9
  store i32 0, ptr %131, align 4, !tbaa !41
  br label %1626

1626:                                             ; preds = %1645, %1625
  %1627 = load i32, ptr %131, align 4, !tbaa !41
  %1628 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1629 = load i32, ptr %1628, align 8, !tbaa !45
  %1630 = icmp slt i32 %1627, %1629
  br i1 %1630, label %1632, label %1631

1631:                                             ; preds = %1626
  store i32 30, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #9
  br label %1648

1632:                                             ; preds = %1626
  %1633 = load ptr, ptr %121, align 8, !tbaa !5
  %1634 = load i32, ptr %131, align 4, !tbaa !41
  %1635 = sext i32 %1634 to i64
  %1636 = getelementptr inbounds i32, ptr %1633, i64 %1635
  %1637 = load i32, ptr %1636, align 4, !tbaa !41
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %1636, align 4, !tbaa !41
  %1639 = load ptr, ptr %122, align 8, !tbaa !5
  %1640 = load i32, ptr %131, align 4, !tbaa !41
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds i32, ptr %1639, i64 %1641
  %1643 = load i32, ptr %1642, align 4, !tbaa !41
  %1644 = add nsw i32 %1643, 1
  store i32 %1644, ptr %1642, align 4, !tbaa !41
  br label %1645

1645:                                             ; preds = %1632
  %1646 = load i32, ptr %131, align 4, !tbaa !41
  %1647 = add nsw i32 %1646, 1
  store i32 %1647, ptr %131, align 4, !tbaa !41
  br label %1626, !llvm.loop !66

1648:                                             ; preds = %1631
  br label %1649

1649:                                             ; preds = %1648, %1621
  store i32 0, ptr %100, align 4, !tbaa !41
  %1650 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1651 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %1650)
  br i1 %1651, label %1652, label %1723

1652:                                             ; preds = %1649
  %1653 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1654 = load i32, ptr %1653, align 8, !tbaa !45
  %1655 = sext i32 %1654 to i64
  %1656 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1655, i64 4)
  %1657 = extractvalue { i64, i1 } %1656, 1
  %1658 = extractvalue { i64, i1 } %1656, 0
  %1659 = select i1 %1657, i64 -1, i64 %1658
  %1660 = call noalias noundef nonnull ptr @_Znam(i64 noundef %1659) #12
  %1661 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 57
  store ptr %1660, ptr %1661, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %1662 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 46
  %1663 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1662)
  %1664 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %1663)
  store ptr %1664, ptr %132, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #9
  store i32 0, ptr %133, align 4, !tbaa !41
  br label %1665

1665:                                             ; preds = %1719, %1652
  %1666 = load i32, ptr %133, align 4, !tbaa !41
  %1667 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1668 = load i32, ptr %1667, align 8, !tbaa !45
  %1669 = icmp slt i32 %1666, %1668
  br i1 %1669, label %1671, label %1670

1670:                                             ; preds = %1665
  store i32 33, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  br label %1722

1671:                                             ; preds = %1665
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #9
  %1672 = load ptr, ptr %132, align 8, !tbaa !5
  %1673 = load ptr, ptr %121, align 8, !tbaa !5
  %1674 = load i32, ptr %133, align 4, !tbaa !41
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds i32, ptr %1673, i64 %1675
  %1677 = load i32, ptr %1676, align 4, !tbaa !41
  %1678 = sub nsw i32 %1677, 1
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds i32, ptr %1672, i64 %1679
  %1681 = load i32, ptr %1680, align 4, !tbaa !41
  store i32 %1681, ptr %134, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #9
  %1682 = load ptr, ptr %132, align 8, !tbaa !5
  %1683 = load ptr, ptr %122, align 8, !tbaa !5
  %1684 = load i32, ptr %133, align 4, !tbaa !41
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds i32, ptr %1683, i64 %1685
  %1687 = load i32, ptr %1686, align 4, !tbaa !41
  %1688 = sub nsw i32 %1687, 1
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds i32, ptr %1682, i64 %1689
  %1691 = load i32, ptr %1690, align 4, !tbaa !41
  store i32 %1691, ptr %135, align 4, !tbaa !41
  %1692 = load i32, ptr %134, align 4, !tbaa !41
  %1693 = icmp ne i32 %1692, -1
  br i1 %1693, label %1694, label %1718

1694:                                             ; preds = %1671
  %1695 = load i32, ptr %135, align 4, !tbaa !41
  %1696 = icmp ne i32 %1695, -1
  br i1 %1696, label %1697, label %1718

1697:                                             ; preds = %1694
  %1698 = load i32, ptr %133, align 4, !tbaa !41
  %1699 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 57
  %1700 = load ptr, ptr %1699, align 8, !tbaa !37
  %1701 = load i32, ptr %100, align 4, !tbaa !41
  %1702 = sext i32 %1701 to i64
  %1703 = getelementptr inbounds i32, ptr %1700, i64 %1702
  store i32 %1698, ptr %1703, align 4, !tbaa !41
  %1704 = load i32, ptr %134, align 4, !tbaa !41
  %1705 = add nsw i32 %1704, 1
  %1706 = load ptr, ptr %123, align 8, !tbaa !5
  %1707 = load i32, ptr %100, align 4, !tbaa !41
  %1708 = sext i32 %1707 to i64
  %1709 = getelementptr inbounds i32, ptr %1706, i64 %1708
  store i32 %1705, ptr %1709, align 4, !tbaa !41
  %1710 = load i32, ptr %135, align 4, !tbaa !41
  %1711 = add nsw i32 %1710, 1
  %1712 = load ptr, ptr %124, align 8, !tbaa !5
  %1713 = load i32, ptr %100, align 4, !tbaa !41
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds i32, ptr %1712, i64 %1714
  store i32 %1711, ptr %1715, align 4, !tbaa !41
  %1716 = load i32, ptr %100, align 4, !tbaa !41
  %1717 = add nsw i32 %1716, 1
  store i32 %1717, ptr %100, align 4, !tbaa !41
  br label %1718

1718:                                             ; preds = %1697, %1694, %1671
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #9
  br label %1719

1719:                                             ; preds = %1718
  %1720 = load i32, ptr %133, align 4, !tbaa !41
  %1721 = add nsw i32 %1720, 1
  store i32 %1721, ptr %133, align 4, !tbaa !41
  br label %1665, !llvm.loop !67

1722:                                             ; preds = %1670
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  br label %1764

1723:                                             ; preds = %1649
  %1724 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 57
  store ptr null, ptr %1724, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #9
  store i32 0, ptr %136, align 4, !tbaa !41
  br label %1725

1725:                                             ; preds = %1758, %1723
  %1726 = load i32, ptr %136, align 4, !tbaa !41
  %1727 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1728 = load i32, ptr %1727, align 8, !tbaa !45
  %1729 = icmp slt i32 %1726, %1728
  br i1 %1729, label %1731, label %1730

1730:                                             ; preds = %1725
  store i32 36, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #9
  br label %1761

1731:                                             ; preds = %1725
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #9
  %1732 = load ptr, ptr %121, align 8, !tbaa !5
  %1733 = load i32, ptr %136, align 4, !tbaa !41
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds i32, ptr %1732, i64 %1734
  %1736 = load i32, ptr %1735, align 4, !tbaa !41
  %1737 = sub nsw i32 %1736, 1
  store i32 %1737, ptr %137, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #9
  %1738 = load ptr, ptr %122, align 8, !tbaa !5
  %1739 = load i32, ptr %136, align 4, !tbaa !41
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds i32, ptr %1738, i64 %1740
  %1742 = load i32, ptr %1741, align 4, !tbaa !41
  %1743 = sub nsw i32 %1742, 1
  store i32 %1743, ptr %138, align 4, !tbaa !41
  %1744 = load i32, ptr %137, align 4, !tbaa !41
  %1745 = add nsw i32 %1744, 1
  %1746 = load ptr, ptr %123, align 8, !tbaa !5
  %1747 = load i32, ptr %136, align 4, !tbaa !41
  %1748 = sext i32 %1747 to i64
  %1749 = getelementptr inbounds i32, ptr %1746, i64 %1748
  store i32 %1745, ptr %1749, align 4, !tbaa !41
  %1750 = load i32, ptr %138, align 4, !tbaa !41
  %1751 = add nsw i32 %1750, 1
  %1752 = load ptr, ptr %124, align 8, !tbaa !5
  %1753 = load i32, ptr %136, align 4, !tbaa !41
  %1754 = sext i32 %1753 to i64
  %1755 = getelementptr inbounds i32, ptr %1752, i64 %1754
  store i32 %1751, ptr %1755, align 4, !tbaa !41
  %1756 = load i32, ptr %100, align 4, !tbaa !41
  %1757 = add nsw i32 %1756, 1
  store i32 %1757, ptr %100, align 4, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #9
  br label %1758

1758:                                             ; preds = %1731
  %1759 = load i32, ptr %136, align 4, !tbaa !41
  %1760 = add nsw i32 %1759, 1
  store i32 %1760, ptr %136, align 4, !tbaa !41
  br label %1725, !llvm.loop !68

1761:                                             ; preds = %1730
  %1762 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 18
  %1763 = load i32, ptr %1762, align 8, !tbaa !45
  store i32 %1763, ptr %100, align 4, !tbaa !41
  br label %1764

1764:                                             ; preds = %1761, %1722
  %1765 = load i32, ptr %100, align 4, !tbaa !41
  %1766 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 19
  store i32 %1765, ptr %1766, align 4, !tbaa !69
  %1767 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
  %1768 = load i32, ptr %56, align 4, !tbaa !41
  %1769 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 19
  %1770 = load i32, ptr %1769, align 4, !tbaa !69
  %1771 = load ptr, ptr %123, align 8, !tbaa !5
  %1772 = load ptr, ptr %124, align 8, !tbaa !5
  invoke void @_ZN10SimTKIpopt15SymTMatrixSpaceC1EiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %1767, i32 noundef %1768, i32 noundef %1770, ptr noundef %1771, ptr noundef %1772)
          to label %1773 unwind label %1792

1773:                                             ; preds = %1764
  %1774 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 35
  %1775 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1774, ptr noundef %1767)
  %1776 = load ptr, ptr %121, align 8, !tbaa !5
  %1777 = icmp eq ptr %1776, null
  br i1 %1777, label %1779, label %1778

1778:                                             ; preds = %1773
  call void @_ZdaPv(ptr noundef %1776) #11
  br label %1779

1779:                                             ; preds = %1778, %1773
  store ptr null, ptr %121, align 8, !tbaa !5
  %1780 = load ptr, ptr %122, align 8, !tbaa !5
  %1781 = icmp eq ptr %1780, null
  br i1 %1781, label %1783, label %1782

1782:                                             ; preds = %1779
  call void @_ZdaPv(ptr noundef %1780) #11
  br label %1783

1783:                                             ; preds = %1782, %1779
  store ptr null, ptr %122, align 8, !tbaa !5
  %1784 = load ptr, ptr %123, align 8, !tbaa !5
  %1785 = icmp eq ptr %1784, null
  br i1 %1785, label %1787, label %1786

1786:                                             ; preds = %1783
  call void @_ZdaPv(ptr noundef %1784) #11
  br label %1787

1787:                                             ; preds = %1786, %1783
  store ptr null, ptr %123, align 8, !tbaa !5
  %1788 = load ptr, ptr %124, align 8, !tbaa !5
  %1789 = icmp eq ptr %1788, null
  br i1 %1789, label %1791, label %1790

1790:                                             ; preds = %1787
  call void @_ZdaPv(ptr noundef %1788) #11
  br label %1791

1791:                                             ; preds = %1790, %1787
  store ptr null, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %1801

1792:                                             ; preds = %1764
  %1793 = landingpad { ptr, i32 }
          cleanup
  %1794 = extractvalue { ptr, i32 } %1793, 0
  store ptr %1794, ptr %36, align 8
  %1795 = extractvalue { ptr, i32 } %1793, 1
  store i32 %1795, ptr %37, align 4
  call void @_ZdlPvm(ptr noundef %1767, i64 noundef 40) #11
  br label %1796

1796:                                             ; preds = %1792, %1620
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %1802

1797:                                             ; preds = %1531
  %1798 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 19
  store i32 0, ptr %1798, align 4, !tbaa !69
  %1799 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 35
  %1800 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %1799, ptr noundef null)
  br label %1801

1801:                                             ; preds = %1797, %1791
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %1806

1802:                                             ; preds = %1796, %1600
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %1803

1803:                                             ; preds = %1802, %1389
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %1804

1804:                                             ; preds = %1803, %1110, %1106, %1102, %1098, %1094, %1090, %1086, %965, %932, %858
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %1805

1805:                                             ; preds = %1804, %785, %781, %681, %677, %673, %669, %551
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %1865

1806:                                             ; preds = %1801, %318
  %1807 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 22
  %1808 = load ptr, ptr %18, align 8, !tbaa !5
  %1809 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1808, ptr noundef nonnull align 8 dereferenceable(8) %1807)
  %1810 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 23
  %1811 = load ptr, ptr %19, align 8, !tbaa !5
  %1812 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1811, ptr noundef nonnull align 8 dereferenceable(8) %1810)
  %1813 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 24
  %1814 = load ptr, ptr %20, align 8, !tbaa !5
  %1815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1814, ptr noundef nonnull align 8 dereferenceable(8) %1813)
  %1816 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 25
  %1817 = load ptr, ptr %21, align 8, !tbaa !5
  %1818 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1817, ptr noundef nonnull align 8 dereferenceable(8) %1816)
  %1819 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 26
  %1820 = load ptr, ptr %22, align 8, !tbaa !5
  %1821 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1820, ptr noundef nonnull align 8 dereferenceable(8) %1819)
  %1822 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 27
  %1823 = load ptr, ptr %23, align 8, !tbaa !5
  %1824 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1823, ptr noundef nonnull align 8 dereferenceable(8) %1822)
  %1825 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 28
  %1826 = load ptr, ptr %24, align 8, !tbaa !5
  %1827 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1826, ptr noundef nonnull align 8 dereferenceable(8) %1825)
  %1828 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 29
  %1829 = load ptr, ptr %25, align 8, !tbaa !5
  %1830 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1829, ptr noundef nonnull align 8 dereferenceable(8) %1828)
  %1831 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 30
  %1832 = load ptr, ptr %26, align 8, !tbaa !5
  %1833 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1832, ptr noundef nonnull align 8 dereferenceable(8) %1831)
  %1834 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 31
  %1835 = load ptr, ptr %27, align 8, !tbaa !5
  %1836 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1835, ptr noundef nonnull align 8 dereferenceable(8) %1834)
  %1837 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 32
  %1838 = load ptr, ptr %28, align 8, !tbaa !5
  %1839 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1838, ptr noundef nonnull align 8 dereferenceable(8) %1837)
  %1840 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 33
  %1841 = load ptr, ptr %29, align 8, !tbaa !5
  %1842 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1841, ptr noundef nonnull align 8 dereferenceable(8) %1840)
  %1843 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 34
  %1844 = load ptr, ptr %30, align 8, !tbaa !5
  %1845 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1844, ptr noundef nonnull align 8 dereferenceable(8) %1843)
  %1846 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 35
  %1847 = load ptr, ptr %31, align 8, !tbaa !5
  %1848 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1847, ptr noundef nonnull align 8 dereferenceable(8) %1846)
  %1849 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %1850 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %1849)
  br i1 %1850, label %1851, label %1864

1851:                                             ; preds = %1806
  %1852 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %1853 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1852)
  %1854 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 14
  %1855 = load i32, ptr %1854, align 8, !tbaa !60
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1853, i32 noundef 4, i32 noundef 1, ptr noundef @.str.53, i32 noundef %1855)
  %1856 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %1857 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1856)
  %1858 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 16
  %1859 = load i32, ptr %1858, align 8, !tbaa !64
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1857, i32 noundef 4, i32 noundef 1, ptr noundef @.str.54, i32 noundef %1859)
  %1860 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 2
  %1861 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1860)
  %1862 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %139, i32 0, i32 19
  %1863 = load i32, ptr %1862, align 4, !tbaa !69
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1861, i32 noundef 4, i32 noundef 1, ptr noundef @.str.55, i32 noundef %1863)
  br label %1864

1864:                                             ; preds = %1851, %1806
  store i1 true, ptr %16, align 1
  store i32 1, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1866

1865:                                             ; preds = %1805, %317
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1868

1866:                                             ; preds = %1864, %154
  %1867 = load i1, ptr %16, align 1
  ret i1 %1867

1868:                                             ; preds = %1865, %201
  %1869 = load ptr, ptr %36, align 8
  %1870 = load i32, ptr %37, align 4
  %1871 = insertvalue { ptr, i32 } poison, ptr %1869, 0
  %1872 = insertvalue { ptr, i32 } %1871, i32 %1870, 1
  resume { ptr, i32 } %1872

1873:                                             ; preds = %1599, %841, %534, %290, %174, %154
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter16CheckDerivativesENS0_18DerivativeTestEnumE(ptr noundef nonnull align 8 dereferenceable(400), i32 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) #3

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

declare void @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ...) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #6

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #6

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

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

declare void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80)) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) #3

declare void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) unnamed_addr #4

declare void @_ZN10SimTKIpopt15SymTMatrixSpaceC1EiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ptr noundef) unnamed_addr #4

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

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

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

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

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

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

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

!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, !18, i64 52}
!10 = !{!"_ZTSN10SimTKIpopt11TNLPAdapterE", !11, i64 0, !14, i64 16, !15, i64 24, !16, i64 32, !16, i64 40, !17, i64 48, !18, i64 52, !16, i64 56, !16, i64 64, !19, i64 72, !19, i64 73, !20, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !21, i64 116, !22, i64 120, !22, i64 128, !22, i64 136, !22, i64 144, !23, i64 152, !22, i64 160, !23, i64 168, !22, i64 176, !23, i64 184, !22, i64 192, !23, i64 200, !23, i64 208, !23, i64 216, !24, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !13, i64 272, !13, i64 276, !13, i64 280, !13, i64 284, !13, i64 288, !25, i64 296, !26, i64 304, !25, i64 312, !26, i64 320, !25, i64 328, !26, i64 336, !26, i64 344, !25, i64 352, !26, i64 360, !25, i64 368, !6, i64 376, !6, i64 384, !6, i64 392}
!11 = !{!"_ZTSN10SimTKIpopt3NLPE", !12, i64 0}
!12 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !13, i64 8}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_4TNLPEEE", !6, i64 0}
!15 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter26FixedVariableTreatmentEnumE", !7, i64 0}
!18 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter18DerivativeTestEnumE", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !7, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt4TNLP14IndexStyleEnumE", !7, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !6, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !6, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEE", !6, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEE", !6, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEE", !6, i64 0}
!27 = !{!19, !19, i64 0}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!10, !19, i64 73}
!31 = !{!10, !6, i64 232}
!32 = !{!10, !6, i64 240}
!33 = !{!10, !6, i64 248}
!34 = !{!10, !6, i64 256}
!35 = !{!10, !6, i64 264}
!36 = !{!10, !6, i64 376}
!37 = !{!10, !6, i64 384}
!38 = !{!10, !6, i64 392}
!39 = !{!40, !40, i64 0}
!40 = !{!"vtable pointer", !8, i64 0}
!41 = !{!13, !13, i64 0}
!42 = !{!10, !13, i64 80}
!43 = !{!10, !13, i64 84}
!44 = !{!10, !13, i64 100}
!45 = !{!10, !13, i64 104}
!46 = !{!10, !13, i64 112}
!47 = !{!16, !16, i64 0}
!48 = !{!10, !17, i64 48}
!49 = !{!10, !16, i64 32}
!50 = !{!10, !16, i64 40}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = distinct !{!53, !52}
!54 = distinct !{!54, !52}
!55 = !{!10, !21, i64 116}
!56 = distinct !{!56, !52}
!57 = distinct !{!57, !52}
!58 = distinct !{!58, !52}
!59 = !{!10, !13, i64 92}
!60 = !{!10, !13, i64 88}
!61 = distinct !{!61, !52}
!62 = distinct !{!62, !52}
!63 = distinct !{!63, !52}
!64 = !{!10, !13, i64 96}
!65 = !{!10, !20, i64 76}
!66 = distinct !{!66, !52}
!67 = distinct !{!67, !52}
!68 = distinct !{!68, !52}
!69 = !{!10, !13, i64 108}


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

%"class.std::__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.std::allocator.11" = type { i8 }
%"class.SimTKIpopt::SmartPtr.29" = type { ptr }

@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE = external dso_local constant { ptr, ptr, ptr }, align 8
@_ZTIN10SimTKIpopt14OPTION_INVALIDE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.44 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZTIN10SimTKIpopt17INVALID_WARMSTARTE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.46 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [60 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: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter9GetSpacesERNS_8SmartPtrIKNS_11VectorSpaceEEES5_S5_S5_RNS1_IKNS_11MatrixSpaceEEES5_S9_S5_S9_S5_S9_S9_S9_RNS1_IKNS_14SymMatrixSpaceEEE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.11", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.11", align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.11", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.11", align 1
  %30 = alloca [256 x i8], align 16
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.11", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.11", align 1
  %35 = alloca [256 x i8], align 16
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.11", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.11", align 1
  %40 = alloca %"class.SimTKIpopt::SmartPtr.29", align 8
  %41 = alloca %"class.SimTKIpopt::SmartPtr.29", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.11", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.11", align 1
  %46 = getelementptr inbounds i8, ptr %0, i64 52
  %47 = load i32, ptr %46, align 4, !tbaa !5
  %.not = icmp eq i32 %47, 0
  br i1 %.not, label %50, label %48

48:                                               ; preds = %15
  %49 = tail call noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter16CheckDerivativesENS0_18DerivativeTestEnumE(ptr noundef nonnull align 8 dereferenceable(400) %0, i32 noundef %47)
  br i1 %49, label %50, label %916

50:                                               ; preds = %48, %15
  %51 = getelementptr inbounds i8, ptr %0, i64 73
  %52 = load i8, ptr %51, align 1, !tbaa !26, !range !27, !noundef !28
  %53 = trunc nuw i8 %52 to i1
  %54 = getelementptr inbounds i8, ptr %0, i64 232
  %55 = load ptr, ptr %54, align 8, !tbaa !29
  %.not430 = icmp eq ptr %55, null
  br i1 %53, label %56, label %85

56:                                               ; preds = %50
  br i1 %.not430, label %57, label %80

57:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.44, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %58 unwind label %67

58:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  %59 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.1)
          to label %60 unwind label %69

60:                                               ; preds = %58
  %61 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.45)
          to label %62 unwind label %69

62:                                               ; preds = %60
  %63 = call ptr @__cxa_allocate_exception(i64 112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %64 unwind label %.thread

64:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %65 unwind label %72

65:                                               ; preds = %64
  invoke void @_ZN10SimTKIpopt17INVALID_WARMSTARTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %63, ptr noundef nonnull %18, ptr noundef nonnull %19, i32 noundef 203)
          to label %66 unwind label %74

66:                                               ; preds = %65
  invoke void @__cxa_throw(ptr nonnull %63, ptr nonnull @_ZTIN10SimTKIpopt17INVALID_WARMSTARTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %918 unwind label %74

67:                                               ; preds = %57
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  br label %79

69:                                               ; preds = %60, %58
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %78

.thread:                                          ; preds = %62
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %77

72:                                               ; preds = %64
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %76

74:                                               ; preds = %66, %65
  %.0344 = phi i1 [ false, %66 ], [ true, %65 ]
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %76

76:                                               ; preds = %72, %74
  %.1345 = phi i1 [ %.0344, %74 ], [ true, %72 ]
  %.pn = phi { ptr, i32 } [ %75, %74 ], [ %73, %72 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br i1 %.1345, label %77, label %78

77:                                               ; preds = %.thread, %76
  %.pn.pn473 = phi { ptr, i32 } [ %71, %.thread ], [ %.pn, %76 ]
  call void @__cxa_free_exception(ptr %63) #9
  br label %78

78:                                               ; preds = %76, %77, %69
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn473, %77 ], [ %.pn, %76 ], [ %70, %69 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %79

79:                                               ; preds = %78, %67
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %78 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  br label %917

80:                                               ; preds = %56
  %81 = getelementptr inbounds i8, ptr %0, i64 24
  %82 = tail call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %81)
  br i1 %82, label %83, label %122

83:                                               ; preds = %80
  %84 = tail call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %81)
  tail call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %84, i32 noundef 5, i32 noundef 3, ptr noundef nonnull @.str.46)
  br label %122

85:                                               ; preds = %50
  br i1 %.not430, label %87, label %86

86:                                               ; preds = %85
  tail call void @_ZdaPv(ptr noundef nonnull %55) #11
  br label %87

87:                                               ; preds = %86, %85
  %88 = getelementptr inbounds i8, ptr %0, i64 240
  %89 = load ptr, ptr %88, align 8, !tbaa !30
  %90 = icmp eq ptr %89, null
  br i1 %90, label %92, label %91

91:                                               ; preds = %87
  tail call void @_ZdaPv(ptr noundef nonnull %89) #11
  br label %92

92:                                               ; preds = %91, %87
  %93 = getelementptr inbounds i8, ptr %0, i64 248
  %94 = load ptr, ptr %93, align 8, !tbaa !31
  %95 = icmp eq ptr %94, null
  br i1 %95, label %97, label %96

96:                                               ; preds = %92
  tail call void @_ZdaPv(ptr noundef nonnull %94) #11
  br label %97

97:                                               ; preds = %96, %92
  %98 = getelementptr inbounds i8, ptr %0, i64 256
  %99 = load ptr, ptr %98, align 8, !tbaa !32
  %100 = icmp eq ptr %99, null
  br i1 %100, label %102, label %101

101:                                              ; preds = %97
  tail call void @_ZdaPv(ptr noundef nonnull %99) #11
  br label %102

102:                                              ; preds = %101, %97
  %103 = getelementptr inbounds i8, ptr %0, i64 264
  %104 = load ptr, ptr %103, align 8, !tbaa !33
  %105 = icmp eq ptr %104, null
  br i1 %105, label %107, label %106

106:                                              ; preds = %102
  tail call void @_ZdaPv(ptr noundef nonnull %104) #11
  br label %107

107:                                              ; preds = %106, %102
  %108 = getelementptr inbounds i8, ptr %0, i64 376
  %109 = load ptr, ptr %108, align 8, !tbaa !34
  %110 = icmp eq ptr %109, null
  br i1 %110, label %112, label %111

111:                                              ; preds = %107
  tail call void @_ZdaPv(ptr noundef nonnull %109) #11
  br label %112

112:                                              ; preds = %111, %107
  %113 = getelementptr inbounds i8, ptr %0, i64 384
  %114 = load ptr, ptr %113, align 8, !tbaa !35
  %115 = icmp eq ptr %114, null
  br i1 %115, label %117, label %116

116:                                              ; preds = %112
  tail call void @_ZdaPv(ptr noundef nonnull %114) #11
  br label %117

117:                                              ; preds = %116, %112
  %118 = getelementptr inbounds i8, ptr %0, i64 392
  %119 = load ptr, ptr %118, align 8, !tbaa !36
  %120 = icmp eq ptr %119, null
  br i1 %120, label %122, label %121

121:                                              ; preds = %117
  tail call void @_ZdaPv(ptr noundef nonnull %119) #11
  br label %122

122:                                              ; preds = %117, %121, %80, %83
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #9
  %123 = getelementptr inbounds i8, ptr %0, i64 16
  %124 = tail call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123)
  %125 = getelementptr inbounds i8, ptr %0, i64 116
  %126 = load ptr, ptr %124, align 8, !tbaa !37
  %127 = getelementptr inbounds i8, ptr %126, i64 16
  %128 = load ptr, ptr %127, align 8
  %129 = call noundef zeroext i1 %128(ptr noundef nonnull align 8 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %125)
  %130 = load i8, ptr %51, align 1, !tbaa !26, !range !27, !noundef !28
  %131 = trunc nuw i8 %130 to i1
  %.pre = load i32, ptr %21, align 4, !tbaa !39
  br i1 %131, label %132, label %178

132:                                              ; preds = %122
  %133 = getelementptr inbounds i8, ptr %0, i64 80
  %134 = load i32, ptr %133, align 8, !tbaa !40
  %135 = icmp eq i32 %.pre, %134
  br i1 %135, label %136, label %155

136:                                              ; preds = %132
  %137 = load i32, ptr %22, align 4, !tbaa !39
  %138 = getelementptr inbounds i8, ptr %0, i64 84
  %139 = load i32, ptr %138, align 4, !tbaa !41
  %140 = icmp eq i32 %137, %139
  br i1 %140, label %141, label %155

141:                                              ; preds = %136
  %142 = load i32, ptr %23, align 4, !tbaa !39
  %143 = getelementptr inbounds i8, ptr %0, i64 100
  %144 = load i32, ptr %143, align 4, !tbaa !42
  %145 = icmp eq i32 %142, %144
  br i1 %145, label %146, label %155

146:                                              ; preds = %141
  %147 = load i32, ptr %24, align 4, !tbaa !39
  %148 = getelementptr inbounds i8, ptr %0, i64 104
  %149 = load i32, ptr %148, align 8, !tbaa !43
  %150 = icmp eq i32 %147, %149
  br i1 %150, label %.thread655, label %155

.thread655:                                       ; preds = %146
  %151 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 %.pre, ptr %151, align 8, !tbaa !40
  %152 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %137, ptr %152, align 4, !tbaa !41
  %153 = getelementptr inbounds i8, ptr %0, i64 100
  store i32 %142, ptr %153, align 4, !tbaa !42
  %154 = getelementptr inbounds i8, ptr %0, i64 104
  store i32 %147, ptr %154, align 8, !tbaa !43
  br label %873

155:                                              ; preds = %146, %141, %136, %132
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.47, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %156 unwind label %165

156:                                              ; preds = %155
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  %157 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.1)
          to label %158 unwind label %167

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.48)
          to label %160 unwind label %167

160:                                              ; preds = %158
  %161 = call ptr @__cxa_allocate_exception(i64 112) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %162 unwind label %.thread474

162:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %163 unwind label %170

163:                                              ; preds = %162
  invoke void @_ZN10SimTKIpopt17INVALID_WARMSTARTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %161, ptr noundef nonnull %27, ptr noundef nonnull %28, i32 noundef 233)
          to label %164 unwind label %172

164:                                              ; preds = %163
  invoke void @__cxa_throw(ptr nonnull %161, ptr nonnull @_ZTIN10SimTKIpopt17INVALID_WARMSTARTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %918 unwind label %172

165:                                              ; preds = %155
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  br label %177

167:                                              ; preds = %158, %156
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %176

.thread474:                                       ; preds = %160
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %175

170:                                              ; preds = %162
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %174

172:                                              ; preds = %164, %163
  %.0351 = phi i1 [ false, %164 ], [ true, %163 ]
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %174

174:                                              ; preds = %170, %172
  %.1352 = phi i1 [ %.0351, %172 ], [ true, %170 ]
  %.pn435 = phi { ptr, i32 } [ %173, %172 ], [ %171, %170 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br i1 %.1352, label %175, label %176

175:                                              ; preds = %.thread474, %174
  %.pn435.pn477 = phi { ptr, i32 } [ %169, %.thread474 ], [ %.pn435, %174 ]
  call void @__cxa_free_exception(ptr %161) #9
  br label %176

176:                                              ; preds = %174, %175, %167
  %.pn435.pn.pn = phi { ptr, i32 } [ %.pn435.pn477, %175 ], [ %.pn435, %174 ], [ %168, %167 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %177

177:                                              ; preds = %176, %165
  %.pn435.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn, %176 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %915

178:                                              ; preds = %122
  %.pre646 = load i32, ptr %22, align 4, !tbaa !39
  %.pre647 = load i32, ptr %23, align 4, !tbaa !39
  %.pre648 = load i32, ptr %24, align 4, !tbaa !39
  %179 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 %.pre, ptr %179, align 8, !tbaa !40
  %180 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %.pre646, ptr %180, align 4, !tbaa !41
  %181 = getelementptr inbounds i8, ptr %0, i64 100
  store i32 %.pre647, ptr %181, align 4, !tbaa !42
  %182 = getelementptr inbounds i8, ptr %0, i64 104
  store i32 %.pre648, ptr %182, align 8, !tbaa !43
  %183 = sext i32 %.pre to i64
  %184 = icmp slt i32 %.pre, 0
  %185 = shl nsw i64 %183, 3
  %186 = select i1 %184, i64 -1, i64 %185
  %187 = call noalias noundef nonnull ptr @_Znam(i64 noundef %186) #12
  %188 = getelementptr inbounds i8, ptr %0, i64 232
  store ptr %187, ptr %188, align 8, !tbaa !29
  %189 = sext i32 %.pre646 to i64
  %190 = icmp slt i32 %.pre646, 0
  %191 = shl nsw i64 %189, 3
  %192 = select i1 %190, i64 -1, i64 %191
  %193 = call noalias noundef nonnull ptr @_Znam(i64 noundef %192) #12
  %194 = getelementptr inbounds i8, ptr %0, i64 240
  store ptr %193, ptr %194, align 8, !tbaa !30
  %195 = call noalias noundef nonnull ptr @_Znam(i64 noundef %192) #12
  %196 = getelementptr inbounds i8, ptr %0, i64 248
  store ptr %195, ptr %196, align 8, !tbaa !31
  %197 = sext i32 %.pre647 to i64
  %198 = icmp slt i32 %.pre647, 0
  %199 = shl nsw i64 %197, 3
  %200 = select i1 %198, i64 -1, i64 %199
  %201 = call noalias noundef nonnull ptr @_Znam(i64 noundef %200) #12
  %202 = getelementptr inbounds i8, ptr %0, i64 256
  store ptr %201, ptr %202, align 8, !tbaa !32
  %203 = call noalias noundef nonnull ptr @_Znam(i64 noundef %186) #12
  %204 = call noalias noundef nonnull ptr @_Znam(i64 noundef %186) #12
  %205 = call noalias noundef nonnull ptr @_Znam(i64 noundef %192) #12
  %206 = call noalias noundef nonnull ptr @_Znam(i64 noundef %192) #12
  %207 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123)
  %208 = load i32, ptr %179, align 8, !tbaa !40
  %209 = load i32, ptr %180, align 4, !tbaa !41
  %210 = load ptr, ptr %207, align 8, !tbaa !37
  %211 = getelementptr inbounds i8, ptr %210, i64 24
  %212 = load ptr, ptr %211, align 8
  %213 = call noundef zeroext i1 %212(ptr noundef nonnull align 8 dereferenceable(12) %207, i32 noundef %208, ptr noundef nonnull %203, ptr noundef nonnull %204, i32 noundef %209, ptr noundef nonnull %205, ptr noundef nonnull %206)
  %214 = load i32, ptr %179, align 8, !tbaa !40
  %215 = sext i32 %214 to i64
  %216 = icmp slt i32 %214, 0
  %217 = shl nsw i64 %215, 2
  %218 = select i1 %216, i64 -1, i64 %217
  %219 = call noalias noundef nonnull ptr @_Znam(i64 noundef %218) #12
  %220 = call noalias noundef nonnull ptr @_Znam(i64 noundef %218) #12
  %221 = call noalias noundef nonnull ptr @_Znam(i64 noundef %218) #12
  %222 = call noalias noundef nonnull ptr @_Znam(i64 noundef %218) #12
  %223 = getelementptr inbounds i8, ptr %0, i64 112
  store i32 0, ptr %223, align 8, !tbaa !44
  %224 = icmp sgt i32 %214, 0
  br i1 %224, label %.lr.ph, label %._crit_edge.thread

.lr.ph:                                           ; preds = %178
  %225 = getelementptr inbounds i8, ptr %0, i64 32
  %226 = getelementptr inbounds i8, ptr %0, i64 40
  %227 = getelementptr inbounds i8, ptr %0, i64 48
  %228 = load i32, ptr %227, align 8
  %229 = load ptr, ptr %188, align 8
  %wide.trip.count = zext nneg i32 %214 to i64
  br label %231

._crit_edge:                                      ; preds = %289
  %230 = icmp sgt i32 %290, 0
  br i1 %230, label %.lr.ph525.preheader, label %._crit_edge.thread

231:                                              ; preds = %.lr.ph, %289
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %289 ]
  %.0356520 = phi i32 [ 0, %.lr.ph ], [ %.1357, %289 ]
  %.0358519 = phi i32 [ 0, %.lr.ph ], [ %.2360, %289 ]
  %.0363518 = phi i32 [ 0, %.lr.ph ], [ %.2365, %289 ]
  %232 = phi i32 [ 0, %.lr.ph ], [ %290, %289 ]
  %233 = getelementptr inbounds double, ptr %203, i64 %indvars.iv
  %234 = load double, ptr %233, align 8, !tbaa !45
  %235 = getelementptr inbounds double, ptr %204, i64 %indvars.iv
  %236 = load double, ptr %235, align 8, !tbaa !45
  %237 = fcmp oeq double %234, %236
  br i1 %237, label %238, label %253

238:                                              ; preds = %231
  switch i32 %228, label %289 [
    i32 0, label %239
    i32 1, label %245
  ]

239:                                              ; preds = %238
  %240 = getelementptr inbounds double, ptr %229, i64 %indvars.iv
  store double %234, ptr %240, align 8, !tbaa !45
  %241 = sext i32 %232 to i64
  %242 = getelementptr inbounds i32, ptr %220, i64 %241
  %243 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %243, ptr %242, align 4, !tbaa !39
  %244 = add nsw i32 %232, 1
  store i32 %244, ptr %223, align 8, !tbaa !44
  br label %289

245:                                              ; preds = %238
  %246 = sext i32 %232 to i64
  %247 = getelementptr inbounds i32, ptr %220, i64 %246
  %248 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %248, ptr %247, align 4, !tbaa !39
  %249 = add nsw i32 %232, 1
  store i32 %249, ptr %223, align 8, !tbaa !44
  %250 = sext i32 %.0356520 to i64
  %251 = getelementptr inbounds i32, ptr %219, i64 %250
  store i32 %248, ptr %251, align 4, !tbaa !39
  %252 = add nsw i32 %.0356520, 1
  br label %289

253:                                              ; preds = %231
  %254 = fcmp ogt double %234, %236
  br i1 %254, label %255, label %270

255:                                              ; preds = %253
  %256 = trunc nuw nsw i64 %indvars.iv to i32
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %30) #9
  %257 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %30, i64 noundef 256, ptr noundef nonnull @.str.49, i32 noundef %256, double noundef %234, double noundef %236) #9
  call void @_ZdaPv(ptr noundef nonnull %219) #11
  call void @_ZdaPv(ptr noundef nonnull %220) #11
  call void @_ZdaPv(ptr noundef nonnull %221) #11
  call void @_ZdaPv(ptr noundef nonnull %222) #11
  %258 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull %30, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %259 unwind label %.thread478

259:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %260 unwind label %263

260:                                              ; preds = %259
  invoke void @_ZN10SimTKIpopt11TNLPAdapter12INVALID_TNLPC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %258, ptr noundef nonnull %31, ptr noundef nonnull %33, i32 noundef 302)
          to label %261 unwind label %265

261:                                              ; preds = %260
  invoke void @__cxa_throw(ptr nonnull %258, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %918 unwind label %265

.thread478:                                       ; preds = %255
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  br label %268

263:                                              ; preds = %259
  %264 = landingpad { ptr, i32 }
          cleanup
  br label %267

265:                                              ; preds = %261, %260
  %.0369 = phi i1 [ false, %261 ], [ true, %260 ]
  %266 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %267

267:                                              ; preds = %263, %265
  %.1370 = phi i1 [ %.0369, %265 ], [ true, %263 ]
  %.pn459 = phi { ptr, i32 } [ %266, %265 ], [ %264, %263 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  br i1 %.1370, label %268, label %269

268:                                              ; preds = %.thread478, %267
  %.pn459.pn482 = phi { ptr, i32 } [ %262, %.thread478 ], [ %.pn459, %267 ]
  call void @__cxa_free_exception(ptr %258) #9
  br label %269

269:                                              ; preds = %268, %267
  %.pn459.pn481 = phi { ptr, i32 } [ %.pn459.pn482, %268 ], [ %.pn459, %267 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %30) #9
  br label %915

270:                                              ; preds = %253
  %271 = sext i32 %.0356520 to i64
  %272 = getelementptr inbounds i32, ptr %219, i64 %271
  %273 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %273, ptr %272, align 4, !tbaa !39
  %274 = load double, ptr %225, align 8, !tbaa !46
  %275 = fcmp ogt double %234, %274
  br i1 %275, label %276, label %280

276:                                              ; preds = %270
  %277 = sext i32 %.0358519 to i64
  %278 = getelementptr inbounds i32, ptr %221, i64 %277
  store i32 %.0356520, ptr %278, align 4, !tbaa !39
  %279 = add nsw i32 %.0358519, 1
  br label %280

280:                                              ; preds = %276, %270
  %.1359 = phi i32 [ %279, %276 ], [ %.0358519, %270 ]
  %281 = load double, ptr %226, align 8, !tbaa !47
  %282 = fcmp olt double %236, %281
  br i1 %282, label %283, label %287

283:                                              ; preds = %280
  %284 = sext i32 %.0363518 to i64
  %285 = getelementptr inbounds i32, ptr %222, i64 %284
  store i32 %.0356520, ptr %285, align 4, !tbaa !39
  %286 = add nsw i32 %.0363518, 1
  br label %287

287:                                              ; preds = %283, %280
  %.1364 = phi i32 [ %286, %283 ], [ %.0363518, %280 ]
  %288 = add nsw i32 %.0356520, 1
  br label %289

289:                                              ; preds = %239, %245, %238, %287
  %290 = phi i32 [ %232, %238 ], [ %249, %245 ], [ %244, %239 ], [ %232, %287 ]
  %.2365 = phi i32 [ %.0363518, %238 ], [ %.0363518, %245 ], [ %.0363518, %239 ], [ %.1364, %287 ]
  %.2360 = phi i32 [ %.0358519, %238 ], [ %.0358519, %245 ], [ %.0358519, %239 ], [ %.1359, %287 ]
  %.1357 = phi i32 [ %.0356520, %238 ], [ %252, %245 ], [ %.0356520, %239 ], [ %288, %287 ]
  %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 %231, !llvm.loop !48

.lr.ph525.preheader:                              ; preds = %._crit_edge
  %291 = zext nneg i32 %290 to i64
  %292 = shl nuw nsw i64 %291, 2
  %293 = call noalias noundef nonnull ptr @_Znam(i64 noundef %292) #12
  %294 = getelementptr inbounds i8, ptr %0, i64 392
  store ptr %293, ptr %294, align 8, !tbaa !36
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %293, ptr nonnull align 4 %220, i64 %292, i1 false), !tbaa !39
  br label %.loopexit503

._crit_edge.thread:                               ; preds = %178, %._crit_edge
  %.0356.lcssa664 = phi i32 [ %.1357, %._crit_edge ], [ 0, %178 ]
  %.0358.lcssa662 = phi i32 [ %.2360, %._crit_edge ], [ 0, %178 ]
  %.0363.lcssa660 = phi i32 [ %.2365, %._crit_edge ], [ 0, %178 ]
  %295 = getelementptr inbounds i8, ptr %0, i64 392
  store ptr null, ptr %295, align 8, !tbaa !36
  br label %.loopexit503

.loopexit503:                                     ; preds = %.lr.ph525.preheader, %._crit_edge.thread
  %.0356.lcssa663 = phi i32 [ %.1357, %.lr.ph525.preheader ], [ %.0356.lcssa664, %._crit_edge.thread ]
  %.0358.lcssa661 = phi i32 [ %.2360, %.lr.ph525.preheader ], [ %.0358.lcssa662, %._crit_edge.thread ]
  %.0363.lcssa659 = phi i32 [ %.2365, %.lr.ph525.preheader ], [ %.0363.lcssa660, %._crit_edge.thread ]
  call void @_ZdaPv(ptr noundef nonnull %220) #11
  %296 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %296, i32 noundef %.0356.lcssa663)
          to label %297 unwind label %321

297:                                              ; preds = %.loopexit503
  %298 = getelementptr inbounds i8, ptr %0, i64 120
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull %296)
  %300 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %300, i32 noundef %.0358.lcssa661)
          to label %301 unwind label %323

301:                                              ; preds = %297
  %302 = getelementptr inbounds i8, ptr %0, i64 144
  %303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull %300)
  %304 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %304, i32 noundef %.0363.lcssa659)
          to label %305 unwind label %325

305:                                              ; preds = %301
  %306 = getelementptr inbounds i8, ptr %0, i64 160
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull %304)
  %308 = load i32, ptr %223, align 8, !tbaa !44
  %309 = icmp sgt i32 %308, 0
  %310 = getelementptr inbounds i8, ptr %0, i64 48
  %311 = load i32, ptr %310, align 8
  %312 = icmp eq i32 %311, 0
  %or.cond467 = select i1 %309, i1 %312, i1 false
  br i1 %or.cond467, label %313, label %329

313:                                              ; preds = %305
  %314 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  %315 = load i32, ptr %179, align 8, !tbaa !40
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %314, i32 noundef %315, i32 noundef %.0356.lcssa663, ptr noundef nonnull %219, i32 noundef 0)
          to label %316 unwind label %327

316:                                              ; preds = %313
  %317 = getelementptr inbounds i8, ptr %0, i64 304
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull %314)
  %319 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %317)
  %320 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %319)
  br label %332

321:                                              ; preds = %.loopexit503
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %296, i64 noundef 16) #11
  br label %915

323:                                              ; preds = %297
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %300, i64 noundef 16) #11
  br label %915

325:                                              ; preds = %301
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %304, i64 noundef 16) #11
  br label %915

327:                                              ; preds = %313
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %314, i64 noundef 40) #11
  br label %915

329:                                              ; preds = %305
  %330 = getelementptr inbounds i8, ptr %0, i64 304
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef null)
  br label %332

332:                                              ; preds = %329, %316
  %.sink677 = phi ptr [ null, %329 ], [ %320, %316 ]
  %333 = getelementptr inbounds i8, ptr %0, i64 296
  %334 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef %.sink677)
  %335 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %335, i32 noundef %.0356.lcssa663, i32 noundef %.0358.lcssa661, ptr noundef nonnull %221, i32 noundef 0)
          to label %336 unwind label %375

336:                                              ; preds = %332
  %337 = getelementptr inbounds i8, ptr %0, i64 320
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull %335)
  %339 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_20ExpansionMatrixSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %337)
  %340 = getelementptr inbounds i8, ptr %0, i64 152
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef %339)
  %342 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %337)
  %343 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %342)
  %344 = getelementptr inbounds i8, ptr %0, i64 312
  %345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef %343)
  %346 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %346, i32 noundef %.0356.lcssa663, i32 noundef %.0363.lcssa659, ptr noundef nonnull %222, i32 noundef 0)
          to label %347 unwind label %377

347:                                              ; preds = %336
  %348 = getelementptr inbounds i8, ptr %0, i64 336
  %349 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull %346)
  %350 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_20ExpansionMatrixSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %348)
  %351 = getelementptr inbounds i8, ptr %0, i64 168
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef %350)
  %353 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %348)
  %354 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %353)
  %355 = getelementptr inbounds i8, ptr %0, i64 328
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef %354)
  call void @_ZdaPv(ptr noundef nonnull %203) #11
  call void @_ZdaPv(ptr noundef nonnull %204) #11
  call void @_ZdaPv(ptr noundef nonnull %219) #11
  call void @_ZdaPv(ptr noundef nonnull %221) #11
  call void @_ZdaPv(ptr noundef nonnull %222) #11
  %357 = load i32, ptr %180, align 4, !tbaa !41
  %358 = sext i32 %357 to i64
  %359 = icmp slt i32 %357, 0
  %360 = shl nsw i64 %358, 2
  %361 = select i1 %359, i64 -1, i64 %360
  %362 = call noalias noundef nonnull ptr @_Znam(i64 noundef %361) #12
  %363 = call noalias noundef nonnull ptr @_Znam(i64 noundef %361) #12
  %364 = call noalias noundef nonnull ptr @_Znam(i64 noundef %361) #12
  %365 = call noalias noundef nonnull ptr @_Znam(i64 noundef %361) #12
  %366 = icmp sgt i32 %357, 0
  br i1 %366, label %.lr.ph532, label %._crit_edge533

.lr.ph532:                                        ; preds = %347
  %367 = getelementptr inbounds i8, ptr %0, i64 32
  %368 = load double, ptr %367, align 8
  %369 = getelementptr inbounds i8, ptr %0, i64 40
  %370 = load double, ptr %369, align 8
  %wide.trip.count606 = zext nneg i32 %357 to i64
  br label %379

._crit_edge533:                                   ; preds = %424, %347
  %.0401.lcssa = phi i32 [ 0, %347 ], [ %.2403, %424 ]
  %.0398.lcssa = phi i32 [ 0, %347 ], [ %.2400, %424 ]
  %.0395.lcssa = phi i32 [ 0, %347 ], [ %.1396, %424 ]
  %.0393.lcssa = phi i32 [ 0, %347 ], [ %.1394, %424 ]
  %371 = load i32, ptr %223, align 8, !tbaa !44
  %372 = icmp eq i32 %371, 0
  %373 = load i32, ptr %310, align 8
  %374 = icmp eq i32 %373, 0
  %or.cond470 = select i1 %372, i1 true, i1 %374
  br i1 %or.cond470, label %425, label %444

375:                                              ; preds = %332
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %335, i64 noundef 40) #11
  br label %915

377:                                              ; preds = %336
  %378 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %346, i64 noundef 40) #11
  br label %915

379:                                              ; preds = %.lr.ph532, %424
  %indvars.iv603 = phi i64 [ 0, %.lr.ph532 ], [ %indvars.iv.next604, %424 ]
  %.0393530 = phi i32 [ 0, %.lr.ph532 ], [ %.1394, %424 ]
  %.0395529 = phi i32 [ 0, %.lr.ph532 ], [ %.1396, %424 ]
  %.0398527 = phi i32 [ 0, %.lr.ph532 ], [ %.2400, %424 ]
  %.0401526 = phi i32 [ 0, %.lr.ph532 ], [ %.2403, %424 ]
  %380 = getelementptr inbounds double, ptr %205, i64 %indvars.iv603
  %381 = load double, ptr %380, align 8, !tbaa !45
  %382 = getelementptr inbounds double, ptr %206, i64 %indvars.iv603
  %383 = load double, ptr %382, align 8, !tbaa !45
  %384 = fcmp oeq double %381, %383
  br i1 %384, label %385, label %390

385:                                              ; preds = %379
  %386 = sext i32 %.0393530 to i64
  %387 = getelementptr inbounds i32, ptr %362, i64 %386
  %388 = trunc nuw nsw i64 %indvars.iv603 to i32
  store i32 %388, ptr %387, align 4, !tbaa !39
  %389 = add nsw i32 %.0393530, 1
  br label %424

390:                                              ; preds = %379
  %391 = fcmp ogt double %381, %383
  br i1 %391, label %392, label %407

392:                                              ; preds = %390
  %393 = trunc nuw nsw i64 %indvars.iv603 to i32
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %35) #9
  %394 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %35, i64 noundef 256, ptr noundef nonnull @.str.50, i32 noundef %393, double noundef %381, double noundef %383) #9
  call void @_ZdaPv(ptr noundef nonnull %363) #11
  call void @_ZdaPv(ptr noundef nonnull %362) #11
  call void @_ZdaPv(ptr noundef nonnull %365) #11
  call void @_ZdaPv(ptr noundef nonnull %364) #11
  %395 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull %35, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %396 unwind label %.thread483

396:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %397 unwind label %400

397:                                              ; preds = %396
  invoke void @_ZN10SimTKIpopt11TNLPAdapter12INVALID_TNLPC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %395, ptr noundef nonnull %36, ptr noundef nonnull %38, i32 noundef 397)
          to label %398 unwind label %402

398:                                              ; preds = %397
  invoke void @__cxa_throw(ptr nonnull %395, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter12INVALID_TNLPE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %918 unwind label %402

.thread483:                                       ; preds = %392
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  br label %405

400:                                              ; preds = %396
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %398, %397
  %.0389 = phi i1 [ false, %398 ], [ true, %397 ]
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %404

404:                                              ; preds = %400, %402
  %.1390 = phi i1 [ %.0389, %402 ], [ true, %400 ]
  %.pn455 = phi { ptr, i32 } [ %403, %402 ], [ %401, %400 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  br i1 %.1390, label %405, label %406

405:                                              ; preds = %.thread483, %404
  %.pn455.pn487 = phi { ptr, i32 } [ %399, %.thread483 ], [ %.pn455, %404 ]
  call void @__cxa_free_exception(ptr %395) #9
  br label %406

406:                                              ; preds = %405, %404
  %.pn455.pn486 = phi { ptr, i32 } [ %.pn455.pn487, %405 ], [ %.pn455, %404 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %35) #9
  br label %915

407:                                              ; preds = %390
  %408 = sext i32 %.0395529 to i64
  %409 = getelementptr inbounds i32, ptr %363, i64 %408
  %410 = trunc nuw nsw i64 %indvars.iv603 to i32
  store i32 %410, ptr %409, align 4, !tbaa !39
  %411 = fcmp ogt double %381, %368
  br i1 %411, label %412, label %416

412:                                              ; preds = %407
  %413 = sext i32 %.0401526 to i64
  %414 = getelementptr inbounds i32, ptr %364, i64 %413
  store i32 %.0395529, ptr %414, align 4, !tbaa !39
  %415 = add nsw i32 %.0401526, 1
  br label %416

416:                                              ; preds = %412, %407
  %.1402 = phi i32 [ %415, %412 ], [ %.0401526, %407 ]
  %417 = fcmp olt double %383, %370
  br i1 %417, label %418, label %422

418:                                              ; preds = %416
  %419 = sext i32 %.0398527 to i64
  %420 = getelementptr inbounds i32, ptr %365, i64 %419
  store i32 %.0395529, ptr %420, align 4, !tbaa !39
  %421 = add nsw i32 %.0398527, 1
  br label %422

422:                                              ; preds = %418, %416
  %.1399 = phi i32 [ %421, %418 ], [ %.0398527, %416 ]
  %423 = add nsw i32 %.0395529, 1
  br label %424

424:                                              ; preds = %422, %385
  %.2403 = phi i32 [ %.0401526, %385 ], [ %.1402, %422 ]
  %.2400 = phi i32 [ %.0398527, %385 ], [ %.1399, %422 ]
  %.1396 = phi i32 [ %.0395529, %385 ], [ %423, %422 ]
  %.1394 = phi i32 [ %389, %385 ], [ %.0393530, %422 ]
  %indvars.iv.next604 = add nuw nsw i64 %indvars.iv603, 1
  %exitcond607.not = icmp eq i64 %indvars.iv.next604, %wide.trip.count606
  br i1 %exitcond607.not, label %._crit_edge533, label %379, !llvm.loop !50

425:                                              ; preds = %._crit_edge533
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %426 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %426, i32 noundef %.0393.lcssa)
          to label %427 unwind label %439

427:                                              ; preds = %425
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %426)
  %428 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_16DenseVectorSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %40)
  %429 = getelementptr inbounds i8, ptr %0, i64 128
  %430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef %428)
          to label %431 unwind label %441

431:                                              ; preds = %427
  %432 = sext i32 %.0393.lcssa to i64
  %433 = icmp slt i32 %.0393.lcssa, 0
  %434 = shl nsw i64 %432, 3
  %435 = select i1 %433, i64 -1, i64 %434
  %436 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %435) #12
          to label %437 unwind label %441

437:                                              ; preds = %431
  %438 = getelementptr inbounds i8, ptr %0, i64 264
  store ptr %436, ptr %438, align 8, !tbaa !33
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %466

439:                                              ; preds = %425
  %440 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %426, i64 noundef 16) #11
  br label %443

441:                                              ; preds = %431, %427
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %443

443:                                              ; preds = %441, %439
  %.pn442 = phi { ptr, i32 } [ %442, %441 ], [ %440, %439 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %915

444:                                              ; preds = %._crit_edge533
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  %445 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  %446 = add nsw i32 %371, %.0393.lcssa
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %445, i32 noundef %446)
          to label %447 unwind label %461

447:                                              ; preds = %444
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull %445)
  %448 = call noundef ptr @_ZN10SimTKIpopt9GetRawPtrINS_16DenseVectorSpaceEEEPT_RKNS_8SmartPtrIS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %41)
  %449 = getelementptr inbounds i8, ptr %0, i64 128
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef %448)
          to label %451 unwind label %463

451:                                              ; preds = %447
  %452 = load i32, ptr %223, align 8, !tbaa !44
  %453 = add nsw i32 %452, %.0393.lcssa
  %454 = sext i32 %453 to i64
  %455 = icmp slt i32 %453, 0
  %456 = shl nsw i64 %454, 3
  %457 = select i1 %455, i64 -1, i64 %456
  %458 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %457) #12
          to label %459 unwind label %463

459:                                              ; preds = %451
  %460 = getelementptr inbounds i8, ptr %0, i64 264
  store ptr %458, ptr %460, align 8, !tbaa !33
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %466

461:                                              ; preds = %444
  %462 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %445, i64 noundef 16) #11
  br label %465

463:                                              ; preds = %451, %447
  %464 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10SimTKIpopt8SmartPtrINS_16DenseVectorSpaceEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br label %465

465:                                              ; preds = %463, %461
  %.pn440 = phi { ptr, i32 } [ %464, %463 ], [ %462, %461 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %915

466:                                              ; preds = %459, %437
  %467 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  %468 = load i32, ptr %180, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %467, i32 noundef %468, i32 noundef %.0393.lcssa, ptr noundef nonnull %362, i32 noundef 0)
          to label %469 unwind label %531

469:                                              ; preds = %466
  %470 = getelementptr inbounds i8, ptr %0, i64 344
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull %467)
  %472 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %470)
  %473 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %472)
  %474 = getelementptr inbounds i8, ptr %0, i64 352
  %475 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef %473)
  call void @_ZdaPv(ptr noundef nonnull %362) #11
  %476 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %476, i32 noundef %.0395.lcssa)
          to label %477 unwind label %533

477:                                              ; preds = %469
  %478 = getelementptr inbounds i8, ptr %0, i64 136
  %479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull %476)
  %480 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  %481 = load i32, ptr %180, align 4, !tbaa !41
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %480, i32 noundef %481, i32 noundef %.0395.lcssa, ptr noundef nonnull %363, i32 noundef 0)
          to label %482 unwind label %535

482:                                              ; preds = %477
  %483 = getelementptr inbounds i8, ptr %0, i64 360
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef nonnull %480)
  %485 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %483)
  %486 = call noundef ptr @_ZNK10SimTKIpopt20ExpansionMatrixSpace22MakeNewExpansionMatrixEv(ptr noundef nonnull align 8 dereferenceable(40) %485)
  %487 = getelementptr inbounds i8, ptr %0, i64 368
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef %486)
  call void @_ZdaPv(ptr noundef nonnull %363) #11
  %489 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %489, i32 noundef %.0401.lcssa)
          to label %490 unwind label %537

490:                                              ; preds = %482
  %491 = getelementptr inbounds i8, ptr %0, i64 176
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef nonnull %489)
  %493 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %493, i32 noundef %.0395.lcssa, i32 noundef %.0401.lcssa, ptr noundef nonnull %364, i32 noundef 0)
          to label %494 unwind label %539

494:                                              ; preds = %490
  %495 = getelementptr inbounds i8, ptr %0, i64 184
  %496 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull %493)
  call void @_ZdaPv(ptr noundef nonnull %364) #11
  %497 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #12
  invoke void @_ZN10SimTKIpopt16DenseVectorSpaceC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %497, i32 noundef %.0398.lcssa)
          to label %498 unwind label %541

498:                                              ; preds = %494
  %499 = getelementptr inbounds i8, ptr %0, i64 192
  %500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef nonnull %497)
  %501 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40) %501, i32 noundef %.0395.lcssa, i32 noundef %.0398.lcssa, ptr noundef nonnull %365, i32 noundef 0)
          to label %502 unwind label %543

502:                                              ; preds = %498
  %503 = getelementptr inbounds i8, ptr %0, i64 200
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull %501)
  call void @_ZdaPv(ptr noundef nonnull %365) #11
  call void @_ZdaPv(ptr noundef nonnull %205) #11
  call void @_ZdaPv(ptr noundef nonnull %206) #11
  %505 = load i32, ptr %181, align 4, !tbaa !42
  %506 = sext i32 %505 to i64
  %507 = icmp slt i32 %505, 0
  %508 = shl nsw i64 %506, 2
  %509 = select i1 %507, i64 -1, i64 %508
  %510 = call noalias noundef nonnull ptr @_Znam(i64 noundef %509) #12
  %511 = call noalias noundef nonnull ptr @_Znam(i64 noundef %509) #12
  %512 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123)
  %513 = load i32, ptr %179, align 8, !tbaa !40
  %514 = load i32, ptr %180, align 4, !tbaa !41
  %515 = load i32, ptr %181, align 4, !tbaa !42
  %516 = load ptr, ptr %512, align 8, !tbaa !37
  %517 = getelementptr inbounds i8, ptr %516, i64 80
  %518 = load ptr, ptr %517, align 8
  %519 = call noundef zeroext i1 %518(ptr noundef nonnull align 8 dereferenceable(12) %512, i32 noundef %513, ptr noundef null, i1 noundef zeroext false, i32 noundef %514, i32 noundef %515, ptr noundef nonnull %510, ptr noundef nonnull %511, ptr noundef null)
  %520 = load i32, ptr %125, align 4, !tbaa !51
  %.not444 = icmp ne i32 %520, 1
  %.pre649 = load i32, ptr %181, align 4
  %521 = icmp sgt i32 %.pre649, 0
  %or.cond678 = select i1 %.not444, i1 %521, i1 false
  br i1 %or.cond678, label %.lr.ph539.preheader, label %.loopexit502

.lr.ph539.preheader:                              ; preds = %502
  %wide.trip.count611 = zext nneg i32 %.pre649 to i64
  %min.iters.check = icmp ult i32 %.pre649, 8
  br i1 %min.iters.check, label %.lr.ph539.preheader730, label %vector.ph

.lr.ph539.preheader730:                           ; preds = %middle.block, %.lr.ph539.preheader
  %indvars.iv608.ph = phi i64 [ 0, %.lr.ph539.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph539

vector.ph:                                        ; preds = %.lr.ph539.preheader
  %n.vec = and i64 %wide.trip.count611, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %522 = getelementptr inbounds i32, ptr %510, i64 %index
  %523 = getelementptr inbounds i8, ptr %522, i64 16
  %wide.load = load <4 x i32>, ptr %522, align 4, !tbaa !39
  %wide.load691 = load <4 x i32>, ptr %523, align 4, !tbaa !39
  %524 = add nsw <4 x i32> %wide.load, <i32 1, i32 1, i32 1, i32 1>
  %525 = add nsw <4 x i32> %wide.load691, <i32 1, i32 1, i32 1, i32 1>
  store <4 x i32> %524, ptr %522, align 4, !tbaa !39
  store <4 x i32> %525, ptr %523, align 4, !tbaa !39
  %526 = getelementptr inbounds i32, ptr %511, i64 %index
  %527 = getelementptr inbounds i8, ptr %526, i64 16
  %wide.load692 = load <4 x i32>, ptr %526, align 4, !tbaa !39
  %wide.load693 = load <4 x i32>, ptr %527, align 4, !tbaa !39
  %528 = add nsw <4 x i32> %wide.load692, <i32 1, i32 1, i32 1, i32 1>
  %529 = add nsw <4 x i32> %wide.load693, <i32 1, i32 1, i32 1, i32 1>
  store <4 x i32> %528, ptr %526, align 4, !tbaa !39
  store <4 x i32> %529, ptr %527, align 4, !tbaa !39
  %index.next = add nuw i64 %index, 8
  %530 = icmp eq i64 %index.next, %n.vec
  br i1 %530, label %middle.block, label %vector.body, !llvm.loop !52

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count611
  br i1 %cmp.n, label %.loopexit502, label %.lr.ph539.preheader730

531:                                              ; preds = %466
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %467, i64 noundef 40) #11
  br label %915

533:                                              ; preds = %469
  %534 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %476, i64 noundef 16) #11
  br label %915

535:                                              ; preds = %477
  %536 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %480, i64 noundef 40) #11
  br label %915

537:                                              ; preds = %482
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %489, i64 noundef 16) #11
  br label %915

539:                                              ; preds = %490
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %493, i64 noundef 40) #11
  br label %915

541:                                              ; preds = %494
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %497, i64 noundef 16) #11
  br label %915

543:                                              ; preds = %498
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %501, i64 noundef 40) #11
  br label %915

.lr.ph539:                                        ; preds = %.lr.ph539.preheader730, %.lr.ph539
  %indvars.iv608 = phi i64 [ %indvars.iv.next609, %.lr.ph539 ], [ %indvars.iv608.ph, %.lr.ph539.preheader730 ]
  %545 = getelementptr inbounds i32, ptr %510, i64 %indvars.iv608
  %546 = load i32, ptr %545, align 4, !tbaa !39
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr %545, align 4, !tbaa !39
  %548 = getelementptr inbounds i32, ptr %511, i64 %indvars.iv608
  %549 = load i32, ptr %548, align 4, !tbaa !39
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %548, align 4, !tbaa !39
  %indvars.iv.next609 = add nuw nsw i64 %indvars.iv608, 1
  %exitcond612.not = icmp eq i64 %indvars.iv.next609, %wide.trip.count611
  br i1 %exitcond612.not, label %.loopexit502, label %.lr.ph539, !llvm.loop !55

.loopexit502:                                     ; preds = %.lr.ph539, %middle.block, %502
  %551 = load i32, ptr %310, align 8, !tbaa !56
  %552 = icmp eq i32 %551, 0
  %553 = load i32, ptr %223, align 8
  %554 = select i1 %552, i32 0, i32 %553
  %.0387 = add nsw i32 %554, %.pre649
  %555 = sext i32 %.0387 to i64
  %556 = icmp slt i32 %.0387, 0
  %557 = shl nsw i64 %555, 2
  %558 = select i1 %556, i64 -1, i64 %557
  %559 = call noalias noundef nonnull ptr @_Znam(i64 noundef %558) #12
  %560 = getelementptr inbounds i8, ptr %0, i64 376
  store ptr %559, ptr %560, align 8, !tbaa !34
  %561 = call noalias noundef nonnull ptr @_Znam(i64 noundef %558) #12
  %562 = ptrtoint ptr %561 to i64
  %563 = call noalias noundef nonnull ptr @_Znam(i64 noundef %558) #12
  %564 = ptrtoint ptr %563 to i64
  %565 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %474)
  %566 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %565)
  %567 = getelementptr inbounds i8, ptr %0, i64 296
  %568 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %567)
  br i1 %568, label %572, label %.preheader499

.preheader499:                                    ; preds = %.loopexit502
  %invariant.gep = getelementptr i8, ptr %566, i64 -4
  %569 = load i32, ptr %181, align 4, !tbaa !42
  %570 = icmp sgt i32 %569, 0
  br i1 %570, label %.lr.ph542, label %.loopexit498

.lr.ph542:                                        ; preds = %.preheader499
  %571 = load ptr, ptr %560, align 8
  br label %603

572:                                              ; preds = %.loopexit502
  %573 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %567)
  %574 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %573)
  %invariant.gep544 = getelementptr i8, ptr %566, i64 -4
  %invariant.gep546 = getelementptr i8, ptr %574, i64 -4
  %575 = load i32, ptr %181, align 4, !tbaa !42
  %576 = icmp sgt i32 %575, 0
  br i1 %576, label %.lr.ph551, label %.loopexit498

.lr.ph551:                                        ; preds = %572
  %577 = load ptr, ptr %560, align 8
  br label %578

578:                                              ; preds = %.lr.ph551, %599
  %579 = phi i32 [ %575, %.lr.ph551 ], [ %600, %599 ]
  %indvars.iv616 = phi i64 [ 0, %.lr.ph551 ], [ %indvars.iv.next617, %599 ]
  %.0372548 = phi i32 [ 0, %.lr.ph551 ], [ %.1373, %599 ]
  %580 = getelementptr inbounds i32, ptr %510, i64 %indvars.iv616
  %581 = load i32, ptr %580, align 4, !tbaa !39
  %582 = sext i32 %581 to i64
  %gep545 = getelementptr i32, ptr %invariant.gep544, i64 %582
  %583 = load i32, ptr %gep545, align 4, !tbaa !39
  %584 = getelementptr inbounds i32, ptr %511, i64 %indvars.iv616
  %585 = load i32, ptr %584, align 4, !tbaa !39
  %586 = sext i32 %585 to i64
  %gep547 = getelementptr i32, ptr %invariant.gep546, i64 %586
  %587 = load i32, ptr %gep547, align 4, !tbaa !39
  %588 = icmp ne i32 %587, -1
  %589 = icmp ne i32 %583, -1
  %or.cond = select i1 %588, i1 %589, i1 false
  br i1 %or.cond, label %590, label %599

590:                                              ; preds = %578
  %591 = sext i32 %.0372548 to i64
  %592 = getelementptr inbounds i32, ptr %577, i64 %591
  %593 = trunc nuw nsw i64 %indvars.iv616 to i32
  store i32 %593, ptr %592, align 4, !tbaa !39
  %594 = add nuw nsw i32 %583, 1
  %595 = getelementptr inbounds i32, ptr %561, i64 %591
  store i32 %594, ptr %595, align 4, !tbaa !39
  %596 = add nuw nsw i32 %587, 1
  %597 = getelementptr inbounds i32, ptr %563, i64 %591
  store i32 %596, ptr %597, align 4, !tbaa !39
  %598 = add nsw i32 %.0372548, 1
  %.pre651 = load i32, ptr %181, align 4, !tbaa !42
  br label %599

599:                                              ; preds = %590, %578
  %600 = phi i32 [ %.pre651, %590 ], [ %579, %578 ]
  %.1373 = phi i32 [ %598, %590 ], [ %.0372548, %578 ]
  %indvars.iv.next617 = add nuw nsw i64 %indvars.iv616, 1
  %601 = sext i32 %600 to i64
  %602 = icmp slt i64 %indvars.iv.next617, %601
  br i1 %602, label %578, label %.loopexit498, !llvm.loop !57

603:                                              ; preds = %.lr.ph542, %619
  %604 = phi i32 [ %569, %.lr.ph542 ], [ %620, %619 ]
  %indvars.iv613 = phi i64 [ 0, %.lr.ph542 ], [ %indvars.iv.next614, %619 ]
  %.2374540 = phi i32 [ 0, %.lr.ph542 ], [ %.3375, %619 ]
  %605 = getelementptr inbounds i32, ptr %510, i64 %indvars.iv613
  %606 = load i32, ptr %605, align 4, !tbaa !39
  %607 = sext i32 %606 to i64
  %gep = getelementptr i32, ptr %invariant.gep, i64 %607
  %608 = load i32, ptr %gep, align 4, !tbaa !39
  %.not445 = icmp eq i32 %608, -1
  br i1 %.not445, label %619, label %609

609:                                              ; preds = %603
  %610 = getelementptr inbounds i32, ptr %511, i64 %indvars.iv613
  %611 = load i32, ptr %610, align 4, !tbaa !39
  %612 = sext i32 %.2374540 to i64
  %613 = getelementptr inbounds i32, ptr %571, i64 %612
  %614 = trunc nuw nsw i64 %indvars.iv613 to i32
  store i32 %614, ptr %613, align 4, !tbaa !39
  %615 = add nuw nsw i32 %608, 1
  %616 = getelementptr inbounds i32, ptr %561, i64 %612
  store i32 %615, ptr %616, align 4, !tbaa !39
  %617 = getelementptr inbounds i32, ptr %563, i64 %612
  store i32 %611, ptr %617, align 4, !tbaa !39
  %618 = add nsw i32 %.2374540, 1
  %.pre650 = load i32, ptr %181, align 4, !tbaa !42
  br label %619

619:                                              ; preds = %609, %603
  %620 = phi i32 [ %.pre650, %609 ], [ %604, %603 ]
  %.3375 = phi i32 [ %618, %609 ], [ %.2374540, %603 ]
  %indvars.iv.next614 = add nuw nsw i64 %indvars.iv613, 1
  %621 = sext i32 %620 to i64
  %622 = icmp slt i64 %indvars.iv.next614, %621
  br i1 %622, label %603, label %.loopexit498, !llvm.loop !58

.loopexit498:                                     ; preds = %619, %599, %.preheader499, %572
  %.4376 = phi i32 [ 0, %572 ], [ 0, %.preheader499 ], [ %.1373, %599 ], [ %.3375, %619 ]
  %623 = getelementptr inbounds i8, ptr %0, i64 92
  store i32 %.4376, ptr %623, align 4, !tbaa !59
  %624 = load i32, ptr %310, align 8, !tbaa !56
  %625 = icmp eq i32 %624, 0
  br i1 %625, label %626, label %628

626:                                              ; preds = %.loopexit498
  %627 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %.4376, ptr %627, align 8, !tbaa !60
  br label %.loopexit497

628:                                              ; preds = %.loopexit498
  %629 = load i32, ptr %223, align 8, !tbaa !44
  %630 = add nsw i32 %629, %.4376
  %631 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %630, ptr %631, align 8, !tbaa !60
  %632 = icmp sgt i32 %629, 0
  br i1 %632, label %.lr.ph556, label %.loopexit497

.lr.ph556:                                        ; preds = %628
  %633 = add i32 %.0393.lcssa, 1
  %634 = getelementptr inbounds i8, ptr %0, i64 392
  %635 = load ptr, ptr %634, align 8, !tbaa !36
  %636 = sext i32 %.4376 to i64
  %wide.trip.count626 = zext nneg i32 %629 to i64
  %min.iters.check699 = icmp ult i32 %629, 16
  br i1 %min.iters.check699, label %scalar.ph698.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph556
  %637 = ptrtoint ptr %635 to i64
  %638 = sub i64 %564, %562
  %diff.check = icmp ult i64 %638, 32
  %639 = shl nsw i64 %636, 2
  %640 = add i64 %639, %562
  %641 = sub i64 %637, %640
  %diff.check694 = icmp ult i64 %641, 32
  %conflict.rdx = or i1 %diff.check, %diff.check694
  %642 = add i64 %639, %564
  %643 = sub i64 %642, %637
  %diff.check695 = icmp ult i64 %643, 32
  %conflict.rdx696 = or i1 %conflict.rdx, %diff.check695
  br i1 %conflict.rdx696, label %scalar.ph698.preheader, label %vector.ph700

vector.ph700:                                     ; preds = %vector.memcheck
  %n.vec702 = and i64 %wide.trip.count626, 2147483640
  %ind.end = add nsw i64 %n.vec702, %636
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %633, i64 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %vector.body705

vector.body705:                                   ; preds = %vector.body705, %vector.ph700
  %index706 = phi i64 [ 0, %vector.ph700 ], [ %index.next710, %vector.body705 ]
  %vec.ind = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %vector.ph700 ], [ %vec.ind.next, %vector.body705 ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %offset.idx = add i64 %index706, %636
  %644 = add <4 x i32> %broadcast.splat, %vec.ind
  %645 = add <4 x i32> %broadcast.splat, %step.add
  %646 = getelementptr inbounds i32, ptr %561, i64 %offset.idx
  %647 = getelementptr inbounds i8, ptr %646, i64 16
  store <4 x i32> %644, ptr %646, align 4, !tbaa !39
  store <4 x i32> %645, ptr %647, align 4, !tbaa !39
  %648 = getelementptr inbounds i32, ptr %635, i64 %index706
  %649 = getelementptr inbounds i8, ptr %648, i64 16
  %wide.load708 = load <4 x i32>, ptr %648, align 4, !tbaa !39
  %wide.load709 = load <4 x i32>, ptr %649, align 4, !tbaa !39
  %650 = add nsw <4 x i32> %wide.load708, <i32 1, i32 1, i32 1, i32 1>
  %651 = add nsw <4 x i32> %wide.load709, <i32 1, i32 1, i32 1, i32 1>
  %652 = getelementptr inbounds i32, ptr %563, i64 %offset.idx
  %653 = getelementptr inbounds i8, ptr %652, i64 16
  store <4 x i32> %650, ptr %652, align 4, !tbaa !39
  store <4 x i32> %651, ptr %653, align 4, !tbaa !39
  %index.next710 = add nuw i64 %index706, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %654 = icmp eq i64 %index.next710, %n.vec702
  br i1 %654, label %middle.block697, label %vector.body705, !llvm.loop !61

middle.block697:                                  ; preds = %vector.body705
  %cmp.n711 = icmp eq i64 %n.vec702, %wide.trip.count626
  br i1 %cmp.n711, label %.loopexit497, label %scalar.ph698.preheader

scalar.ph698.preheader:                           ; preds = %middle.block697, %vector.memcheck, %.lr.ph556
  %indvars.iv621.ph = phi i64 [ %636, %vector.memcheck ], [ %636, %.lr.ph556 ], [ %ind.end, %middle.block697 ]
  %indvars.iv619.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph556 ], [ %n.vec702, %middle.block697 ]
  %xtraiter = and i64 %wide.trip.count626, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph698.prol.loopexit, label %scalar.ph698.prol

scalar.ph698.prol:                                ; preds = %scalar.ph698.preheader
  %655 = trunc nuw nsw i64 %indvars.iv619.ph to i32
  %656 = add i32 %633, %655
  %657 = getelementptr inbounds i32, ptr %561, i64 %indvars.iv621.ph
  store i32 %656, ptr %657, align 4, !tbaa !39
  %658 = getelementptr inbounds i32, ptr %635, i64 %indvars.iv619.ph
  %659 = load i32, ptr %658, align 4, !tbaa !39
  %660 = add nsw i32 %659, 1
  %661 = getelementptr inbounds i32, ptr %563, i64 %indvars.iv621.ph
  store i32 %660, ptr %661, align 4, !tbaa !39
  %indvars.iv.next622.prol = add nsw i64 %indvars.iv621.ph, 1
  %indvars.iv.next620.prol = or disjoint i64 %indvars.iv619.ph, 1
  br label %scalar.ph698.prol.loopexit

scalar.ph698.prol.loopexit:                       ; preds = %scalar.ph698.prol, %scalar.ph698.preheader
  %indvars.iv621.unr = phi i64 [ %indvars.iv621.ph, %scalar.ph698.preheader ], [ %indvars.iv.next622.prol, %scalar.ph698.prol ]
  %indvars.iv619.unr = phi i64 [ %indvars.iv619.ph, %scalar.ph698.preheader ], [ %indvars.iv.next620.prol, %scalar.ph698.prol ]
  %662 = add nsw i64 %wide.trip.count626, -1
  %663 = icmp eq i64 %indvars.iv619.ph, %662
  br i1 %663, label %.loopexit497, label %scalar.ph698

scalar.ph698:                                     ; preds = %scalar.ph698.prol.loopexit, %scalar.ph698
  %indvars.iv621 = phi i64 [ %indvars.iv.next622.1, %scalar.ph698 ], [ %indvars.iv621.unr, %scalar.ph698.prol.loopexit ]
  %indvars.iv619 = phi i64 [ %indvars.iv.next620.1, %scalar.ph698 ], [ %indvars.iv619.unr, %scalar.ph698.prol.loopexit ]
  %664 = trunc nuw nsw i64 %indvars.iv619 to i32
  %665 = add i32 %633, %664
  %666 = getelementptr inbounds i32, ptr %561, i64 %indvars.iv621
  store i32 %665, ptr %666, align 4, !tbaa !39
  %667 = getelementptr inbounds i32, ptr %635, i64 %indvars.iv619
  %668 = load i32, ptr %667, align 4, !tbaa !39
  %669 = add nsw i32 %668, 1
  %670 = getelementptr inbounds i32, ptr %563, i64 %indvars.iv621
  store i32 %669, ptr %670, align 4, !tbaa !39
  %indvars.iv.next622 = add nsw i64 %indvars.iv621, 1
  %indvars.iv.next620 = add nuw nsw i64 %indvars.iv619, 1
  %671 = trunc nuw nsw i64 %indvars.iv.next620 to i32
  %672 = add i32 %633, %671
  %673 = getelementptr inbounds i32, ptr %561, i64 %indvars.iv.next622
  store i32 %672, ptr %673, align 4, !tbaa !39
  %674 = getelementptr inbounds i32, ptr %635, i64 %indvars.iv.next620
  %675 = load i32, ptr %674, align 4, !tbaa !39
  %676 = add nsw i32 %675, 1
  %677 = getelementptr inbounds i32, ptr %563, i64 %indvars.iv.next622
  store i32 %676, ptr %677, align 4, !tbaa !39
  %indvars.iv.next622.1 = add nsw i64 %indvars.iv621, 2
  %indvars.iv.next620.1 = add nuw nsw i64 %indvars.iv619, 2
  %exitcond627.not.1 = icmp eq i64 %indvars.iv.next620.1, %wide.trip.count626
  br i1 %exitcond627.not.1, label %.loopexit497, label %scalar.ph698, !llvm.loop !62

.loopexit497:                                     ; preds = %scalar.ph698.prol.loopexit, %scalar.ph698, %middle.block697, %628, %626
  %678 = phi i32 [ %.4376, %626 ], [ %630, %628 ], [ %630, %middle.block697 ], [ %630, %scalar.ph698 ], [ %630, %scalar.ph698.prol.loopexit ]
  %.0362 = phi i32 [ 0, %626 ], [ %629, %628 ], [ %629, %middle.block697 ], [ %629, %scalar.ph698 ], [ %629, %scalar.ph698.prol.loopexit ]
  %679 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  %680 = add nsw i32 %.0362, %.0393.lcssa
  invoke void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %679, i32 noundef %680, i32 noundef %.0356.lcssa663, i32 noundef %678, ptr noundef nonnull %561, ptr noundef nonnull %563)
          to label %681 unwind label %703

681:                                              ; preds = %.loopexit497
  %682 = getelementptr inbounds i8, ptr %0, i64 208
  %683 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %682, ptr noundef nonnull %679)
  call void @_ZdaPv(ptr noundef nonnull %561) #11
  call void @_ZdaPv(ptr noundef nonnull %563) #11
  %684 = load i32, ptr %181, align 4, !tbaa !42
  %685 = sext i32 %684 to i64
  %686 = icmp slt i32 %684, 0
  %687 = shl nsw i64 %685, 2
  %688 = select i1 %686, i64 -1, i64 %687
  %689 = call noalias noundef nonnull ptr @_Znam(i64 noundef %688) #12
  %690 = call noalias noundef nonnull ptr @_Znam(i64 noundef %688) #12
  %691 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %487)
  %692 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %691)
  %693 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %567)
  br i1 %693, label %697, label %.preheader495

.preheader495:                                    ; preds = %681
  %invariant.gep557 = getelementptr i8, ptr %692, i64 -4
  %694 = load i32, ptr %181, align 4, !tbaa !42
  %695 = icmp sgt i32 %694, 0
  br i1 %695, label %.lr.ph561, label %.loopexit494

.lr.ph561:                                        ; preds = %.preheader495
  %696 = load ptr, ptr %560, align 8
  br label %733

697:                                              ; preds = %681
  %698 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %567)
  %699 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %698)
  %invariant.gep563 = getelementptr i8, ptr %692, i64 -4
  %invariant.gep565 = getelementptr i8, ptr %699, i64 -4
  %700 = load i32, ptr %181, align 4, !tbaa !42
  %701 = icmp sgt i32 %700, 0
  br i1 %701, label %.lr.ph570, label %.loopexit494

.lr.ph570:                                        ; preds = %697
  %702 = load ptr, ptr %560, align 8
  br label %705

703:                                              ; preds = %.loopexit497
  %704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %679, i64 noundef 40) #11
  br label %915

705:                                              ; preds = %.lr.ph570, %729
  %706 = phi i32 [ %700, %.lr.ph570 ], [ %730, %729 ]
  %indvars.iv631 = phi i64 [ 0, %.lr.ph570 ], [ %indvars.iv.next632, %729 ]
  %.6378567 = phi i32 [ 0, %.lr.ph570 ], [ %.7379, %729 ]
  %707 = getelementptr inbounds i32, ptr %510, i64 %indvars.iv631
  %708 = load i32, ptr %707, align 4, !tbaa !39
  %709 = sext i32 %708 to i64
  %gep564 = getelementptr i32, ptr %invariant.gep563, i64 %709
  %710 = load i32, ptr %gep564, align 4, !tbaa !39
  %711 = getelementptr inbounds i32, ptr %511, i64 %indvars.iv631
  %712 = load i32, ptr %711, align 4, !tbaa !39
  %713 = sext i32 %712 to i64
  %gep566 = getelementptr i32, ptr %invariant.gep565, i64 %713
  %714 = load i32, ptr %gep566, align 4, !tbaa !39
  %715 = icmp ne i32 %714, -1
  %716 = icmp ne i32 %710, -1
  %or.cond3 = select i1 %715, i1 %716, i1 false
  br i1 %or.cond3, label %717, label %729

717:                                              ; preds = %705
  %718 = load i32, ptr %623, align 4, !tbaa !59
  %719 = add nsw i32 %718, %.6378567
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %702, i64 %720
  %722 = trunc nuw nsw i64 %indvars.iv631 to i32
  store i32 %722, ptr %721, align 4, !tbaa !39
  %723 = add nuw nsw i32 %710, 1
  %724 = sext i32 %.6378567 to i64
  %725 = getelementptr inbounds i32, ptr %689, i64 %724
  store i32 %723, ptr %725, align 4, !tbaa !39
  %726 = add nuw nsw i32 %714, 1
  %727 = getelementptr inbounds i32, ptr %690, i64 %724
  store i32 %726, ptr %727, align 4, !tbaa !39
  %728 = add nsw i32 %.6378567, 1
  %.pre653 = load i32, ptr %181, align 4, !tbaa !42
  br label %729

729:                                              ; preds = %717, %705
  %730 = phi i32 [ %.pre653, %717 ], [ %706, %705 ]
  %.7379 = phi i32 [ %728, %717 ], [ %.6378567, %705 ]
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %731 = sext i32 %730 to i64
  %732 = icmp slt i64 %indvars.iv.next632, %731
  br i1 %732, label %705, label %.loopexit494, !llvm.loop !63

733:                                              ; preds = %.lr.ph561, %752
  %734 = phi i32 [ %694, %.lr.ph561 ], [ %753, %752 ]
  %indvars.iv628 = phi i64 [ 0, %.lr.ph561 ], [ %indvars.iv.next629, %752 ]
  %.8380559 = phi i32 [ 0, %.lr.ph561 ], [ %.9381, %752 ]
  %735 = getelementptr inbounds i32, ptr %510, i64 %indvars.iv628
  %736 = load i32, ptr %735, align 4, !tbaa !39
  %737 = sext i32 %736 to i64
  %gep558 = getelementptr i32, ptr %invariant.gep557, i64 %737
  %738 = load i32, ptr %gep558, align 4, !tbaa !39
  %.not446 = icmp eq i32 %738, -1
  br i1 %.not446, label %752, label %739

739:                                              ; preds = %733
  %740 = getelementptr inbounds i32, ptr %511, i64 %indvars.iv628
  %741 = load i32, ptr %740, align 4, !tbaa !39
  %742 = load i32, ptr %623, align 4, !tbaa !59
  %743 = add nsw i32 %742, %.8380559
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds i32, ptr %696, i64 %744
  %746 = trunc nuw nsw i64 %indvars.iv628 to i32
  store i32 %746, ptr %745, align 4, !tbaa !39
  %747 = add nuw nsw i32 %738, 1
  %748 = sext i32 %.8380559 to i64
  %749 = getelementptr inbounds i32, ptr %689, i64 %748
  store i32 %747, ptr %749, align 4, !tbaa !39
  %750 = getelementptr inbounds i32, ptr %690, i64 %748
  store i32 %741, ptr %750, align 4, !tbaa !39
  %751 = add nsw i32 %.8380559, 1
  %.pre652 = load i32, ptr %181, align 4, !tbaa !42
  br label %752

752:                                              ; preds = %739, %733
  %753 = phi i32 [ %.pre652, %739 ], [ %734, %733 ]
  %.9381 = phi i32 [ %751, %739 ], [ %.8380559, %733 ]
  %indvars.iv.next629 = add nuw nsw i64 %indvars.iv628, 1
  %754 = sext i32 %753 to i64
  %755 = icmp slt i64 %indvars.iv.next629, %754
  br i1 %755, label %733, label %.loopexit494, !llvm.loop !64

.loopexit494:                                     ; preds = %752, %729, %.preheader495, %697
  %.10382 = phi i32 [ 0, %697 ], [ 0, %.preheader495 ], [ %.7379, %729 ], [ %.9381, %752 ]
  %756 = getelementptr inbounds i8, ptr %0, i64 96
  store i32 %.10382, ptr %756, align 8, !tbaa !65
  %757 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %757, i32 noundef %.0395.lcssa, i32 noundef %.0356.lcssa663, i32 noundef %.10382, ptr noundef nonnull %689, ptr noundef nonnull %690)
          to label %758 unwind label %789

758:                                              ; preds = %.loopexit494
  %759 = getelementptr inbounds i8, ptr %0, i64 216
  %760 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef nonnull %757)
  call void @_ZdaPv(ptr noundef nonnull %689) #11
  call void @_ZdaPv(ptr noundef nonnull %690) #11
  call void @_ZdaPv(ptr noundef nonnull %510) #11
  call void @_ZdaPv(ptr noundef nonnull %511) #11
  %761 = getelementptr inbounds i8, ptr %0, i64 76
  %762 = load i32, ptr %761, align 4, !tbaa !66
  %763 = icmp eq i32 %762, 0
  br i1 %763, label %764, label %869

764:                                              ; preds = %758
  %765 = load i32, ptr %182, align 8, !tbaa !43
  %766 = sext i32 %765 to i64
  %767 = icmp slt i32 %765, 0
  %768 = shl nsw i64 %766, 2
  %769 = select i1 %767, i64 -1, i64 %768
  %770 = call noalias noundef nonnull ptr @_Znam(i64 noundef %769) #12
  %771 = call noalias noundef nonnull ptr @_Znam(i64 noundef %769) #12
  %772 = call noalias noundef nonnull ptr @_Znam(i64 noundef %769) #12
  %773 = call noalias noundef nonnull ptr @_Znam(i64 noundef %769) #12
  %774 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123)
  %775 = load i32, ptr %179, align 8, !tbaa !40
  %776 = load i32, ptr %180, align 4, !tbaa !41
  %777 = load i32, ptr %182, align 8, !tbaa !43
  %778 = load ptr, ptr %774, align 8, !tbaa !37
  %779 = getelementptr inbounds i8, ptr %778, i64 88
  %780 = load ptr, ptr %779, align 8
  %781 = call noundef zeroext i1 %780(ptr noundef nonnull align 8 dereferenceable(12) %774, i32 noundef %775, ptr noundef null, i1 noundef zeroext false, double noundef 0.000000e+00, i32 noundef %776, ptr noundef null, i1 noundef zeroext false, i32 noundef %777, ptr noundef nonnull %770, ptr noundef nonnull %771, ptr noundef null)
  br i1 %781, label %798, label %782

782:                                              ; preds = %764
  %783 = getelementptr inbounds i8, ptr %0, i64 24
  %784 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %783)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %784, i32 noundef 1, i32 noundef 3, ptr noundef nonnull @.str.51)
  call void @_ZdaPv(ptr noundef nonnull %772) #11
  call void @_ZdaPv(ptr noundef nonnull %773) #11
  %785 = call ptr @__cxa_allocate_exception(i64 112) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.52, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %786 unwind label %.thread488

786:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %787 unwind label %792

787:                                              ; preds = %786
  invoke void @_ZN10SimTKIpopt14OPTION_INVALIDC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_i(ptr noundef nonnull align 8 dereferenceable(112) %785, ptr noundef nonnull %42, ptr noundef nonnull %44, i32 noundef 597)
          to label %788 unwind label %794

788:                                              ; preds = %787
  invoke void @__cxa_throw(ptr nonnull %785, ptr nonnull @_ZTIN10SimTKIpopt14OPTION_INVALIDE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #10
          to label %918 unwind label %794

789:                                              ; preds = %.loopexit494
  %790 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %757, i64 noundef 40) #11
  br label %915

.thread488:                                       ; preds = %782
  %791 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #9
  br label %797

792:                                              ; preds = %786
  %793 = landingpad { ptr, i32 }
          cleanup
  br label %796

794:                                              ; preds = %788, %787
  %.0348 = phi i1 [ false, %788 ], [ true, %787 ]
  %795 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %796

796:                                              ; preds = %792, %794
  %.1349 = phi i1 [ %.0348, %794 ], [ true, %792 ]
  %.pn447 = phi { ptr, i32 } [ %795, %794 ], [ %793, %792 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #9
  br i1 %.1349, label %797, label %915

797:                                              ; preds = %.thread488, %796
  %.pn447.pn491 = phi { ptr, i32 } [ %791, %.thread488 ], [ %.pn447, %796 ]
  call void @__cxa_free_exception(ptr %785) #9
  br label %915

798:                                              ; preds = %764
  %799 = load i32, ptr %125, align 4, !tbaa !51
  %.not450 = icmp eq i32 %799, 1
  br i1 %.not450, label %.loopexit493, label %.preheader

.preheader:                                       ; preds = %798
  %800 = load i32, ptr %182, align 8, !tbaa !43
  %801 = icmp sgt i32 %800, 0
  br i1 %801, label %.lr.ph573.preheader, label %.loopexit493

.lr.ph573.preheader:                              ; preds = %.preheader
  %wide.trip.count637 = zext nneg i32 %800 to i64
  %min.iters.check714 = icmp ult i32 %800, 8
  br i1 %min.iters.check714, label %.lr.ph573.preheader727, label %vector.ph715

vector.ph715:                                     ; preds = %.lr.ph573.preheader
  %n.vec717 = and i64 %wide.trip.count637, 2147483640
  br label %vector.body719

vector.body719:                                   ; preds = %vector.body719, %vector.ph715
  %index720 = phi i64 [ 0, %vector.ph715 ], [ %index.next725, %vector.body719 ]
  %802 = getelementptr inbounds i32, ptr %770, i64 %index720
  %803 = getelementptr inbounds i8, ptr %802, i64 16
  %wide.load721 = load <4 x i32>, ptr %802, align 4, !tbaa !39
  %wide.load722 = load <4 x i32>, ptr %803, align 4, !tbaa !39
  %804 = add nsw <4 x i32> %wide.load721, <i32 1, i32 1, i32 1, i32 1>
  %805 = add nsw <4 x i32> %wide.load722, <i32 1, i32 1, i32 1, i32 1>
  store <4 x i32> %804, ptr %802, align 4, !tbaa !39
  store <4 x i32> %805, ptr %803, align 4, !tbaa !39
  %806 = getelementptr inbounds i32, ptr %771, i64 %index720
  %807 = getelementptr inbounds i8, ptr %806, i64 16
  %wide.load723 = load <4 x i32>, ptr %806, align 4, !tbaa !39
  %wide.load724 = load <4 x i32>, ptr %807, align 4, !tbaa !39
  %808 = add nsw <4 x i32> %wide.load723, <i32 1, i32 1, i32 1, i32 1>
  %809 = add nsw <4 x i32> %wide.load724, <i32 1, i32 1, i32 1, i32 1>
  store <4 x i32> %808, ptr %806, align 4, !tbaa !39
  store <4 x i32> %809, ptr %807, align 4, !tbaa !39
  %index.next725 = add nuw i64 %index720, 8
  %810 = icmp eq i64 %index.next725, %n.vec717
  br i1 %810, label %middle.block712, label %vector.body719, !llvm.loop !67

middle.block712:                                  ; preds = %vector.body719
  %cmp.n726 = icmp eq i64 %n.vec717, %wide.trip.count637
  br i1 %cmp.n726, label %.loopexit493, label %.lr.ph573.preheader727

.lr.ph573.preheader727:                           ; preds = %middle.block712, %.lr.ph573.preheader
  %indvars.iv634.ph = phi i64 [ 0, %.lr.ph573.preheader ], [ %n.vec717, %middle.block712 ]
  br label %.lr.ph573

.lr.ph573:                                        ; preds = %.lr.ph573.preheader727, %.lr.ph573
  %indvars.iv634 = phi i64 [ %indvars.iv.next635, %.lr.ph573 ], [ %indvars.iv634.ph, %.lr.ph573.preheader727 ]
  %811 = getelementptr inbounds i32, ptr %770, i64 %indvars.iv634
  %812 = load i32, ptr %811, align 4, !tbaa !39
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %811, align 4, !tbaa !39
  %814 = getelementptr inbounds i32, ptr %771, i64 %indvars.iv634
  %815 = load i32, ptr %814, align 4, !tbaa !39
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %814, align 4, !tbaa !39
  %indvars.iv.next635 = add nuw nsw i64 %indvars.iv634, 1
  %exitcond638.not = icmp eq i64 %indvars.iv.next635, %wide.trip.count637
  br i1 %exitcond638.not, label %.loopexit493, label %.lr.ph573, !llvm.loop !68

.loopexit493:                                     ; preds = %.lr.ph573, %middle.block712, %.preheader, %798
  %817 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %567)
  br i1 %817, label %818, label %856

818:                                              ; preds = %.loopexit493
  %819 = load i32, ptr %182, align 8, !tbaa !43
  %820 = sext i32 %819 to i64
  %821 = icmp slt i32 %819, 0
  %822 = shl nsw i64 %820, 2
  %823 = select i1 %821, i64 -1, i64 %822
  %824 = call noalias noundef nonnull ptr @_Znam(i64 noundef %823) #12
  %825 = getelementptr inbounds i8, ptr %0, i64 384
  store ptr %824, ptr %825, align 8, !tbaa !35
  %826 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %567)
  %827 = call noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80) %826)
  %invariant.gep578 = getelementptr i8, ptr %827, i64 -4
  %828 = load i32, ptr %182, align 8, !tbaa !43
  %829 = icmp sgt i32 %828, 0
  br i1 %829, label %.lr.ph585, label %.loopexit

.lr.ph585:                                        ; preds = %818
  %830 = load ptr, ptr %825, align 8
  br label %831

831:                                              ; preds = %.lr.ph585, %852
  %832 = phi i32 [ %828, %.lr.ph585 ], [ %853, %852 ]
  %indvars.iv642 = phi i64 [ 0, %.lr.ph585 ], [ %indvars.iv.next643, %852 ]
  %.11383582 = phi i32 [ 0, %.lr.ph585 ], [ %.12384, %852 ]
  %833 = getelementptr inbounds i32, ptr %770, i64 %indvars.iv642
  %834 = load i32, ptr %833, align 4, !tbaa !39
  %835 = sext i32 %834 to i64
  %gep579 = getelementptr i32, ptr %invariant.gep578, i64 %835
  %836 = load i32, ptr %gep579, align 4, !tbaa !39
  %837 = getelementptr inbounds i32, ptr %771, i64 %indvars.iv642
  %838 = load i32, ptr %837, align 4, !tbaa !39
  %839 = sext i32 %838 to i64
  %gep581 = getelementptr i32, ptr %invariant.gep578, i64 %839
  %840 = load i32, ptr %gep581, align 4, !tbaa !39
  %841 = icmp ne i32 %836, -1
  %842 = icmp ne i32 %840, -1
  %or.cond5 = select i1 %841, i1 %842, i1 false
  br i1 %or.cond5, label %843, label %852

843:                                              ; preds = %831
  %844 = sext i32 %.11383582 to i64
  %845 = getelementptr inbounds i32, ptr %830, i64 %844
  %846 = trunc nuw nsw i64 %indvars.iv642 to i32
  store i32 %846, ptr %845, align 4, !tbaa !39
  %847 = add nuw nsw i32 %836, 1
  %848 = getelementptr inbounds i32, ptr %772, i64 %844
  store i32 %847, ptr %848, align 4, !tbaa !39
  %849 = add nuw nsw i32 %840, 1
  %850 = getelementptr inbounds i32, ptr %773, i64 %844
  store i32 %849, ptr %850, align 4, !tbaa !39
  %851 = add nsw i32 %.11383582, 1
  %.pre654 = load i32, ptr %182, align 8, !tbaa !43
  br label %852

852:                                              ; preds = %843, %831
  %853 = phi i32 [ %.pre654, %843 ], [ %832, %831 ]
  %.12384 = phi i32 [ %851, %843 ], [ %.11383582, %831 ]
  %indvars.iv.next643 = add nuw nsw i64 %indvars.iv642, 1
  %854 = sext i32 %853 to i64
  %855 = icmp slt i64 %indvars.iv.next643, %854
  br i1 %855, label %831, label %.loopexit, !llvm.loop !69

856:                                              ; preds = %.loopexit493
  %857 = getelementptr inbounds i8, ptr %0, i64 384
  store ptr null, ptr %857, align 8, !tbaa !35
  %858 = load i32, ptr %182, align 8, !tbaa !43
  %859 = icmp sgt i32 %858, 0
  br i1 %859, label %.lr.ph576.preheader, label %.loopexit

.lr.ph576.preheader:                              ; preds = %856
  %860 = zext nneg i32 %858 to i64
  %861 = shl nuw nsw i64 %860, 2
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %772, ptr nonnull align 4 %770, i64 %861, i1 false), !tbaa !39
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %773, ptr nonnull align 4 %771, i64 %861, i1 false), !tbaa !39
  br label %.loopexit

.loopexit:                                        ; preds = %852, %.lr.ph576.preheader, %856, %818
  %.14386 = phi i32 [ 0, %818 ], [ %858, %856 ], [ %858, %.lr.ph576.preheader ], [ %.12384, %852 ]
  %862 = getelementptr inbounds i8, ptr %0, i64 108
  store i32 %.14386, ptr %862, align 4, !tbaa !70
  %863 = call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #12
  invoke void @_ZN10SimTKIpopt15SymTMatrixSpaceC1EiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40) %863, i32 noundef %.0356.lcssa663, i32 noundef %.14386, ptr noundef nonnull %772, ptr noundef nonnull %773)
          to label %864 unwind label %867

864:                                              ; preds = %.loopexit
  %865 = getelementptr inbounds i8, ptr %0, i64 224
  %866 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %865, ptr noundef nonnull %863)
  call void @_ZdaPv(ptr noundef nonnull %770) #11
  call void @_ZdaPv(ptr noundef nonnull %771) #11
  call void @_ZdaPv(ptr noundef nonnull %772) #11
  call void @_ZdaPv(ptr noundef nonnull %773) #11
  br label %873

867:                                              ; preds = %.loopexit
  %868 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %863, i64 noundef 40) #11
  br label %915

869:                                              ; preds = %758
  %870 = getelementptr inbounds i8, ptr %0, i64 108
  store i32 0, ptr %870, align 4, !tbaa !70
  %871 = getelementptr inbounds i8, ptr %0, i64 224
  %872 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %871, ptr noundef null)
  br label %873

873:                                              ; preds = %.thread655, %864, %869
  %874 = getelementptr inbounds i8, ptr %0, i64 120
  %875 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %874)
  %876 = getelementptr inbounds i8, ptr %0, i64 128
  %877 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %876)
  %878 = getelementptr inbounds i8, ptr %0, i64 136
  %879 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %878)
  %880 = getelementptr inbounds i8, ptr %0, i64 144
  %881 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %880)
  %882 = getelementptr inbounds i8, ptr %0, i64 152
  %883 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %882)
  %884 = getelementptr inbounds i8, ptr %0, i64 160
  %885 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %884)
  %886 = getelementptr inbounds i8, ptr %0, i64 168
  %887 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %886)
  %888 = getelementptr inbounds i8, ptr %0, i64 176
  %889 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %888)
  %890 = getelementptr inbounds i8, ptr %0, i64 184
  %891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %890)
  %892 = getelementptr inbounds i8, ptr %0, i64 192
  %893 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %892)
  %894 = getelementptr inbounds i8, ptr %0, i64 200
  %895 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %894)
  %896 = getelementptr inbounds i8, ptr %0, i64 208
  %897 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %896)
  %898 = getelementptr inbounds i8, ptr %0, i64 216
  %899 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %898)
  %900 = getelementptr inbounds i8, ptr %0, i64 224
  %901 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %900)
  %902 = getelementptr inbounds i8, ptr %0, i64 24
  %903 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %902)
  br i1 %903, label %904, label %914

904:                                              ; preds = %873
  %905 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %902)
  %906 = getelementptr inbounds i8, ptr %0, i64 88
  %907 = load i32, ptr %906, align 8, !tbaa !60
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %905, i32 noundef 4, i32 noundef 1, ptr noundef nonnull @.str.53, i32 noundef %907)
  %908 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %902)
  %909 = getelementptr inbounds i8, ptr %0, i64 96
  %910 = load i32, ptr %909, align 8, !tbaa !65
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %908, i32 noundef 4, i32 noundef 1, ptr noundef nonnull @.str.54, i32 noundef %910)
  %911 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %902)
  %912 = getelementptr inbounds i8, ptr %0, i64 108
  %913 = load i32, ptr %912, align 4, !tbaa !70
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %911, i32 noundef 4, i32 noundef 1, ptr noundef nonnull @.str.55, i32 noundef %913)
  br label %914

914:                                              ; preds = %904, %873
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #9
  br label %916

915:                                              ; preds = %269, %321, %323, %325, %327, %375, %377, %703, %867, %797, %796, %789, %543, %541, %539, %537, %535, %533, %531, %465, %443, %406, %177
  %.pn459.pn.pn.pn = phi { ptr, i32 } [ %.pn435.pn.pn.pn, %177 ], [ %.pn459.pn481, %269 ], [ %378, %377 ], [ %376, %375 ], [ %328, %327 ], [ %326, %325 ], [ %324, %323 ], [ %322, %321 ], [ %.pn455.pn486, %406 ], [ %544, %543 ], [ %542, %541 ], [ %540, %539 ], [ %538, %537 ], [ %536, %535 ], [ %534, %533 ], [ %532, %531 ], [ %.pn442, %443 ], [ %.pn440, %465 ], [ %704, %703 ], [ %790, %789 ], [ %868, %867 ], [ %.pn447.pn491, %797 ], [ %.pn447, %796 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #9
  br label %917

916:                                              ; preds = %48, %914
  %.1 = phi i1 [ false, %48 ], [ true, %914 ]
  ret i1 %.1

917:                                              ; preds = %915, %79
  %.pn459.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn459.pn.pn.pn, %915 ], [ %.pn.pn.pn.pn, %79 ]
  resume { ptr, i32 } %.pn459.pn.pn.pn.pn

918:                                              ; preds = %788, %398, %261, %164, %66
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

declare void @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #4

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #5

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #5

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

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

declare void @_ZN10SimTKIpopt20ExpansionMatrixSpaceC1EiiPKii(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZNK10SimTKIpopt15ExpansionMatrix20CompressedPosIndicesEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10SimTKIpopt7IsValidINS_15ExpansionMatrixEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

declare void @_ZN10SimTKIpopt15GenTMatrixSpaceC1EiiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) unnamed_addr #4

declare void @_ZN10SimTKIpopt15SymTMatrixSpaceC1EiiPKiS2_(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef, ptr noundef, ptr noundef) unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

!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, !17, i64 52}
!6 = !{!"_ZTSN10SimTKIpopt11TNLPAdapterE", !7, i64 0, !12, i64 16, !14, i64 24, !15, i64 32, !15, i64 40, !16, i64 48, !17, i64 52, !15, i64 56, !15, i64 64, !18, i64 72, !18, i64 73, !19, i64 76, !9, i64 80, !9, i64 84, !9, i64 88, !9, i64 92, !9, i64 96, !9, i64 100, !9, i64 104, !9, i64 108, !9, i64 112, !20, i64 116, !21, i64 120, !21, i64 128, !21, i64 136, !21, i64 144, !22, i64 152, !21, i64 160, !22, i64 168, !21, i64 176, !22, i64 184, !21, i64 192, !22, i64 200, !22, i64 208, !22, i64 216, !23, i64 224, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !9, i64 272, !9, i64 276, !9, i64 280, !9, i64 284, !9, i64 288, !24, i64 296, !25, i64 304, !24, i64 312, !25, i64 320, !24, i64 328, !25, i64 336, !25, i64 344, !24, i64 352, !25, i64 360, !24, i64 368, !13, i64 376, !13, i64 384, !13, i64 392}
!7 = !{!"_ZTSN10SimTKIpopt3NLPE", !8, i64 0}
!8 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !9, i64 8}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_4TNLPEEE", !13, i64 0}
!13 = !{!"any pointer", !10, i64 0}
!14 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !13, i64 0}
!15 = !{!"double", !10, i64 0}
!16 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter26FixedVariableTreatmentEnumE", !10, i64 0}
!17 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter18DerivativeTestEnumE", !10, i64 0}
!18 = !{!"bool", !10, i64 0}
!19 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !10, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt4TNLP14IndexStyleEnumE", !10, i64 0}
!21 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !13, i64 0}
!22 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !13, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEE", !13, i64 0}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEE", !13, i64 0}
!25 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEE", !13, i64 0}
!26 = !{!6, !18, i64 73}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!6, !13, i64 232}
!30 = !{!6, !13, i64 240}
!31 = !{!6, !13, i64 248}
!32 = !{!6, !13, i64 256}
!33 = !{!6, !13, i64 264}
!34 = !{!6, !13, i64 376}
!35 = !{!6, !13, i64 384}
!36 = !{!6, !13, i64 392}
!37 = !{!38, !38, i64 0}
!38 = !{!"vtable pointer", !11, i64 0}
!39 = !{!9, !9, i64 0}
!40 = !{!6, !9, i64 80}
!41 = !{!6, !9, i64 84}
!42 = !{!6, !9, i64 100}
!43 = !{!6, !9, i64 104}
!44 = !{!6, !9, i64 112}
!45 = !{!15, !15, i64 0}
!46 = !{!6, !15, i64 32}
!47 = !{!6, !15, i64 40}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = !{!6, !20, i64 116}
!52 = distinct !{!52, !49, !53, !54}
!53 = !{!"llvm.loop.isvectorized", i32 1}
!54 = !{!"llvm.loop.unroll.runtime.disable"}
!55 = distinct !{!55, !49, !54, !53}
!56 = !{!6, !16, i64 48}
!57 = distinct !{!57, !49}
!58 = distinct !{!58, !49}
!59 = !{!6, !9, i64 92}
!60 = !{!6, !9, i64 88}
!61 = distinct !{!61, !49, !53, !54}
!62 = distinct !{!62, !49, !53}
!63 = distinct !{!63, !49}
!64 = distinct !{!64, !49}
!65 = !{!6, !9, i64 96}
!66 = !{!6, !19, i64 76}
!67 = distinct !{!67, !49, !53, !54}
!68 = distinct !{!68, !49, !54, !53}
!69 = distinct !{!69, !49}
!70 = !{!6, !9, i64 108}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass