; 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::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
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [111 x i8], align 1
@_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.62 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [44 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 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) #2 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 #2 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 #1 align 2

declare void @__cxa_free_exception(ptr)

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

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

138:                                              ; preds = %2
  store i1 true, ptr %3, align 1
  br label %1542

139:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 0, ptr %6, align 4, !tbaa !11
  %140 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %141 = call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %140)
  br i1 %141, label %179, label %142

142:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.60, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %143 unwind label %152

143:                                              ; preds = %142
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  %144 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.1)
          to label %145 unwind label %156

145:                                              ; preds = %143
  %146 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.61)
          to label %147 unwind label %156

147:                                              ; preds = %145
  store i1 true, ptr %14, align 1
  %148 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %149 unwind label %160

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %150 unwind label %164

150:                                              ; preds = %149
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %148, ptr noundef %11, ptr noundef %12, i32 noundef 1607)
          to label %151 unwind label %168

151:                                              ; preds = %150
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %148, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %168

152:                                              ; preds = %142
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %9, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  br label %178

156:                                              ; preds = %145, %143
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %9, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %10, align 4
  br label %177

160:                                              ; preds = %147
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %9, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %10, align 4
  br label %173

164:                                              ; preds = %149
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %9, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %10, align 4
  br label %172

168:                                              ; preds = %151, %150
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %9, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %172

172:                                              ; preds = %168, %164
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %173

173:                                              ; preds = %172, %160
  %174 = load i1, ptr %14, align 1
  br i1 %174, label %175, label %176

175:                                              ; preds = %173
  call void @__cxa_free_exception(ptr %148) #8
  br label %176

176:                                              ; preds = %175, %173
  br label %177

177:                                              ; preds = %176, %156
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %178

178:                                              ; preds = %177, %152
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  br label %1541

179:                                              ; preds = %139
  %180 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %181 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %180)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %181, i32 noundef 3, i32 noundef 12, ptr noundef @.str.62)
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  store i8 1, ptr %15, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %182 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %183 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %182)
  %184 = load ptr, ptr %183, align 8, !tbaa !15
  %185 = getelementptr inbounds ptr, ptr %184, i64 2
  %186 = load ptr, ptr %185, align 8
  %187 = call noundef zeroext i1 %186(ptr noundef nonnull align 8 dereferenceable(12) %183, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %188 = load i32, ptr %16, align 4, !tbaa !11
  %189 = sext i32 %188 to i64
  %190 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %189, i64 8)
  %191 = extractvalue { i64, i1 } %190, 1
  %192 = extractvalue { i64, i1 } %190, 0
  %193 = select i1 %191, i64 -1, i64 %192
  %194 = call noalias noundef nonnull ptr @_Znam(i64 noundef %193) #10
  store ptr %194, ptr %21, align 8, !tbaa !5
  %195 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %196 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %195)
  %197 = load i32, ptr %16, align 4, !tbaa !11
  %198 = load ptr, ptr %21, align 8, !tbaa !5
  %199 = load i32, ptr %17, align 4, !tbaa !11
  %200 = load ptr, ptr %196, align 8, !tbaa !15
  %201 = getelementptr inbounds ptr, ptr %200, i64 5
  %202 = load ptr, ptr %201, align 8
  %203 = call noundef zeroext i1 %202(ptr noundef nonnull align 8 dereferenceable(12) %196, i32 noundef %197, i1 noundef zeroext true, ptr noundef %198, i1 noundef zeroext false, ptr noundef null, ptr noundef null, i32 noundef %199, i1 noundef zeroext false, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #8
  store i8 1, ptr %22, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  store ptr null, ptr %24, align 8, !tbaa !5
  %204 = load i32, ptr %17, align 4, !tbaa !11
  %205 = icmp sgt i32 %204, 0
  br i1 %205, label %206, label %214

206:                                              ; preds = %179
  %207 = load i32, ptr %17, align 4, !tbaa !11
  %208 = sext i32 %207 to i64
  %209 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %208, i64 8)
  %210 = extractvalue { i64, i1 } %209, 1
  %211 = extractvalue { i64, i1 } %209, 0
  %212 = select i1 %210, i64 -1, i64 %211
  %213 = call noalias noundef nonnull ptr @_Znam(i64 noundef %212) #10
  store ptr %213, ptr %24, align 8, !tbaa !5
  br label %214

214:                                              ; preds = %206, %179
  %215 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %216 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %215)
  %217 = load i32, ptr %16, align 4, !tbaa !11
  %218 = load ptr, ptr %21, align 8, !tbaa !5
  %219 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %220 = trunc i8 %219 to i1
  %221 = load ptr, ptr %216, align 8, !tbaa !15
  %222 = getelementptr inbounds ptr, ptr %221, i64 7
  %223 = load ptr, ptr %222, align 8
  %224 = call noundef zeroext i1 %223(ptr noundef nonnull align 8 dereferenceable(12) %216, i32 noundef %217, ptr noundef %218, i1 noundef zeroext %220, ptr noundef nonnull align 8 dereferenceable(8) %23)
  %225 = zext i1 %224 to i8
  store i8 %225, ptr %15, align 1, !tbaa !13
  %226 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %227 = trunc i8 %226 to i1
  br i1 %227, label %265, label %228

228:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %229 unwind label %238

229:                                              ; preds = %228
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  %230 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.1)
          to label %231 unwind label %242

231:                                              ; preds = %229
  %232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.64)
          to label %233 unwind label %242

233:                                              ; preds = %231
  store i1 true, ptr %30, align 1
  %234 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %235 unwind label %246

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

236:                                              ; preds = %235
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %234, ptr noundef %27, ptr noundef %28, i32 noundef 1639)
          to label %237 unwind label %254

237:                                              ; preds = %236
  store i1 false, ptr %30, align 1
  invoke void @__cxa_throw(ptr %234, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %254

238:                                              ; preds = %228
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %9, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  br label %264

242:                                              ; preds = %231, %229
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %9, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %10, align 4
  br label %263

246:                                              ; preds = %233
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %9, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %10, align 4
  br label %259

250:                                              ; preds = %235
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %9, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %10, align 4
  br label %258

254:                                              ; preds = %237, %236
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %9, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %258

258:                                              ; preds = %254, %250
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %259

259:                                              ; preds = %258, %246
  %260 = load i1, ptr %30, align 1
  br i1 %260, label %261, label %262

261:                                              ; preds = %259
  call void @__cxa_free_exception(ptr %234) #8
  br label %262

262:                                              ; preds = %261, %259
  br label %263

263:                                              ; preds = %262, %242
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %264

264:                                              ; preds = %263, %238
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %1540

265:                                              ; preds = %214
  store i8 0, ptr %22, align 1, !tbaa !13
  %266 = load i32, ptr %17, align 4, !tbaa !11
  %267 = icmp sgt i32 %266, 0
  br i1 %267, label %268, label %322

268:                                              ; preds = %265
  %269 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %270 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %269)
  %271 = load i32, ptr %16, align 4, !tbaa !11
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %274 = trunc i8 %273 to i1
  %275 = load i32, ptr %17, align 4, !tbaa !11
  %276 = load ptr, ptr %24, align 8, !tbaa !5
  %277 = load ptr, ptr %270, align 8, !tbaa !15
  %278 = getelementptr inbounds ptr, ptr %277, i64 9
  %279 = load ptr, ptr %278, align 8
  %280 = call noundef zeroext i1 %279(ptr noundef nonnull align 8 dereferenceable(12) %270, i32 noundef %271, ptr noundef %272, i1 noundef zeroext %274, i32 noundef %275, ptr noundef %276)
  %281 = zext i1 %280 to i8
  store i8 %281, ptr %15, align 1, !tbaa !13
  %282 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %283 = trunc i8 %282 to i1
  br i1 %283, label %321, label %284

284:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %285 unwind label %294

285:                                              ; preds = %284
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  %286 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.1)
          to label %287 unwind label %298

287:                                              ; preds = %285
  %288 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.65)
          to label %289 unwind label %298

289:                                              ; preds = %287
  store i1 true, ptr %36, align 1
  %290 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %291 unwind label %302

291:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %292 unwind label %306

292:                                              ; preds = %291
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %290, ptr noundef %33, ptr noundef %34, i32 noundef 1644)
          to label %293 unwind label %310

293:                                              ; preds = %292
  store i1 false, ptr %36, align 1
  invoke void @__cxa_throw(ptr %290, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %310

294:                                              ; preds = %284
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %9, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  br label %320

298:                                              ; preds = %287, %285
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %9, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %10, align 4
  br label %319

302:                                              ; preds = %289
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %9, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %10, align 4
  br label %315

306:                                              ; preds = %291
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %9, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %10, align 4
  br label %314

310:                                              ; preds = %293, %292
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %9, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %314

314:                                              ; preds = %310, %306
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %315

315:                                              ; preds = %314, %302
  %316 = load i1, ptr %36, align 1
  br i1 %316, label %317, label %318

317:                                              ; preds = %315
  call void @__cxa_free_exception(ptr %290) #8
  br label %318

318:                                              ; preds = %317, %315
  br label %319

319:                                              ; preds = %318, %298
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %320

320:                                              ; preds = %319, %294
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  br label %1540

321:                                              ; preds = %268
  br label %322

322:                                              ; preds = %321, %265
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %323 = load i32, ptr %16, align 4, !tbaa !11
  %324 = sext i32 %323 to i64
  %325 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %324, i64 8)
  %326 = extractvalue { i64, i1 } %325, 1
  %327 = extractvalue { i64, i1 } %325, 0
  %328 = select i1 %326, i64 -1, i64 %327
  %329 = call noalias noundef nonnull ptr @_Znam(i64 noundef %328) #10
  store ptr %329, ptr %37, align 8, !tbaa !5
  %330 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %331 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %330)
  %332 = load i32, ptr %16, align 4, !tbaa !11
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = load ptr, ptr %37, align 8, !tbaa !5
  %335 = load ptr, ptr %331, align 8, !tbaa !15
  %336 = getelementptr inbounds ptr, ptr %335, i64 8
  %337 = load ptr, ptr %336, align 8
  %338 = call noundef zeroext i1 %337(ptr noundef nonnull align 8 dereferenceable(12) %331, i32 noundef %332, ptr noundef %333, i1 noundef zeroext true, ptr noundef %334)
  %339 = zext i1 %338 to i8
  store i8 %339, ptr %15, align 1, !tbaa !13
  %340 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %341 = trunc i8 %340 to i1
  br i1 %341, label %379, label %342

342:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %343 unwind label %352

343:                                              ; preds = %342
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  %344 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.1)
          to label %345 unwind label %356

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.66)
          to label %347 unwind label %356

347:                                              ; preds = %345
  store i1 true, ptr %43, align 1
  %348 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %349 unwind label %360

349:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %350 unwind label %364

350:                                              ; preds = %349
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %348, ptr noundef %40, ptr noundef %41, i32 noundef 1651)
          to label %351 unwind label %368

351:                                              ; preds = %350
  store i1 false, ptr %43, align 1
  invoke void @__cxa_throw(ptr %348, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %368

352:                                              ; preds = %342
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %9, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #8
  br label %378

356:                                              ; preds = %345, %343
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %9, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %10, align 4
  br label %377

360:                                              ; preds = %347
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %9, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %10, align 4
  br label %373

364:                                              ; preds = %349
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %9, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %10, align 4
  br label %372

368:                                              ; preds = %351, %350
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %9, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %372

372:                                              ; preds = %368, %364
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %373

373:                                              ; preds = %372, %360
  %374 = load i1, ptr %43, align 1
  br i1 %374, label %375, label %376

375:                                              ; preds = %373
  call void @__cxa_free_exception(ptr %348) #8
  br label %376

376:                                              ; preds = %375, %373
  br label %377

377:                                              ; preds = %376, %356
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %378

378:                                              ; preds = %377, %352
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %1539

379:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  store ptr null, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  store ptr null, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  store ptr null, ptr %46, align 8, !tbaa !5
  %380 = load i32, ptr %17, align 4, !tbaa !11
  %381 = icmp sgt i32 %380, 0
  br i1 %381, label %382, label %536

382:                                              ; preds = %379
  %383 = load i32, ptr %18, align 4, !tbaa !11
  %384 = sext i32 %383 to i64
  %385 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %384, i64 4)
  %386 = extractvalue { i64, i1 } %385, 1
  %387 = extractvalue { i64, i1 } %385, 0
  %388 = select i1 %386, i64 -1, i64 %387
  %389 = call noalias noundef nonnull ptr @_Znam(i64 noundef %388) #10
  store ptr %389, ptr %44, align 8, !tbaa !5
  %390 = load i32, ptr %18, align 4, !tbaa !11
  %391 = sext i32 %390 to i64
  %392 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %391, i64 4)
  %393 = extractvalue { i64, i1 } %392, 1
  %394 = extractvalue { i64, i1 } %392, 0
  %395 = select i1 %393, i64 -1, i64 %394
  %396 = call noalias noundef nonnull ptr @_Znam(i64 noundef %395) #10
  store ptr %396, ptr %45, align 8, !tbaa !5
  %397 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %398 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %397)
  %399 = load i32, ptr %16, align 4, !tbaa !11
  %400 = load i32, ptr %17, align 4, !tbaa !11
  %401 = load i32, ptr %18, align 4, !tbaa !11
  %402 = load ptr, ptr %44, align 8, !tbaa !5
  %403 = load ptr, ptr %45, align 8, !tbaa !5
  %404 = load ptr, ptr %398, align 8, !tbaa !15
  %405 = getelementptr inbounds ptr, ptr %404, i64 10
  %406 = load ptr, ptr %405, align 8
  %407 = call noundef zeroext i1 %406(ptr noundef nonnull align 8 dereferenceable(12) %398, i32 noundef %399, ptr noundef null, i1 noundef zeroext false, i32 noundef %400, i32 noundef %401, ptr noundef %402, ptr noundef %403, ptr noundef null)
  %408 = zext i1 %407 to i8
  store i8 %408, ptr %15, align 1, !tbaa !13
  %409 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %410 = trunc i8 %409 to i1
  br i1 %410, label %448, label %411

411:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %412 unwind label %421

412:                                              ; preds = %411
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  %413 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.1)
          to label %414 unwind label %425

414:                                              ; preds = %412
  %415 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.67)
          to label %416 unwind label %425

416:                                              ; preds = %414
  store i1 true, ptr %52, align 1
  %417 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %418 unwind label %429

418:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %419 unwind label %433

419:                                              ; preds = %418
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %417, ptr noundef %49, ptr noundef %50, i32 noundef 1663)
          to label %420 unwind label %437

420:                                              ; preds = %419
  store i1 false, ptr %52, align 1
  invoke void @__cxa_throw(ptr %417, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %437

421:                                              ; preds = %411
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %9, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  br label %447

425:                                              ; preds = %414, %412
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %9, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %10, align 4
  br label %446

429:                                              ; preds = %416
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %9, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %10, align 4
  br label %442

433:                                              ; preds = %418
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %9, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %10, align 4
  br label %441

437:                                              ; preds = %420, %419
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %9, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %441

441:                                              ; preds = %437, %433
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %442

442:                                              ; preds = %441, %429
  %443 = load i1, ptr %52, align 1
  br i1 %443, label %444, label %445

444:                                              ; preds = %442
  call void @__cxa_free_exception(ptr %417) #8
  br label %445

445:                                              ; preds = %444, %442
  br label %446

446:                                              ; preds = %445, %425
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %447

447:                                              ; preds = %446, %421
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %1538

448:                                              ; preds = %382
  %449 = load i32, ptr %20, align 4, !tbaa !19
  %450 = icmp eq i32 %449, 1
  br i1 %450, label %451, label %474

451:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  store i32 0, ptr %53, align 4, !tbaa !11
  br label %452

452:                                              ; preds = %470, %451
  %453 = load i32, ptr %53, align 4, !tbaa !11
  %454 = load i32, ptr %18, align 4, !tbaa !11
  %455 = icmp slt i32 %453, %454
  br i1 %455, label %457, label %456

456:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %473

457:                                              ; preds = %452
  %458 = load ptr, ptr %44, align 8, !tbaa !5
  %459 = load i32, ptr %53, align 4, !tbaa !11
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i32, ptr %458, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !11
  %463 = sub nsw i32 %462, 1
  store i32 %463, ptr %461, align 4, !tbaa !11
  %464 = load ptr, ptr %45, align 8, !tbaa !5
  %465 = load i32, ptr %53, align 4, !tbaa !11
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %464, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !11
  %469 = sub nsw i32 %468, 1
  store i32 %469, ptr %467, align 4, !tbaa !11
  br label %470

470:                                              ; preds = %457
  %471 = load i32, ptr %53, align 4, !tbaa !11
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %53, align 4, !tbaa !11
  br label %452, !llvm.loop !21

473:                                              ; preds = %456
  br label %474

474:                                              ; preds = %473, %448
  %475 = load i32, ptr %18, align 4, !tbaa !11
  %476 = sext i32 %475 to i64
  %477 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %476, i64 8)
  %478 = extractvalue { i64, i1 } %477, 1
  %479 = extractvalue { i64, i1 } %477, 0
  %480 = select i1 %478, i64 -1, i64 %479
  %481 = call noalias noundef nonnull ptr @_Znam(i64 noundef %480) #10
  store ptr %481, ptr %46, align 8, !tbaa !5
  %482 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %483 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %482)
  %484 = load i32, ptr %16, align 4, !tbaa !11
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  %486 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %487 = trunc i8 %486 to i1
  %488 = load i32, ptr %17, align 4, !tbaa !11
  %489 = load i32, ptr %18, align 4, !tbaa !11
  %490 = load ptr, ptr %46, align 8, !tbaa !5
  %491 = load ptr, ptr %483, align 8, !tbaa !15
  %492 = getelementptr inbounds ptr, ptr %491, i64 10
  %493 = load ptr, ptr %492, align 8
  %494 = call noundef zeroext i1 %493(ptr noundef nonnull align 8 dereferenceable(12) %483, i32 noundef %484, ptr noundef %485, i1 noundef zeroext %487, i32 noundef %488, i32 noundef %489, ptr noundef null, ptr noundef null, ptr noundef %490)
  %495 = zext i1 %494 to i8
  store i8 %495, ptr %15, align 1, !tbaa !13
  %496 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %497 = trunc i8 %496 to i1
  br i1 %497, label %535, label %498

498:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %499 unwind label %508

499:                                              ; preds = %498
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  %500 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.1)
          to label %501 unwind label %512

501:                                              ; preds = %499
  %502 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.68)
          to label %503 unwind label %512

503:                                              ; preds = %501
  store i1 true, ptr %59, align 1
  %504 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %505 unwind label %516

505:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %506 unwind label %520

506:                                              ; preds = %505
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %504, ptr noundef %56, ptr noundef %57, i32 noundef 1676)
          to label %507 unwind label %524

507:                                              ; preds = %506
  store i1 false, ptr %59, align 1
  invoke void @__cxa_throw(ptr %504, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %524

508:                                              ; preds = %498
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %9, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #8
  br label %534

512:                                              ; preds = %501, %499
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %9, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %10, align 4
  br label %533

516:                                              ; preds = %503
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %9, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %10, align 4
  br label %529

520:                                              ; preds = %505
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %9, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %10, align 4
  br label %528

524:                                              ; preds = %507, %506
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %9, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %528

528:                                              ; preds = %524, %520
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %529

529:                                              ; preds = %528, %516
  %530 = load i1, ptr %59, align 1
  br i1 %530, label %531, label %532

531:                                              ; preds = %529
  call void @__cxa_free_exception(ptr %504) #8
  br label %532

532:                                              ; preds = %531, %529
  br label %533

533:                                              ; preds = %532, %512
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %534

534:                                              ; preds = %533, %508
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  br label %1538

535:                                              ; preds = %474
  br label %536

536:                                              ; preds = %535, %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %537 = load i32, ptr %16, align 4, !tbaa !11
  %538 = sext i32 %537 to i64
  %539 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %538, i64 8)
  %540 = extractvalue { i64, i1 } %539, 1
  %541 = extractvalue { i64, i1 } %539, 0
  %542 = select i1 %540, i64 -1, i64 %541
  %543 = call noalias noundef nonnull ptr @_Znam(i64 noundef %542) #10
  store ptr %543, ptr %60, align 8, !tbaa !5
  %544 = load i32, ptr %16, align 4, !tbaa !11
  %545 = load ptr, ptr %21, align 8, !tbaa !5
  %546 = load ptr, ptr %60, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %544, ptr noundef %545, i32 noundef 1, ptr noundef %546, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  store ptr null, ptr %61, align 8, !tbaa !5
  %547 = load i32, ptr %17, align 4, !tbaa !11
  %548 = icmp sgt i32 %547, 0
  br i1 %548, label %549, label %557

549:                                              ; preds = %536
  %550 = load i32, ptr %17, align 4, !tbaa !11
  %551 = sext i32 %550 to i64
  %552 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %551, i64 8)
  %553 = extractvalue { i64, i1 } %552, 1
  %554 = extractvalue { i64, i1 } %552, 0
  %555 = select i1 %553, i64 -1, i64 %554
  %556 = call noalias noundef nonnull ptr @_Znam(i64 noundef %555) #10
  store ptr %556, ptr %61, align 8, !tbaa !5
  br label %557

557:                                              ; preds = %549, %536
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 0, ptr %62, align 4, !tbaa !11
  %558 = load i32, ptr %20, align 4, !tbaa !19
  %559 = icmp eq i32 %558, 1
  br i1 %559, label %560, label %561

560:                                              ; preds = %557
  store i32 1, ptr %62, align 4, !tbaa !11
  br label %561

561:                                              ; preds = %560, %557
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  store i32 0, ptr %63, align 4, !tbaa !11
  br label %562

562:                                              ; preds = %852, %561
  %563 = load i32, ptr %63, align 4, !tbaa !11
  %564 = load i32, ptr %16, align 4, !tbaa !11
  %565 = icmp slt i32 %563, %564
  br i1 %565, label %567, label %566

566:                                              ; preds = %562
  store i32 5, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  br label %856

567:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %568 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 7
  %569 = load double, ptr %568, align 8, !tbaa !23
  %570 = load ptr, ptr %21, align 8, !tbaa !5
  %571 = load i32, ptr %63, align 4, !tbaa !11
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load double, ptr %573, align 8, !tbaa !37
  %575 = call double @llvm.fabs.f64(double %574)
  %576 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef 1.000000e+00, double noundef %575)
  %577 = fmul double %569, %576
  store double %577, ptr %65, align 8, !tbaa !37
  %578 = load ptr, ptr %21, align 8, !tbaa !5
  %579 = load i32, ptr %63, align 4, !tbaa !11
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !37
  %583 = load double, ptr %65, align 8, !tbaa !37
  %584 = fadd double %582, %583
  %585 = load ptr, ptr %60, align 8, !tbaa !5
  %586 = load i32, ptr %63, align 4, !tbaa !11
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  store double %584, ptr %588, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  store i8 1, ptr %22, align 1, !tbaa !13
  %589 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %590 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %589)
  %591 = load i32, ptr %16, align 4, !tbaa !11
  %592 = load ptr, ptr %60, align 8, !tbaa !5
  %593 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %594 = trunc i8 %593 to i1
  %595 = load ptr, ptr %590, align 8, !tbaa !15
  %596 = getelementptr inbounds ptr, ptr %595, i64 7
  %597 = load ptr, ptr %596, align 8
  %598 = call noundef zeroext i1 %597(ptr noundef nonnull align 8 dereferenceable(12) %590, i32 noundef %591, ptr noundef %592, i1 noundef zeroext %594, ptr noundef nonnull align 8 dereferenceable(8) %66)
  %599 = zext i1 %598 to i8
  store i8 %599, ptr %15, align 1, !tbaa !13
  %600 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %601 = trunc i8 %600 to i1
  br i1 %601, label %639, label %602

602:                                              ; preds = %567
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %603 unwind label %612

603:                                              ; preds = %602
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  %604 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.1)
          to label %605 unwind label %616

605:                                              ; preds = %603
  %606 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.69)
          to label %607 unwind label %616

607:                                              ; preds = %605
  store i1 true, ptr %72, align 1
  %608 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %609 unwind label %620

609:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  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 %610 unwind label %624

610:                                              ; preds = %609
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %608, ptr noundef %69, ptr noundef %70, i32 noundef 1704)
          to label %611 unwind label %628

611:                                              ; preds = %610
  store i1 false, ptr %72, align 1
  invoke void @__cxa_throw(ptr %608, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %628

612:                                              ; preds = %602
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %9, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %638

616:                                              ; preds = %605, %603
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %9, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %10, align 4
  br label %637

620:                                              ; preds = %607
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %9, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %10, align 4
  br label %633

624:                                              ; preds = %609
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %9, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %10, align 4
  br label %632

628:                                              ; preds = %611, %610
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %9, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  br label %632

632:                                              ; preds = %628, %624
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %633

633:                                              ; preds = %632, %620
  %634 = load i1, ptr %72, align 1
  br i1 %634, label %635, label %636

635:                                              ; preds = %633
  call void @__cxa_free_exception(ptr %608) #8
  br label %636

636:                                              ; preds = %635, %633
  br label %637

637:                                              ; preds = %636, %616
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %638

638:                                              ; preds = %637, %612
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  br label %855

639:                                              ; preds = %567
  store i8 0, ptr %22, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %640 = load double, ptr %66, align 8, !tbaa !37
  %641 = load double, ptr %23, align 8, !tbaa !37
  %642 = fsub double %640, %641
  %643 = load double, ptr %65, align 8, !tbaa !37
  %644 = fdiv double %642, %643
  store double %644, ptr %73, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %645 = load ptr, ptr %37, align 8, !tbaa !5
  %646 = load i32, ptr %63, align 4, !tbaa !11
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !37
  store double %649, ptr %74, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %650 = load double, ptr %73, align 8, !tbaa !37
  %651 = load double, ptr %74, align 8, !tbaa !37
  %652 = fsub double %650, %651
  %653 = call double @llvm.fabs.f64(double %652)
  %654 = load double, ptr %73, align 8, !tbaa !37
  %655 = call double @llvm.fabs.f64(double %654)
  %656 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %655, double noundef 1.000000e+00)
  %657 = fdiv double %653, %656
  store double %657, ptr %75, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #8
  store i8 32, ptr %76, align 1, !tbaa !38
  %658 = load double, ptr %75, align 8, !tbaa !37
  %659 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 8
  %660 = load double, ptr %659, align 8, !tbaa !39
  %661 = fcmp oge double %658, %660
  br i1 %661, label %662, label %665

662:                                              ; preds = %639
  store i8 42, ptr %76, align 1, !tbaa !38
  %663 = load i32, ptr %6, align 4, !tbaa !11
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr %6, align 4, !tbaa !11
  br label %665

665:                                              ; preds = %662, %639
  %666 = load i8, ptr %76, align 1, !tbaa !38
  %667 = sext i8 %666 to i32
  %668 = icmp ne i32 %667, 32
  br i1 %668, label %673, label %669

669:                                              ; preds = %665
  %670 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 9
  %671 = load i8, ptr %670, align 8, !tbaa !40, !range !17, !noundef !18
  %672 = trunc i8 %671 to i1
  br i1 %672, label %673, label %684

673:                                              ; preds = %669, %665
  %674 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %675 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %674)
  %676 = load i8, ptr %76, align 1, !tbaa !38
  %677 = sext i8 %676 to i32
  %678 = load i32, ptr %63, align 4, !tbaa !11
  %679 = load i32, ptr %62, align 4, !tbaa !11
  %680 = add nsw i32 %678, %679
  %681 = load double, ptr %74, align 8, !tbaa !37
  %682 = load double, ptr %73, align 8, !tbaa !37
  %683 = load double, ptr %75, align 8, !tbaa !37
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %675, i32 noundef 2, i32 noundef 12, ptr noundef @.str.70, i32 noundef %677, i32 noundef %680, double noundef %681, double noundef %682, double noundef %683)
  br label %684

684:                                              ; preds = %673, %669
  %685 = load i32, ptr %17, align 4, !tbaa !11
  %686 = icmp sgt i32 %685, 0
  br i1 %686, label %687, label %842

687:                                              ; preds = %684
  %688 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %689 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %688)
  %690 = load i32, ptr %16, align 4, !tbaa !11
  %691 = load ptr, ptr %60, align 8, !tbaa !5
  %692 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %693 = trunc i8 %692 to i1
  %694 = load i32, ptr %17, align 4, !tbaa !11
  %695 = load ptr, ptr %61, align 8, !tbaa !5
  %696 = load ptr, ptr %689, align 8, !tbaa !15
  %697 = getelementptr inbounds ptr, ptr %696, i64 9
  %698 = load ptr, ptr %697, align 8
  %699 = call noundef zeroext i1 %698(ptr noundef nonnull align 8 dereferenceable(12) %689, i32 noundef %690, ptr noundef %691, i1 noundef zeroext %693, i32 noundef %694, ptr noundef %695)
  %700 = zext i1 %699 to i8
  store i8 %700, ptr %15, align 1, !tbaa !13
  %701 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %702 = trunc i8 %701 to i1
  br i1 %702, label %740, label %703

703:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %704 unwind label %713

704:                                              ; preds = %703
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  %705 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.1)
          to label %706 unwind label %717

706:                                              ; preds = %704
  %707 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef @.str.65)
          to label %708 unwind label %717

708:                                              ; preds = %706
  store i1 true, ptr %82, align 1
  %709 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %710 unwind label %721

710:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %711 unwind label %725

711:                                              ; preds = %710
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %709, ptr noundef %79, ptr noundef %80, i32 noundef 1726)
          to label %712 unwind label %729

712:                                              ; preds = %711
  store i1 false, ptr %82, align 1
  invoke void @__cxa_throw(ptr %709, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %729

713:                                              ; preds = %703
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %9, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  br label %739

717:                                              ; preds = %706, %704
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %9, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %10, align 4
  br label %738

721:                                              ; preds = %708
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %9, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %10, align 4
  br label %734

725:                                              ; preds = %710
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %9, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %10, align 4
  br label %733

729:                                              ; preds = %712, %711
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %9, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  br label %733

733:                                              ; preds = %729, %725
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  br label %734

734:                                              ; preds = %733, %721
  %735 = load i1, ptr %82, align 1
  br i1 %735, label %736, label %737

736:                                              ; preds = %734
  call void @__cxa_free_exception(ptr %709) #8
  br label %737

737:                                              ; preds = %736, %734
  br label %738

738:                                              ; preds = %737, %717
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  br label %739

739:                                              ; preds = %738, %713
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %855

740:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #8
  store i32 0, ptr %83, align 4, !tbaa !11
  br label %741

741:                                              ; preds = %838, %740
  %742 = load i32, ptr %83, align 4, !tbaa !11
  %743 = load i32, ptr %17, align 4, !tbaa !11
  %744 = icmp slt i32 %742, %743
  br i1 %744, label %746, label %745

745:                                              ; preds = %741
  store i32 8, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #8
  br label %841

746:                                              ; preds = %741
  %747 = load ptr, ptr %61, align 8, !tbaa !5
  %748 = load i32, ptr %83, align 4, !tbaa !11
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %747, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !37
  %752 = load ptr, ptr %24, align 8, !tbaa !5
  %753 = load i32, ptr %83, align 4, !tbaa !11
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %752, i64 %754
  %756 = load double, ptr %755, align 8, !tbaa !37
  %757 = fsub double %751, %756
  %758 = load double, ptr %65, align 8, !tbaa !37
  %759 = fdiv double %757, %758
  store double %759, ptr %73, align 8, !tbaa !37
  store double 0.000000e+00, ptr %74, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #8
  store i8 0, ptr %84, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #8
  store i32 0, ptr %85, align 4, !tbaa !11
  br label %760

760:                                              ; preds = %790, %746
  %761 = load i32, ptr %85, align 4, !tbaa !11
  %762 = load i32, ptr %18, align 4, !tbaa !11
  %763 = icmp slt i32 %761, %762
  br i1 %763, label %765, label %764

764:                                              ; preds = %760
  store i32 11, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  br label %793

765:                                              ; preds = %760
  %766 = load ptr, ptr %44, align 8, !tbaa !5
  %767 = load i32, ptr %85, align 4, !tbaa !11
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds i32, ptr %766, i64 %768
  %770 = load i32, ptr %769, align 4, !tbaa !11
  %771 = load i32, ptr %83, align 4, !tbaa !11
  %772 = icmp eq i32 %770, %771
  br i1 %772, label %773, label %789

773:                                              ; preds = %765
  %774 = load ptr, ptr %45, align 8, !tbaa !5
  %775 = load i32, ptr %85, align 4, !tbaa !11
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %774, i64 %776
  %778 = load i32, ptr %777, align 4, !tbaa !11
  %779 = load i32, ptr %63, align 4, !tbaa !11
  %780 = icmp eq i32 %778, %779
  br i1 %780, label %781, label %789

781:                                              ; preds = %773
  store i8 1, ptr %84, align 1, !tbaa !13
  %782 = load ptr, ptr %46, align 8, !tbaa !5
  %783 = load i32, ptr %85, align 4, !tbaa !11
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load double, ptr %785, align 8, !tbaa !37
  %787 = load double, ptr %74, align 8, !tbaa !37
  %788 = fadd double %787, %786
  store double %788, ptr %74, align 8, !tbaa !37
  br label %789

789:                                              ; preds = %781, %773, %765
  br label %790

790:                                              ; preds = %789
  %791 = load i32, ptr %85, align 4, !tbaa !11
  %792 = add nsw i32 %791, 1
  store i32 %792, ptr %85, align 4, !tbaa !11
  br label %760, !llvm.loop !41

793:                                              ; preds = %764
  %794 = load double, ptr %73, align 8, !tbaa !37
  %795 = load double, ptr %74, align 8, !tbaa !37
  %796 = fsub double %794, %795
  %797 = call double @llvm.fabs.f64(double %796)
  %798 = load double, ptr %73, align 8, !tbaa !37
  %799 = call double @llvm.fabs.f64(double %798)
  %800 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %799, double noundef 1.000000e+00)
  %801 = fdiv double %797, %800
  store double %801, ptr %75, align 8, !tbaa !37
  store i8 32, ptr %76, align 1, !tbaa !38
  %802 = load double, ptr %75, align 8, !tbaa !37
  %803 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 8
  %804 = load double, ptr %803, align 8, !tbaa !39
  %805 = fcmp oge double %802, %804
  br i1 %805, label %806, label %809

806:                                              ; preds = %793
  store i8 42, ptr %76, align 1, !tbaa !38
  %807 = load i32, ptr %6, align 4, !tbaa !11
  %808 = add nsw i32 %807, 1
  store i32 %808, ptr %6, align 4, !tbaa !11
  br label %809

809:                                              ; preds = %806, %793
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #8
  store i8 32, ptr %86, align 1, !tbaa !38
  %810 = load i8, ptr %84, align 1, !tbaa !13, !range !17, !noundef !18
  %811 = trunc i8 %810 to i1
  br i1 %811, label %812, label %813

812:                                              ; preds = %809
  store i8 118, ptr %86, align 1, !tbaa !38
  br label %813

813:                                              ; preds = %812, %809
  %814 = load i8, ptr %76, align 1, !tbaa !38
  %815 = sext i8 %814 to i32
  %816 = icmp ne i32 %815, 32
  br i1 %816, label %821, label %817

817:                                              ; preds = %813
  %818 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 9
  %819 = load i8, ptr %818, align 8, !tbaa !40, !range !17, !noundef !18
  %820 = trunc i8 %819 to i1
  br i1 %820, label %821, label %837

821:                                              ; preds = %817, %813
  %822 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %823 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %822)
  %824 = load i8, ptr %76, align 1, !tbaa !38
  %825 = sext i8 %824 to i32
  %826 = load i32, ptr %83, align 4, !tbaa !11
  %827 = load i32, ptr %62, align 4, !tbaa !11
  %828 = add nsw i32 %826, %827
  %829 = load i32, ptr %63, align 4, !tbaa !11
  %830 = load i32, ptr %62, align 4, !tbaa !11
  %831 = add nsw i32 %829, %830
  %832 = load double, ptr %74, align 8, !tbaa !37
  %833 = load i8, ptr %86, align 1, !tbaa !38
  %834 = sext i8 %833 to i32
  %835 = load double, ptr %73, align 8, !tbaa !37
  %836 = load double, ptr %75, align 8, !tbaa !37
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %823, i32 noundef 2, i32 noundef 12, ptr noundef @.str.71, i32 noundef %825, i32 noundef %828, i32 noundef %831, double noundef %832, i32 noundef %834, double noundef %835, double noundef %836)
  br label %837

837:                                              ; preds = %821, %817
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #8
  br label %838

838:                                              ; preds = %837
  %839 = load i32, ptr %83, align 4, !tbaa !11
  %840 = add nsw i32 %839, 1
  store i32 %840, ptr %83, align 4, !tbaa !11
  br label %741, !llvm.loop !42

841:                                              ; preds = %745
  br label %842

842:                                              ; preds = %841, %684
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = load i32, ptr %63, align 4, !tbaa !11
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds double, ptr %843, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !37
  %848 = load ptr, ptr %60, align 8, !tbaa !5
  %849 = load i32, ptr %63, align 4, !tbaa !11
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  store double %847, ptr %851, align 8, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  br label %852

852:                                              ; preds = %842
  %853 = load i32, ptr %63, align 4, !tbaa !11
  %854 = add nsw i32 %853, 1
  store i32 %854, ptr %63, align 4, !tbaa !11
  br label %562, !llvm.loop !43

855:                                              ; preds = %739, %638
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  br label %1537

856:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  store double 0.000000e+00, ptr %87, align 8, !tbaa !37
  %857 = load i32, ptr %5, align 4, !tbaa !9
  %858 = icmp eq i32 %857, 2
  br i1 %858, label %859, label %1492

859:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %860 = load i32, ptr %19, align 4, !tbaa !11
  %861 = sext i32 %860 to i64
  %862 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %861, i64 4)
  %863 = extractvalue { i64, i1 } %862, 1
  %864 = extractvalue { i64, i1 } %862, 0
  %865 = select i1 %863, i64 -1, i64 %864
  %866 = call noalias noundef nonnull ptr @_Znam(i64 noundef %865) #10
  store ptr %866, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %867 = load i32, ptr %19, align 4, !tbaa !11
  %868 = sext i32 %867 to i64
  %869 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %868, i64 4)
  %870 = extractvalue { i64, i1 } %869, 1
  %871 = extractvalue { i64, i1 } %869, 0
  %872 = select i1 %870, i64 -1, i64 %871
  %873 = call noalias noundef nonnull ptr @_Znam(i64 noundef %872) #10
  store ptr %873, ptr %89, align 8, !tbaa !5
  %874 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %875 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %874)
  %876 = load i32, ptr %16, align 4, !tbaa !11
  %877 = load i32, ptr %17, align 4, !tbaa !11
  %878 = load i32, ptr %19, align 4, !tbaa !11
  %879 = load ptr, ptr %88, align 8, !tbaa !5
  %880 = load ptr, ptr %89, align 8, !tbaa !5
  %881 = load ptr, ptr %875, align 8, !tbaa !15
  %882 = getelementptr inbounds ptr, ptr %881, i64 11
  %883 = load ptr, ptr %882, align 8
  %884 = call noundef zeroext i1 %883(ptr noundef nonnull align 8 dereferenceable(12) %875, i32 noundef %876, ptr noundef null, i1 noundef zeroext false, double noundef 0.000000e+00, i32 noundef %877, ptr noundef null, i1 noundef zeroext false, i32 noundef %878, ptr noundef %879, ptr noundef %880, ptr noundef null)
  %885 = zext i1 %884 to i8
  store i8 %885, ptr %15, align 1, !tbaa !13
  %886 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %887 = trunc i8 %886 to i1
  br i1 %887, label %925, label %888

888:                                              ; preds = %859
  call void @llvm.lifetime.start.p0(i64 32, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %91)
          to label %889 unwind label %898

889:                                              ; preds = %888
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #8
  %890 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.1)
          to label %891 unwind label %902

891:                                              ; preds = %889
  %892 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef @.str.72)
          to label %893 unwind label %902

893:                                              ; preds = %891
  store i1 true, ptr %95, align 1
  %894 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %895 unwind label %906

895:                                              ; preds = %893
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %896 unwind label %910

896:                                              ; preds = %895
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %894, ptr noundef %92, ptr noundef %93, i32 noundef 1768)
          to label %897 unwind label %914

897:                                              ; preds = %896
  store i1 false, ptr %95, align 1
  invoke void @__cxa_throw(ptr %894, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %914

898:                                              ; preds = %888
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %9, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %91) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #8
  br label %924

902:                                              ; preds = %891, %889
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %9, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %10, align 4
  br label %923

906:                                              ; preds = %893
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %9, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %10, align 4
  br label %919

910:                                              ; preds = %895
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %9, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %10, align 4
  br label %918

914:                                              ; preds = %897, %896
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %9, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  br label %918

918:                                              ; preds = %914, %910
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %94) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  br label %919

919:                                              ; preds = %918, %906
  %920 = load i1, ptr %95, align 1
  br i1 %920, label %921, label %922

921:                                              ; preds = %919
  call void @__cxa_free_exception(ptr %894) #8
  br label %922

922:                                              ; preds = %921, %919
  br label %923

923:                                              ; preds = %922, %902
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %924

924:                                              ; preds = %923, %898
  call void @llvm.lifetime.end.p0(i64 32, ptr %90) #8
  br label %1491

925:                                              ; preds = %859
  %926 = load i32, ptr %20, align 4, !tbaa !19
  %927 = icmp eq i32 %926, 1
  br i1 %927, label %928, label %951

928:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #8
  store i32 0, ptr %96, align 4, !tbaa !11
  br label %929

929:                                              ; preds = %947, %928
  %930 = load i32, ptr %96, align 4, !tbaa !11
  %931 = load i32, ptr %19, align 4, !tbaa !11
  %932 = icmp slt i32 %930, %931
  br i1 %932, label %934, label %933

933:                                              ; preds = %929
  store i32 14, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  br label %950

934:                                              ; preds = %929
  %935 = load ptr, ptr %88, align 8, !tbaa !5
  %936 = load i32, ptr %96, align 4, !tbaa !11
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds i32, ptr %935, i64 %937
  %939 = load i32, ptr %938, align 4, !tbaa !11
  %940 = sub nsw i32 %939, 1
  store i32 %940, ptr %938, align 4, !tbaa !11
  %941 = load ptr, ptr %89, align 8, !tbaa !5
  %942 = load i32, ptr %96, align 4, !tbaa !11
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i32, ptr %941, i64 %943
  %945 = load i32, ptr %944, align 4, !tbaa !11
  %946 = sub nsw i32 %945, 1
  store i32 %946, ptr %944, align 4, !tbaa !11
  br label %947

947:                                              ; preds = %934
  %948 = load i32, ptr %96, align 4, !tbaa !11
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr %96, align 4, !tbaa !11
  br label %929, !llvm.loop !44

950:                                              ; preds = %933
  br label %951

951:                                              ; preds = %950, %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %952 = load i32, ptr %19, align 4, !tbaa !11
  %953 = sext i32 %952 to i64
  %954 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %953, i64 8)
  %955 = extractvalue { i64, i1 } %954, 1
  %956 = extractvalue { i64, i1 } %954, 0
  %957 = select i1 %955, i64 -1, i64 %956
  %958 = call noalias noundef nonnull ptr @_Znam(i64 noundef %957) #10
  store ptr %958, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  store ptr null, ptr %98, align 8, !tbaa !5
  %959 = load i32, ptr %17, align 4, !tbaa !11
  %960 = icmp sgt i32 %959, 0
  br i1 %960, label %961, label %971

961:                                              ; preds = %951
  %962 = load i32, ptr %17, align 4, !tbaa !11
  %963 = sext i32 %962 to i64
  %964 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %963, i64 8)
  %965 = extractvalue { i64, i1 } %964, 1
  %966 = extractvalue { i64, i1 } %964, 0
  %967 = select i1 %965, i64 -1, i64 %966
  %968 = call noalias noundef nonnull ptr @_Znam(i64 noundef %967) #10
  store ptr %968, ptr %98, align 8, !tbaa !5
  %969 = load i32, ptr %17, align 4, !tbaa !11
  %970 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %969, ptr noundef %87, i32 noundef 0, ptr noundef %970, i32 noundef 1)
  br label %971

971:                                              ; preds = %961, %951
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %972 = load i32, ptr %16, align 4, !tbaa !11
  %973 = sext i32 %972 to i64
  %974 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %973, i64 8)
  %975 = extractvalue { i64, i1 } %974, 1
  %976 = extractvalue { i64, i1 } %974, 0
  %977 = select i1 %975, i64 -1, i64 %976
  %978 = call noalias noundef nonnull ptr @_Znam(i64 noundef %977) #10
  store ptr %978, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %979 = load i32, ptr %16, align 4, !tbaa !11
  %980 = sext i32 %979 to i64
  %981 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %980, i64 8)
  %982 = extractvalue { i64, i1 } %981, 1
  %983 = extractvalue { i64, i1 } %981, 0
  %984 = select i1 %982, i64 -1, i64 %983
  %985 = call noalias noundef nonnull ptr @_Znam(i64 noundef %984) #10
  store ptr %985, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %986 = load i32, ptr %18, align 4, !tbaa !11
  %987 = sext i32 %986 to i64
  %988 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %987, i64 8)
  %989 = extractvalue { i64, i1 } %988, 1
  %990 = extractvalue { i64, i1 } %988, 0
  %991 = select i1 %989, i64 -1, i64 %990
  %992 = call noalias noundef nonnull ptr @_Znam(i64 noundef %991) #10
  store ptr %992, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #8
  store i32 -1, ptr %102, align 4, !tbaa !11
  br label %993

993:                                              ; preds = %1458, %971
  %994 = load i32, ptr %102, align 4, !tbaa !11
  %995 = load i32, ptr %17, align 4, !tbaa !11
  %996 = icmp slt i32 %994, %995
  br i1 %996, label %998, label %997

997:                                              ; preds = %993
  store i32 17, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  br label %1462

998:                                              ; preds = %993
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  store double 0.000000e+00, ptr %103, align 8, !tbaa !37
  %999 = load i32, ptr %102, align 4, !tbaa !11
  %1000 = icmp eq i32 %999, -1
  br i1 %1000, label %1001, label %1005

1001:                                             ; preds = %998
  store double 1.000000e+00, ptr %103, align 8, !tbaa !37
  %1002 = load i32, ptr %16, align 4, !tbaa !11
  %1003 = load ptr, ptr %37, align 8, !tbaa !5
  %1004 = load ptr, ptr %99, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %1002, ptr noundef %1003, i32 noundef 1, ptr noundef %1004, i32 noundef 1)
  br label %1046

1005:                                             ; preds = %998
  %1006 = load ptr, ptr %98, align 8, !tbaa !5
  %1007 = load i32, ptr %102, align 4, !tbaa !11
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds double, ptr %1006, i64 %1008
  store double 1.000000e+00, ptr %1009, align 8, !tbaa !37
  %1010 = load i32, ptr %16, align 4, !tbaa !11
  %1011 = load ptr, ptr %99, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %1010, ptr noundef %87, i32 noundef 0, ptr noundef %1011, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #8
  store i32 0, ptr %104, align 4, !tbaa !11
  br label %1012

1012:                                             ; preds = %1042, %1005
  %1013 = load i32, ptr %104, align 4, !tbaa !11
  %1014 = load i32, ptr %18, align 4, !tbaa !11
  %1015 = icmp slt i32 %1013, %1014
  br i1 %1015, label %1017, label %1016

1016:                                             ; preds = %1012
  store i32 20, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #8
  br label %1045

1017:                                             ; preds = %1012
  %1018 = load ptr, ptr %44, align 8, !tbaa !5
  %1019 = load i32, ptr %104, align 4, !tbaa !11
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds i32, ptr %1018, i64 %1020
  %1022 = load i32, ptr %1021, align 4, !tbaa !11
  %1023 = load i32, ptr %102, align 4, !tbaa !11
  %1024 = icmp eq i32 %1022, %1023
  br i1 %1024, label %1025, label %1041

1025:                                             ; preds = %1017
  %1026 = load ptr, ptr %46, align 8, !tbaa !5
  %1027 = load i32, ptr %104, align 4, !tbaa !11
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1026, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !37
  %1031 = load ptr, ptr %99, align 8, !tbaa !5
  %1032 = load ptr, ptr %45, align 8, !tbaa !5
  %1033 = load i32, ptr %104, align 4, !tbaa !11
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i32, ptr %1032, i64 %1034
  %1036 = load i32, ptr %1035, align 4, !tbaa !11
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1031, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !37
  %1040 = fadd double %1039, %1030
  store double %1040, ptr %1038, align 8, !tbaa !37
  br label %1041

1041:                                             ; preds = %1025, %1017
  br label %1042

1042:                                             ; preds = %1041
  %1043 = load i32, ptr %104, align 4, !tbaa !11
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr %104, align 4, !tbaa !11
  br label %1012, !llvm.loop !45

1045:                                             ; preds = %1016
  br label %1046

1046:                                             ; preds = %1045, %1001
  store i8 1, ptr %22, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #8
  store i8 1, ptr %105, align 1, !tbaa !13
  %1047 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %1048 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1047)
  %1049 = load i32, ptr %16, align 4, !tbaa !11
  %1050 = load ptr, ptr %21, align 8, !tbaa !5
  %1051 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %1052 = trunc i8 %1051 to i1
  %1053 = load double, ptr %103, align 8, !tbaa !37
  %1054 = load i32, ptr %17, align 4, !tbaa !11
  %1055 = load ptr, ptr %98, align 8, !tbaa !5
  %1056 = load i8, ptr %105, align 1, !tbaa !13, !range !17, !noundef !18
  %1057 = trunc i8 %1056 to i1
  %1058 = load i32, ptr %19, align 4, !tbaa !11
  %1059 = load ptr, ptr %97, align 8, !tbaa !5
  %1060 = load ptr, ptr %1048, align 8, !tbaa !15
  %1061 = getelementptr inbounds ptr, ptr %1060, i64 11
  %1062 = load ptr, ptr %1061, align 8
  %1063 = call noundef zeroext i1 %1062(ptr noundef nonnull align 8 dereferenceable(12) %1048, i32 noundef %1049, ptr noundef %1050, i1 noundef zeroext %1052, double noundef %1053, i32 noundef %1054, ptr noundef %1055, i1 noundef zeroext %1057, i32 noundef %1058, ptr noundef null, ptr noundef null, ptr noundef %1059)
  %1064 = zext i1 %1063 to i8
  store i8 %1064, ptr %15, align 1, !tbaa !13
  store i8 0, ptr %22, align 1, !tbaa !13
  store i8 0, ptr %105, align 1, !tbaa !13
  %1065 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %1066 = trunc i8 %1065 to i1
  br i1 %1066, label %1104, label %1067

1067:                                             ; preds = %1046
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %1068 unwind label %1077

1068:                                             ; preds = %1067
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  %1069 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.1)
          to label %1070 unwind label %1081

1070:                                             ; preds = %1068
  %1071 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef @.str.73)
          to label %1072 unwind label %1081

1072:                                             ; preds = %1070
  store i1 true, ptr %111, align 1
  %1073 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %1074 unwind label %1085

1074:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %1075 unwind label %1089

1075:                                             ; preds = %1074
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %1073, ptr noundef %108, ptr noundef %109, i32 noundef 1811)
          to label %1076 unwind label %1093

1076:                                             ; preds = %1075
  store i1 false, ptr %111, align 1
  invoke void @__cxa_throw(ptr %1073, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %1093

1077:                                             ; preds = %1067
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %9, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  br label %1103

1081:                                             ; preds = %1070, %1068
  %1082 = landingpad { ptr, i32 }
          cleanup
  %1083 = extractvalue { ptr, i32 } %1082, 0
  store ptr %1083, ptr %9, align 8
  %1084 = extractvalue { ptr, i32 } %1082, 1
  store i32 %1084, ptr %10, align 4
  br label %1102

1085:                                             ; preds = %1072
  %1086 = landingpad { ptr, i32 }
          cleanup
  %1087 = extractvalue { ptr, i32 } %1086, 0
  store ptr %1087, ptr %9, align 8
  %1088 = extractvalue { ptr, i32 } %1086, 1
  store i32 %1088, ptr %10, align 4
  br label %1098

1089:                                             ; preds = %1074
  %1090 = landingpad { ptr, i32 }
          cleanup
  %1091 = extractvalue { ptr, i32 } %1090, 0
  store ptr %1091, ptr %9, align 8
  %1092 = extractvalue { ptr, i32 } %1090, 1
  store i32 %1092, ptr %10, align 4
  br label %1097

1093:                                             ; preds = %1076, %1075
  %1094 = landingpad { ptr, i32 }
          cleanup
  %1095 = extractvalue { ptr, i32 } %1094, 0
  store ptr %1095, ptr %9, align 8
  %1096 = extractvalue { ptr, i32 } %1094, 1
  store i32 %1096, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  br label %1097

1097:                                             ; preds = %1093, %1089
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #8
  br label %1098

1098:                                             ; preds = %1097, %1085
  %1099 = load i1, ptr %111, align 1
  br i1 %1099, label %1100, label %1101

1100:                                             ; preds = %1098
  call void @__cxa_free_exception(ptr %1073) #8
  br label %1101

1101:                                             ; preds = %1100, %1098
  br label %1102

1102:                                             ; preds = %1101, %1081
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #8
  br label %1103

1103:                                             ; preds = %1102, %1077
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #8
  br label %1461

1104:                                             ; preds = %1046
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #8
  store i32 0, ptr %112, align 4, !tbaa !11
  br label %1105

1105:                                             ; preds = %1445, %1104
  %1106 = load i32, ptr %112, align 4, !tbaa !11
  %1107 = load i32, ptr %16, align 4, !tbaa !11
  %1108 = icmp slt i32 %1106, %1107
  br i1 %1108, label %1110, label %1109

1109:                                             ; preds = %1105
  store i32 23, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  br label %1449

1110:                                             ; preds = %1105
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  %1111 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 7
  %1112 = load double, ptr %1111, align 8, !tbaa !23
  %1113 = load ptr, ptr %21, align 8, !tbaa !5
  %1114 = load i32, ptr %112, align 4, !tbaa !11
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1113, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !37
  %1118 = call double @llvm.fabs.f64(double %1117)
  %1119 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef 1.000000e+00, double noundef %1118)
  %1120 = fmul double %1112, %1119
  store double %1120, ptr %113, align 8, !tbaa !37
  %1121 = load ptr, ptr %21, align 8, !tbaa !5
  %1122 = load i32, ptr %112, align 4, !tbaa !11
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds double, ptr %1121, i64 %1123
  %1125 = load double, ptr %1124, align 8, !tbaa !37
  %1126 = load double, ptr %113, align 8, !tbaa !37
  %1127 = fadd double %1125, %1126
  %1128 = load ptr, ptr %60, align 8, !tbaa !5
  %1129 = load i32, ptr %112, align 4, !tbaa !11
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1128, i64 %1130
  store double %1127, ptr %1131, align 8, !tbaa !37
  store i8 1, ptr %22, align 1, !tbaa !13
  %1132 = load i32, ptr %102, align 4, !tbaa !11
  %1133 = icmp eq i32 %1132, -1
  br i1 %1133, label %1134, label %1187

1134:                                             ; preds = %1110
  %1135 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %1136 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1135)
  %1137 = load i32, ptr %16, align 4, !tbaa !11
  %1138 = load ptr, ptr %60, align 8, !tbaa !5
  %1139 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %1140 = trunc i8 %1139 to i1
  %1141 = load ptr, ptr %100, align 8, !tbaa !5
  %1142 = load ptr, ptr %1136, align 8, !tbaa !15
  %1143 = getelementptr inbounds ptr, ptr %1142, i64 8
  %1144 = load ptr, ptr %1143, align 8
  %1145 = call noundef zeroext i1 %1144(ptr noundef nonnull align 8 dereferenceable(12) %1136, i32 noundef %1137, ptr noundef %1138, i1 noundef zeroext %1140, ptr noundef %1141)
  %1146 = zext i1 %1145 to i8
  store i8 %1146, ptr %15, align 1, !tbaa !13
  %1147 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %1148 = trunc i8 %1147 to i1
  br i1 %1148, label %1186, label %1149

1149:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %1150 unwind label %1159

1150:                                             ; preds = %1149
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #8
  %1151 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.1)
          to label %1152 unwind label %1163

1152:                                             ; preds = %1150
  %1153 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef @.str.74)
          to label %1154 unwind label %1163

1154:                                             ; preds = %1152
  store i1 true, ptr %119, align 1
  %1155 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %1156 unwind label %1167

1156:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %1157 unwind label %1171

1157:                                             ; preds = %1156
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %1155, ptr noundef %116, ptr noundef %117, i32 noundef 1823)
          to label %1158 unwind label %1175

1158:                                             ; preds = %1157
  store i1 false, ptr %119, align 1
  invoke void @__cxa_throw(ptr %1155, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %1175

1159:                                             ; preds = %1149
  %1160 = landingpad { ptr, i32 }
          cleanup
  %1161 = extractvalue { ptr, i32 } %1160, 0
  store ptr %1161, ptr %9, align 8
  %1162 = extractvalue { ptr, i32 } %1160, 1
  store i32 %1162, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %115) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #8
  br label %1185

1163:                                             ; preds = %1152, %1150
  %1164 = landingpad { ptr, i32 }
          cleanup
  %1165 = extractvalue { ptr, i32 } %1164, 0
  store ptr %1165, ptr %9, align 8
  %1166 = extractvalue { ptr, i32 } %1164, 1
  store i32 %1166, ptr %10, align 4
  br label %1184

1167:                                             ; preds = %1154
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %9, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %10, align 4
  br label %1180

1171:                                             ; preds = %1156
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %9, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %10, align 4
  br label %1179

1175:                                             ; preds = %1158, %1157
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %9, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #8
  br label %1179

1179:                                             ; preds = %1175, %1171
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  br label %1180

1180:                                             ; preds = %1179, %1167
  %1181 = load i1, ptr %119, align 1
  br i1 %1181, label %1182, label %1183

1182:                                             ; preds = %1180
  call void @__cxa_free_exception(ptr %1155) #8
  br label %1183

1183:                                             ; preds = %1182, %1180
  br label %1184

1184:                                             ; preds = %1183, %1163
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #8
  br label %1185

1185:                                             ; preds = %1184, %1159
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #8
  br label %1448

1186:                                             ; preds = %1134
  br label %1295

1187:                                             ; preds = %1110
  %1188 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 1
  %1189 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1188)
  %1190 = load i32, ptr %16, align 4, !tbaa !11
  %1191 = load ptr, ptr %60, align 8, !tbaa !5
  %1192 = load i8, ptr %22, align 1, !tbaa !13, !range !17, !noundef !18
  %1193 = trunc i8 %1192 to i1
  %1194 = load i32, ptr %17, align 4, !tbaa !11
  %1195 = load i32, ptr %18, align 4, !tbaa !11
  %1196 = load ptr, ptr %101, align 8, !tbaa !5
  %1197 = load ptr, ptr %1189, align 8, !tbaa !15
  %1198 = getelementptr inbounds ptr, ptr %1197, i64 10
  %1199 = load ptr, ptr %1198, align 8
  %1200 = call noundef zeroext i1 %1199(ptr noundef nonnull align 8 dereferenceable(12) %1189, i32 noundef %1190, ptr noundef %1191, i1 noundef zeroext %1193, i32 noundef %1194, i32 noundef %1195, ptr noundef null, ptr noundef null, ptr noundef %1196)
  %1201 = zext i1 %1200 to i8
  store i8 %1201, ptr %15, align 1, !tbaa !13
  %1202 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %1203 = trunc i8 %1202 to i1
  br i1 %1203, label %1241, label %1204

1204:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 32, ptr %120) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %1205 unwind label %1214

1205:                                             ; preds = %1204
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #8
  %1206 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.1)
          to label %1207 unwind label %1218

1207:                                             ; preds = %1205
  %1208 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef @.str.68)
          to label %1209 unwind label %1218

1209:                                             ; preds = %1207
  store i1 true, ptr %125, align 1
  %1210 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull align 8 dereferenceable(32) %120)
          to label %1211 unwind label %1222

1211:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %124)
          to label %1212 unwind label %1226

1212:                                             ; preds = %1211
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %1210, ptr noundef %122, ptr noundef %123, i32 noundef 1830)
          to label %1213 unwind label %1230

1213:                                             ; preds = %1212
  store i1 false, ptr %125, align 1
  invoke void @__cxa_throw(ptr %1210, ptr @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %1549 unwind label %1230

1214:                                             ; preds = %1204
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %9, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #8
  br label %1240

1218:                                             ; preds = %1207, %1205
  %1219 = landingpad { ptr, i32 }
          cleanup
  %1220 = extractvalue { ptr, i32 } %1219, 0
  store ptr %1220, ptr %9, align 8
  %1221 = extractvalue { ptr, i32 } %1219, 1
  store i32 %1221, ptr %10, align 4
  br label %1239

1222:                                             ; preds = %1209
  %1223 = landingpad { ptr, i32 }
          cleanup
  %1224 = extractvalue { ptr, i32 } %1223, 0
  store ptr %1224, ptr %9, align 8
  %1225 = extractvalue { ptr, i32 } %1223, 1
  store i32 %1225, ptr %10, align 4
  br label %1235

1226:                                             ; preds = %1211
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %9, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %10, align 4
  br label %1234

1230:                                             ; preds = %1213, %1212
  %1231 = landingpad { ptr, i32 }
          cleanup
  %1232 = extractvalue { ptr, i32 } %1231, 0
  store ptr %1232, ptr %9, align 8
  %1233 = extractvalue { ptr, i32 } %1231, 1
  store i32 %1233, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  br label %1234

1234:                                             ; preds = %1230, %1226
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  br label %1235

1235:                                             ; preds = %1234, %1222
  %1236 = load i1, ptr %125, align 1
  br i1 %1236, label %1237, label %1238

1237:                                             ; preds = %1235
  call void @__cxa_free_exception(ptr %1210) #8
  br label %1238

1238:                                             ; preds = %1237, %1235
  br label %1239

1239:                                             ; preds = %1238, %1218
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  br label %1240

1240:                                             ; preds = %1239, %1214
  call void @llvm.lifetime.end.p0(i64 32, ptr %120) #8
  br label %1448

1241:                                             ; preds = %1187
  %1242 = load i32, ptr %16, align 4, !tbaa !11
  %1243 = load ptr, ptr %100, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %1242, ptr noundef %87, i32 noundef 0, ptr noundef %1243, i32 noundef 1)
  %1244 = load i32, ptr %16, align 4, !tbaa !11
  %1245 = load ptr, ptr %99, align 8, !tbaa !5
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %1244, ptr noundef %87, i32 noundef 0, ptr noundef %1245, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #8
  store i32 0, ptr %126, align 4, !tbaa !11
  br label %1246

1246:                                             ; preds = %1291, %1241
  %1247 = load i32, ptr %126, align 4, !tbaa !11
  %1248 = load i32, ptr %18, align 4, !tbaa !11
  %1249 = icmp slt i32 %1247, %1248
  br i1 %1249, label %1251, label %1250

1250:                                             ; preds = %1246
  store i32 26, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #8
  br label %1294

1251:                                             ; preds = %1246
  %1252 = load ptr, ptr %44, align 8, !tbaa !5
  %1253 = load i32, ptr %126, align 4, !tbaa !11
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds i32, ptr %1252, i64 %1254
  %1256 = load i32, ptr %1255, align 4, !tbaa !11
  %1257 = load i32, ptr %102, align 4, !tbaa !11
  %1258 = icmp eq i32 %1256, %1257
  br i1 %1258, label %1259, label %1290

1259:                                             ; preds = %1251
  %1260 = load ptr, ptr %101, align 8, !tbaa !5
  %1261 = load i32, ptr %126, align 4, !tbaa !11
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds double, ptr %1260, i64 %1262
  %1264 = load double, ptr %1263, align 8, !tbaa !37
  %1265 = load ptr, ptr %100, align 8, !tbaa !5
  %1266 = load ptr, ptr %45, align 8, !tbaa !5
  %1267 = load i32, ptr %126, align 4, !tbaa !11
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds i32, ptr %1266, i64 %1268
  %1270 = load i32, ptr %1269, align 4, !tbaa !11
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1265, i64 %1271
  %1273 = load double, ptr %1272, align 8, !tbaa !37
  %1274 = fadd double %1273, %1264
  store double %1274, ptr %1272, align 8, !tbaa !37
  %1275 = load ptr, ptr %46, align 8, !tbaa !5
  %1276 = load i32, ptr %126, align 4, !tbaa !11
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1275, i64 %1277
  %1279 = load double, ptr %1278, align 8, !tbaa !37
  %1280 = load ptr, ptr %99, align 8, !tbaa !5
  %1281 = load ptr, ptr %45, align 8, !tbaa !5
  %1282 = load i32, ptr %126, align 4, !tbaa !11
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds i32, ptr %1281, i64 %1283
  %1285 = load i32, ptr %1284, align 4, !tbaa !11
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds double, ptr %1280, i64 %1286
  %1288 = load double, ptr %1287, align 8, !tbaa !37
  %1289 = fadd double %1288, %1279
  store double %1289, ptr %1287, align 8, !tbaa !37
  br label %1290

1290:                                             ; preds = %1259, %1251
  br label %1291

1291:                                             ; preds = %1290
  %1292 = load i32, ptr %126, align 4, !tbaa !11
  %1293 = add nsw i32 %1292, 1
  store i32 %1293, ptr %126, align 4, !tbaa !11
  br label %1246, !llvm.loop !46

1294:                                             ; preds = %1250
  br label %1295

1295:                                             ; preds = %1294, %1186
  store i8 0, ptr %22, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #8
  store i32 0, ptr %127, align 4, !tbaa !11
  br label %1296

1296:                                             ; preds = %1432, %1295
  %1297 = load i32, ptr %127, align 4, !tbaa !11
  %1298 = load i32, ptr %16, align 4, !tbaa !11
  %1299 = icmp slt i32 %1297, %1298
  br i1 %1299, label %1301, label %1300

1300:                                             ; preds = %1296
  store i32 29, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #8
  br label %1435

1301:                                             ; preds = %1296
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  %1302 = load ptr, ptr %100, align 8, !tbaa !5
  %1303 = load i32, ptr %127, align 4, !tbaa !11
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds double, ptr %1302, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !37
  %1307 = load ptr, ptr %99, align 8, !tbaa !5
  %1308 = load i32, ptr %127, align 4, !tbaa !11
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds double, ptr %1307, i64 %1309
  %1311 = load double, ptr %1310, align 8, !tbaa !37
  %1312 = fsub double %1306, %1311
  %1313 = load double, ptr %113, align 8, !tbaa !37
  %1314 = fdiv double %1312, %1313
  store double %1314, ptr %128, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  store double 0.000000e+00, ptr %129, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #8
  store i8 0, ptr %130, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #8
  store i32 0, ptr %131, align 4, !tbaa !11
  br label %1315

1315:                                             ; preds = %1361, %1301
  %1316 = load i32, ptr %131, align 4, !tbaa !11
  %1317 = load i32, ptr %19, align 4, !tbaa !11
  %1318 = icmp slt i32 %1316, %1317
  br i1 %1318, label %1320, label %1319

1319:                                             ; preds = %1315
  store i32 32, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #8
  br label %1364

1320:                                             ; preds = %1315
  %1321 = load ptr, ptr %88, align 8, !tbaa !5
  %1322 = load i32, ptr %131, align 4, !tbaa !11
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds i32, ptr %1321, i64 %1323
  %1325 = load i32, ptr %1324, align 4, !tbaa !11
  %1326 = load i32, ptr %112, align 4, !tbaa !11
  %1327 = icmp eq i32 %1325, %1326
  br i1 %1327, label %1328, label %1336

1328:                                             ; preds = %1320
  %1329 = load ptr, ptr %89, align 8, !tbaa !5
  %1330 = load i32, ptr %131, align 4, !tbaa !11
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds i32, ptr %1329, i64 %1331
  %1333 = load i32, ptr %1332, align 4, !tbaa !11
  %1334 = load i32, ptr %127, align 4, !tbaa !11
  %1335 = icmp eq i32 %1333, %1334
  br i1 %1335, label %1352, label %1336

1336:                                             ; preds = %1328, %1320
  %1337 = load ptr, ptr %89, align 8, !tbaa !5
  %1338 = load i32, ptr %131, align 4, !tbaa !11
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds i32, ptr %1337, i64 %1339
  %1341 = load i32, ptr %1340, align 4, !tbaa !11
  %1342 = load i32, ptr %112, align 4, !tbaa !11
  %1343 = icmp eq i32 %1341, %1342
  br i1 %1343, label %1344, label %1360

1344:                                             ; preds = %1336
  %1345 = load ptr, ptr %88, align 8, !tbaa !5
  %1346 = load i32, ptr %131, align 4, !tbaa !11
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i32, ptr %1345, i64 %1347
  %1349 = load i32, ptr %1348, align 4, !tbaa !11
  %1350 = load i32, ptr %127, align 4, !tbaa !11
  %1351 = icmp eq i32 %1349, %1350
  br i1 %1351, label %1352, label %1360

1352:                                             ; preds = %1344, %1328
  %1353 = load ptr, ptr %97, align 8, !tbaa !5
  %1354 = load i32, ptr %131, align 4, !tbaa !11
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1353, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !37
  %1358 = load double, ptr %129, align 8, !tbaa !37
  %1359 = fadd double %1358, %1357
  store double %1359, ptr %129, align 8, !tbaa !37
  store i8 1, ptr %130, align 1, !tbaa !13
  br label %1360

1360:                                             ; preds = %1352, %1344, %1336
  br label %1361

1361:                                             ; preds = %1360
  %1362 = load i32, ptr %131, align 4, !tbaa !11
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr %131, align 4, !tbaa !11
  br label %1315, !llvm.loop !47

1364:                                             ; preds = %1319
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  %1365 = load double, ptr %128, align 8, !tbaa !37
  %1366 = load double, ptr %129, align 8, !tbaa !37
  %1367 = fsub double %1365, %1366
  %1368 = call double @llvm.fabs.f64(double %1367)
  %1369 = load double, ptr %128, align 8, !tbaa !37
  %1370 = call double @llvm.fabs.f64(double %1369)
  %1371 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %1370, double noundef 1.000000e+00)
  %1372 = fdiv double %1368, %1371
  store double %1372, ptr %132, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #8
  store i8 32, ptr %133, align 1, !tbaa !38
  %1373 = load double, ptr %132, align 8, !tbaa !37
  %1374 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 8
  %1375 = load double, ptr %1374, align 8, !tbaa !39
  %1376 = fcmp oge double %1373, %1375
  br i1 %1376, label %1377, label %1380

1377:                                             ; preds = %1364
  store i8 42, ptr %133, align 1, !tbaa !38
  %1378 = load i32, ptr %6, align 4, !tbaa !11
  %1379 = add nsw i32 %1378, 1
  store i32 %1379, ptr %6, align 4, !tbaa !11
  br label %1380

1380:                                             ; preds = %1377, %1364
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #8
  store i8 32, ptr %134, align 1, !tbaa !38
  %1381 = load i8, ptr %130, align 1, !tbaa !13, !range !17, !noundef !18
  %1382 = trunc i8 %1381 to i1
  br i1 %1382, label %1383, label %1384

1383:                                             ; preds = %1380
  store i8 118, ptr %134, align 1, !tbaa !38
  br label %1384

1384:                                             ; preds = %1383, %1380
  %1385 = load i8, ptr %133, align 1, !tbaa !38
  %1386 = sext i8 %1385 to i32
  %1387 = icmp ne i32 %1386, 32
  br i1 %1387, label %1392, label %1388

1388:                                             ; preds = %1384
  %1389 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 9
  %1390 = load i8, ptr %1389, align 8, !tbaa !40, !range !17, !noundef !18
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1392, label %1431

1392:                                             ; preds = %1388, %1384
  %1393 = load i32, ptr %102, align 4, !tbaa !11
  %1394 = icmp eq i32 %1393, -1
  br i1 %1394, label %1395, label %1411

1395:                                             ; preds = %1392
  %1396 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %1397 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1396)
  %1398 = load i8, ptr %133, align 1, !tbaa !38
  %1399 = sext i8 %1398 to i32
  %1400 = load i32, ptr %112, align 4, !tbaa !11
  %1401 = load i32, ptr %62, align 4, !tbaa !11
  %1402 = add nsw i32 %1400, %1401
  %1403 = load i32, ptr %127, align 4, !tbaa !11
  %1404 = load i32, ptr %62, align 4, !tbaa !11
  %1405 = add nsw i32 %1403, %1404
  %1406 = load double, ptr %129, align 8, !tbaa !37
  %1407 = load i8, ptr %134, align 1, !tbaa !38
  %1408 = sext i8 %1407 to i32
  %1409 = load double, ptr %128, align 8, !tbaa !37
  %1410 = load double, ptr %132, align 8, !tbaa !37
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1397, i32 noundef 2, i32 noundef 12, ptr noundef @.str.75, i32 noundef %1399, i32 noundef %1402, i32 noundef %1405, double noundef %1406, i32 noundef %1408, double noundef %1409, double noundef %1410)
  br label %1430

1411:                                             ; preds = %1392
  %1412 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %1413 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1412)
  %1414 = load i8, ptr %133, align 1, !tbaa !38
  %1415 = sext i8 %1414 to i32
  %1416 = load i32, ptr %102, align 4, !tbaa !11
  %1417 = load i32, ptr %62, align 4, !tbaa !11
  %1418 = add nsw i32 %1416, %1417
  %1419 = load i32, ptr %112, align 4, !tbaa !11
  %1420 = load i32, ptr %62, align 4, !tbaa !11
  %1421 = add nsw i32 %1419, %1420
  %1422 = load i32, ptr %127, align 4, !tbaa !11
  %1423 = load i32, ptr %62, align 4, !tbaa !11
  %1424 = add nsw i32 %1422, %1423
  %1425 = load double, ptr %129, align 8, !tbaa !37
  %1426 = load i8, ptr %134, align 1, !tbaa !38
  %1427 = sext i8 %1426 to i32
  %1428 = load double, ptr %128, align 8, !tbaa !37
  %1429 = load double, ptr %132, align 8, !tbaa !37
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1413, i32 noundef 2, i32 noundef 12, ptr noundef @.str.76, i32 noundef %1415, i32 noundef %1418, i32 noundef %1421, i32 noundef %1424, double noundef %1425, i32 noundef %1427, double noundef %1428, double noundef %1429)
  br label %1430

1430:                                             ; preds = %1411, %1395
  br label %1431

1431:                                             ; preds = %1430, %1388
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  br label %1432

1432:                                             ; preds = %1431
  %1433 = load i32, ptr %127, align 4, !tbaa !11
  %1434 = add nsw i32 %1433, 1
  store i32 %1434, ptr %127, align 4, !tbaa !11
  br label %1296, !llvm.loop !48

1435:                                             ; preds = %1300
  %1436 = load ptr, ptr %21, align 8, !tbaa !5
  %1437 = load i32, ptr %112, align 4, !tbaa !11
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds double, ptr %1436, i64 %1438
  %1440 = load double, ptr %1439, align 8, !tbaa !37
  %1441 = load ptr, ptr %60, align 8, !tbaa !5
  %1442 = load i32, ptr %112, align 4, !tbaa !11
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds double, ptr %1441, i64 %1443
  store double %1440, ptr %1444, align 8, !tbaa !37
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  br label %1445

1445:                                             ; preds = %1435
  %1446 = load i32, ptr %112, align 4, !tbaa !11
  %1447 = add nsw i32 %1446, 1
  store i32 %1447, ptr %112, align 4, !tbaa !11
  br label %1105, !llvm.loop !49

1448:                                             ; preds = %1240, %1185
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  br label %1461

1449:                                             ; preds = %1109
  %1450 = load i32, ptr %102, align 4, !tbaa !11
  %1451 = icmp sge i32 %1450, 0
  br i1 %1451, label %1452, label %1457

1452:                                             ; preds = %1449
  %1453 = load ptr, ptr %98, align 8, !tbaa !5
  %1454 = load i32, ptr %102, align 4, !tbaa !11
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds double, ptr %1453, i64 %1455
  store double 0.000000e+00, ptr %1456, align 8, !tbaa !37
  br label %1457

1457:                                             ; preds = %1452, %1449
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %1458

1458:                                             ; preds = %1457
  %1459 = load i32, ptr %102, align 4, !tbaa !11
  %1460 = add nsw i32 %1459, 1
  store i32 %1460, ptr %102, align 4, !tbaa !11
  br label %993, !llvm.loop !50

1461:                                             ; preds = %1448, %1103
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1491

1462:                                             ; preds = %997
  %1463 = load ptr, ptr %88, align 8, !tbaa !5
  %1464 = icmp eq ptr %1463, null
  br i1 %1464, label %1466, label %1465

1465:                                             ; preds = %1462
  call void @_ZdaPv(ptr noundef %1463) #11
  br label %1466

1466:                                             ; preds = %1465, %1462
  %1467 = load ptr, ptr %89, align 8, !tbaa !5
  %1468 = icmp eq ptr %1467, null
  br i1 %1468, label %1470, label %1469

1469:                                             ; preds = %1466
  call void @_ZdaPv(ptr noundef %1467) #11
  br label %1470

1470:                                             ; preds = %1469, %1466
  %1471 = load ptr, ptr %97, align 8, !tbaa !5
  %1472 = icmp eq ptr %1471, null
  br i1 %1472, label %1474, label %1473

1473:                                             ; preds = %1470
  call void @_ZdaPv(ptr noundef %1471) #11
  br label %1474

1474:                                             ; preds = %1473, %1470
  %1475 = load ptr, ptr %98, align 8, !tbaa !5
  %1476 = icmp eq ptr %1475, null
  br i1 %1476, label %1478, label %1477

1477:                                             ; preds = %1474
  call void @_ZdaPv(ptr noundef %1475) #11
  br label %1478

1478:                                             ; preds = %1477, %1474
  %1479 = load ptr, ptr %99, align 8, !tbaa !5
  %1480 = icmp eq ptr %1479, null
  br i1 %1480, label %1482, label %1481

1481:                                             ; preds = %1478
  call void @_ZdaPv(ptr noundef %1479) #11
  br label %1482

1482:                                             ; preds = %1481, %1478
  %1483 = load ptr, ptr %100, align 8, !tbaa !5
  %1484 = icmp eq ptr %1483, null
  br i1 %1484, label %1486, label %1485

1485:                                             ; preds = %1482
  call void @_ZdaPv(ptr noundef %1483) #11
  br label %1486

1486:                                             ; preds = %1485, %1482
  %1487 = load ptr, ptr %101, align 8, !tbaa !5
  %1488 = icmp eq ptr %1487, null
  br i1 %1488, label %1490, label %1489

1489:                                             ; preds = %1486
  call void @_ZdaPv(ptr noundef %1487) #11
  br label %1490

1490:                                             ; preds = %1489, %1486
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %1492

1491:                                             ; preds = %1461, %924
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  br label %1537

1492:                                             ; preds = %1490, %856
  %1493 = load ptr, ptr %21, align 8, !tbaa !5
  %1494 = icmp eq ptr %1493, null
  br i1 %1494, label %1496, label %1495

1495:                                             ; preds = %1492
  call void @_ZdaPv(ptr noundef %1493) #11
  br label %1496

1496:                                             ; preds = %1495, %1492
  %1497 = load ptr, ptr %24, align 8, !tbaa !5
  %1498 = icmp eq ptr %1497, null
  br i1 %1498, label %1500, label %1499

1499:                                             ; preds = %1496
  call void @_ZdaPv(ptr noundef %1497) #11
  br label %1500

1500:                                             ; preds = %1499, %1496
  %1501 = load ptr, ptr %37, align 8, !tbaa !5
  %1502 = icmp eq ptr %1501, null
  br i1 %1502, label %1504, label %1503

1503:                                             ; preds = %1500
  call void @_ZdaPv(ptr noundef %1501) #11
  br label %1504

1504:                                             ; preds = %1503, %1500
  %1505 = load ptr, ptr %60, align 8, !tbaa !5
  %1506 = icmp eq ptr %1505, null
  br i1 %1506, label %1508, label %1507

1507:                                             ; preds = %1504
  call void @_ZdaPv(ptr noundef %1505) #11
  br label %1508

1508:                                             ; preds = %1507, %1504
  %1509 = load ptr, ptr %44, align 8, !tbaa !5
  %1510 = icmp eq ptr %1509, null
  br i1 %1510, label %1512, label %1511

1511:                                             ; preds = %1508
  call void @_ZdaPv(ptr noundef %1509) #11
  br label %1512

1512:                                             ; preds = %1511, %1508
  %1513 = load ptr, ptr %45, align 8, !tbaa !5
  %1514 = icmp eq ptr %1513, null
  br i1 %1514, label %1516, label %1515

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

1516:                                             ; preds = %1515, %1512
  %1517 = load ptr, ptr %46, align 8, !tbaa !5
  %1518 = icmp eq ptr %1517, null
  br i1 %1518, label %1520, label %1519

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

1520:                                             ; preds = %1519, %1516
  %1521 = load ptr, ptr %61, align 8, !tbaa !5
  %1522 = icmp eq ptr %1521, null
  br i1 %1522, label %1524, label %1523

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

1524:                                             ; preds = %1523, %1520
  %1525 = load i32, ptr %6, align 4, !tbaa !11
  %1526 = icmp eq i32 %1525, 0
  br i1 %1526, label %1527, label %1530

1527:                                             ; preds = %1524
  %1528 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %1529 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1528)
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1529, i32 noundef 3, i32 noundef 12, ptr noundef @.str.77)
  br label %1534

1530:                                             ; preds = %1524
  %1531 = getelementptr inbounds %"class.SimTKIpopt::TNLPAdapter", ptr %135, i32 0, i32 2
  %1532 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1531)
  %1533 = load i32, ptr %6, align 4, !tbaa !11
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %1532, i32 noundef 2, i32 noundef 12, ptr noundef @.str.78, i32 noundef %1533)
  br label %1534

1534:                                             ; preds = %1530, %1527
  %1535 = load i8, ptr %15, align 1, !tbaa !13, !range !17, !noundef !18
  %1536 = trunc i8 %1535 to i1
  store i1 %1536, ptr %3, align 1
  store i32 1, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %1542

1537:                                             ; preds = %1491, %855
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %1538

1538:                                             ; preds = %1537, %534, %447
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %1539

1539:                                             ; preds = %1538, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %1540

1540:                                             ; preds = %1539, %320, %264
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  br label %1541

1541:                                             ; preds = %1540, %178
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %1544

1542:                                             ; preds = %1534, %138
  %1543 = load i1, ptr %3, align 1
  ret i1 %1543

1544:                                             ; preds = %1541
  %1545 = load ptr, ptr %9, align 8
  %1546 = load i32, ptr %10, align 4
  %1547 = insertvalue { ptr, i32 } poison, ptr %1545, 0
  %1548 = insertvalue { ptr, i32 } %1547, i32 %1546, 1
  resume { ptr, i32 } %1548

1549:                                             ; preds = %1213, %1158, %1076, %897, %712, %611, %507, %420, %351, %293, %237, %151
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 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)) #1 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

declare void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef, double noundef) #7

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter18DerivativeTestEnumE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!20, !20, i64 0}
!20 = !{!"_ZTSN10SimTKIpopt4TNLP14IndexStyleEnumE", !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !29, i64 56}
!24 = !{!"_ZTSN10SimTKIpopt11TNLPAdapterE", !25, i64 0, !27, i64 16, !28, i64 24, !29, i64 32, !29, i64 40, !30, i64 48, !10, i64 52, !29, i64 56, !29, i64 64, !14, i64 72, !14, i64 73, !31, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !20, i64 116, !32, i64 120, !32, i64 128, !32, i64 136, !32, i64 144, !33, i64 152, !32, i64 160, !33, i64 168, !32, i64 176, !33, i64 184, !32, i64 192, !33, i64 200, !33, i64 208, !33, i64 216, !34, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !35, i64 296, !36, i64 304, !35, i64 312, !36, i64 320, !35, i64 328, !36, i64 336, !36, i64 344, !35, i64 352, !36, i64 360, !35, i64 368, !6, i64 376, !6, i64 384, !6, i64 392}
!25 = !{!"_ZTSN10SimTKIpopt3NLPE", !26, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !12, i64 8}
!27 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_4TNLPEEE", !6, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !6, i64 0}
!29 = !{!"double", !7, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter26FixedVariableTreatmentEnumE", !7, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !7, i64 0}
!32 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !6, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !6, i64 0}
!34 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEE", !6, i64 0}
!35 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEE", !6, i64 0}
!36 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEE", !6, i64 0}
!37 = !{!29, !29, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!24, !29, i64 64}
!40 = !{!24, !14, i64 72}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}
!43 = distinct !{!43, !22}
!44 = distinct !{!44, !22}
!45 = distinct !{!45, !22}
!46 = distinct !{!46, !22}
!47 = distinct !{!47, !22}
!48 = distinct !{!48, !22}
!49 = distinct !{!49, !22}
!50 = distinct !{!50, !22}


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

@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [111 x i8], align 1
@_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.62 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [44 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 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 #2 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 #2 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 #1 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10SimTKIpopt11TNLPAdapter16CheckDerivativesENS0_18DerivativeTestEnumE(ptr noundef nonnull align 8 dereferenceable(400) %0, i32 noundef %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator.11", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.11", align 1
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.11", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.11", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.11", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.11", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.11", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator.11", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.11", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator.11", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.11", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.11", align 1
  %39 = alloca double, align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.11", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.11", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.11", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator.11", align 1
  %50 = alloca double, align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.11", align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator.11", align 1
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.11", align 1
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.11", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.11", align 1
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.11", align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::allocator.11", align 1
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.11", align 1
  %71 = icmp eq i32 %1, 0
  br i1 %71, label %874, label %72

72:                                               ; preds = %2
  %73 = getelementptr inbounds i8, ptr %0, i64 24
  %74 = tail call noundef zeroext i1 @_ZN10SimTKIpopt7IsValidIKNS_10JournalistEEEbRKNS_8SmartPtrIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %73)
  br i1 %74, label %98, label %75

75:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.60, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %76 unwind label %85

76:                                               ; preds = %75
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  %77 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.1)
          to label %78 unwind label %87

78:                                               ; preds = %76
  %79 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.61)
          to label %80 unwind label %87

80:                                               ; preds = %78
  %81 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %82 unwind label %.thread

82:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %83 unwind label %90

83:                                               ; preds = %82
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %81, ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef 1607)
          to label %84 unwind label %92

84:                                               ; preds = %83
  invoke void @__cxa_throw(ptr nonnull %81, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %92

85:                                               ; preds = %75
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  br label %97

87:                                               ; preds = %78, %76
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %96

.thread:                                          ; preds = %80
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %95

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

92:                                               ; preds = %84, %83
  %.0350 = phi i1 [ false, %84 ], [ true, %83 ]
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %94

94:                                               ; preds = %90, %92
  %.1351 = phi i1 [ %.0350, %92 ], [ true, %90 ]
  %.pn = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br i1 %.1351, label %95, label %96

95:                                               ; preds = %.thread, %94
  %.pn.pn475 = phi { ptr, i32 } [ %89, %.thread ], [ %.pn, %94 ]
  call void @__cxa_free_exception(ptr %81) #8
  br label %96

96:                                               ; preds = %94, %95, %87
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn475, %95 ], [ %.pn, %94 ], [ %88, %87 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  br label %97

97:                                               ; preds = %96, %85
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %96 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  br label %873

98:                                               ; preds = %72
  %99 = tail call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73)
  tail call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %99, i32 noundef 3, i32 noundef 12, ptr noundef nonnull @.str.62)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  %100 = getelementptr inbounds i8, ptr %0, i64 16
  %101 = tail call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i64 16
  %104 = load ptr, ptr %103, align 8
  %105 = call noundef zeroext i1 %104(ptr noundef nonnull align 8 dereferenceable(12) %101, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %106 = load i32, ptr %8, align 4, !tbaa !8
  %107 = sext i32 %106 to i64
  %108 = icmp slt i32 %106, 0
  %109 = shl nsw i64 %107, 3
  %110 = select i1 %108, i64 -1, i64 %109
  %111 = call noalias noundef nonnull ptr @_Znam(i64 noundef %110) #10
  %112 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %113 = load i32, ptr %8, align 4, !tbaa !8
  %114 = load i32, ptr %9, align 4, !tbaa !8
  %115 = load ptr, ptr %112, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 40
  %117 = load ptr, ptr %116, align 8
  %118 = call noundef zeroext i1 %117(ptr noundef nonnull align 8 dereferenceable(12) %112, i32 noundef %113, i1 noundef zeroext true, ptr noundef nonnull %111, i1 noundef zeroext false, ptr noundef null, ptr noundef null, i32 noundef %114, i1 noundef zeroext false, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %119 = load i32, ptr %9, align 4, !tbaa !8
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %121, label %125

121:                                              ; preds = %98
  %122 = zext nneg i32 %119 to i64
  %123 = shl nuw nsw i64 %122, 3
  %124 = call noalias noundef nonnull ptr @_Znam(i64 noundef %123) #10
  br label %125

125:                                              ; preds = %121, %98
  %.0361 = phi ptr [ %124, %121 ], [ null, %98 ]
  %126 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %127 = load i32, ptr %8, align 4, !tbaa !8
  %128 = load ptr, ptr %126, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %128, i64 56
  %130 = load ptr, ptr %129, align 8
  %131 = call noundef zeroext i1 %130(ptr noundef nonnull align 8 dereferenceable(12) %126, i32 noundef %127, ptr noundef nonnull %111, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(8) %13)
  br i1 %131, label %155, label %132

132:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %133 unwind label %142

133:                                              ; preds = %132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  %134 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.1)
          to label %135 unwind label %144

135:                                              ; preds = %133
  %136 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.64)
          to label %137 unwind label %144

137:                                              ; preds = %135
  %138 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %139 unwind label %.thread476

139:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %140 unwind label %147

140:                                              ; preds = %139
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %138, ptr noundef nonnull %16, ptr noundef nonnull %17, i32 noundef 1639)
          to label %141 unwind label %149

141:                                              ; preds = %140
  invoke void @__cxa_throw(ptr nonnull %138, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %149

142:                                              ; preds = %132
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  br label %154

144:                                              ; preds = %135, %133
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %153

.thread476:                                       ; preds = %137
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %152

147:                                              ; preds = %139
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %141, %140
  %.0366 = phi i1 [ false, %141 ], [ true, %140 ]
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %151

151:                                              ; preds = %147, %149
  %.1367 = phi i1 [ %.0366, %149 ], [ true, %147 ]
  %.pn409 = phi { ptr, i32 } [ %150, %149 ], [ %148, %147 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br i1 %.1367, label %152, label %153

152:                                              ; preds = %.thread476, %151
  %.pn409.pn479 = phi { ptr, i32 } [ %146, %.thread476 ], [ %.pn409, %151 ]
  call void @__cxa_free_exception(ptr %138) #8
  br label %153

153:                                              ; preds = %151, %152, %144
  %.pn409.pn.pn = phi { ptr, i32 } [ %.pn409.pn479, %152 ], [ %.pn409, %151 ], [ %145, %144 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %154

154:                                              ; preds = %153, %142
  %.pn409.pn.pn.pn = phi { ptr, i32 } [ %.pn409.pn.pn, %153 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %872

155:                                              ; preds = %125
  %156 = load i32, ptr %9, align 4, !tbaa !8
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %158, label %189

158:                                              ; preds = %155
  %159 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %160 = load i32, ptr %8, align 4, !tbaa !8
  %161 = load i32, ptr %9, align 4, !tbaa !8
  %162 = load ptr, ptr %159, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 72
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef zeroext i1 %164(ptr noundef nonnull align 8 dereferenceable(12) %159, i32 noundef %160, ptr noundef nonnull %111, i1 noundef zeroext false, i32 noundef %161, ptr noundef %.0361)
  br i1 %165, label %189, label %166

166:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %167 unwind label %176

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

169:                                              ; preds = %167
  %170 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.65)
          to label %171 unwind label %178

171:                                              ; preds = %169
  %172 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %173 unwind label %.thread480

173:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %174 unwind label %181

174:                                              ; preds = %173
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %172, ptr noundef nonnull %21, ptr noundef nonnull %22, i32 noundef 1644)
          to label %175 unwind label %183

175:                                              ; preds = %174
  invoke void @__cxa_throw(ptr nonnull %172, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %183

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

178:                                              ; preds = %169, %167
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %187

.thread480:                                       ; preds = %171
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %186

181:                                              ; preds = %173
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %185

183:                                              ; preds = %175, %174
  %.0369 = phi i1 [ false, %175 ], [ true, %174 ]
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %185

185:                                              ; preds = %181, %183
  %.1370 = phi i1 [ %.0369, %183 ], [ true, %181 ]
  %.pn414 = phi { ptr, i32 } [ %184, %183 ], [ %182, %181 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br i1 %.1370, label %186, label %187

186:                                              ; preds = %.thread480, %185
  %.pn414.pn483 = phi { ptr, i32 } [ %180, %.thread480 ], [ %.pn414, %185 ]
  call void @__cxa_free_exception(ptr %172) #8
  br label %187

187:                                              ; preds = %185, %186, %178
  %.pn414.pn.pn = phi { ptr, i32 } [ %.pn414.pn483, %186 ], [ %.pn414, %185 ], [ %179, %178 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %188

188:                                              ; preds = %187, %176
  %.pn414.pn.pn.pn = phi { ptr, i32 } [ %.pn414.pn.pn, %187 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  br label %872

189:                                              ; preds = %158, %155
  %190 = load i32, ptr %8, align 4, !tbaa !8
  %191 = sext i32 %190 to i64
  %192 = icmp slt i32 %190, 0
  %193 = shl nsw i64 %191, 3
  %194 = select i1 %192, i64 -1, i64 %193
  %195 = call noalias noundef nonnull ptr @_Znam(i64 noundef %194) #10
  %196 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %197 = load i32, ptr %8, align 4, !tbaa !8
  %198 = load ptr, ptr %196, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %198, i64 64
  %200 = load ptr, ptr %199, align 8
  %201 = call noundef zeroext i1 %200(ptr noundef nonnull align 8 dereferenceable(12) %196, i32 noundef %197, ptr noundef nonnull %111, i1 noundef zeroext true, ptr noundef nonnull %195)
  br i1 %201, label %225, label %202

202:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %203 unwind label %212

203:                                              ; preds = %202
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  %204 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.1)
          to label %205 unwind label %214

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.66)
          to label %207 unwind label %214

207:                                              ; preds = %205
  %208 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %209 unwind label %.thread484

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %210 unwind label %217

210:                                              ; preds = %209
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %208, ptr noundef nonnull %26, ptr noundef nonnull %27, i32 noundef 1651)
          to label %211 unwind label %219

211:                                              ; preds = %210
  invoke void @__cxa_throw(ptr nonnull %208, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %219

212:                                              ; preds = %202
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #8
  br label %224

214:                                              ; preds = %205, %203
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %223

.thread484:                                       ; preds = %207
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %222

217:                                              ; preds = %209
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %211, %210
  %.0386 = phi i1 [ false, %211 ], [ true, %210 ]
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %221

221:                                              ; preds = %217, %219
  %.1387 = phi i1 [ %.0386, %219 ], [ true, %217 ]
  %.pn419 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br i1 %.1387, label %222, label %223

222:                                              ; preds = %.thread484, %221
  %.pn419.pn487 = phi { ptr, i32 } [ %216, %.thread484 ], [ %.pn419, %221 ]
  call void @__cxa_free_exception(ptr %208) #8
  br label %223

223:                                              ; preds = %221, %222, %214
  %.pn419.pn.pn = phi { ptr, i32 } [ %.pn419.pn487, %222 ], [ %.pn419, %221 ], [ %215, %214 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %224

224:                                              ; preds = %223, %212
  %.pn419.pn.pn.pn = phi { ptr, i32 } [ %.pn419.pn.pn, %223 ], [ %213, %212 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  br label %872

225:                                              ; preds = %189
  %226 = load i32, ptr %9, align 4, !tbaa !8
  %227 = icmp sgt i32 %226, 0
  br i1 %227, label %228, label %322

228:                                              ; preds = %225
  %229 = load i32, ptr %10, align 4, !tbaa !8
  %230 = sext i32 %229 to i64
  %231 = icmp slt i32 %229, 0
  %232 = shl nsw i64 %230, 2
  %233 = select i1 %231, i64 -1, i64 %232
  %234 = call noalias noundef nonnull ptr @_Znam(i64 noundef %233) #10
  %235 = call noalias noundef nonnull ptr @_Znam(i64 noundef %233) #10
  %236 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %237 = load i32, ptr %8, align 4, !tbaa !8
  %238 = load i32, ptr %9, align 4, !tbaa !8
  %239 = load i32, ptr %10, align 4, !tbaa !8
  %240 = load ptr, ptr %236, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 80
  %242 = load ptr, ptr %241, align 8
  %243 = call noundef zeroext i1 %242(ptr noundef nonnull align 8 dereferenceable(12) %236, i32 noundef %237, ptr noundef null, i1 noundef zeroext false, i32 noundef %238, i32 noundef %239, ptr noundef nonnull %234, ptr noundef nonnull %235, ptr noundef null)
  br i1 %243, label %267, label %244

244:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %245 unwind label %254

245:                                              ; preds = %244
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  %246 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.1)
          to label %247 unwind label %256

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.67)
          to label %249 unwind label %256

249:                                              ; preds = %247
  %250 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %251 unwind label %.thread488

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

252:                                              ; preds = %251
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %250, ptr noundef nonnull %31, ptr noundef nonnull %32, i32 noundef 1663)
          to label %253 unwind label %261

253:                                              ; preds = %252
  invoke void @__cxa_throw(ptr nonnull %250, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %261

254:                                              ; preds = %244
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  br label %266

256:                                              ; preds = %247, %245
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %265

.thread488:                                       ; preds = %249
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %264

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

261:                                              ; preds = %253, %252
  %.0396 = phi i1 [ false, %253 ], [ true, %252 ]
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %263

263:                                              ; preds = %259, %261
  %.1397 = phi i1 [ %.0396, %261 ], [ true, %259 ]
  %.pn424 = phi { ptr, i32 } [ %262, %261 ], [ %260, %259 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br i1 %.1397, label %264, label %265

264:                                              ; preds = %.thread488, %263
  %.pn424.pn491 = phi { ptr, i32 } [ %258, %.thread488 ], [ %.pn424, %263 ]
  call void @__cxa_free_exception(ptr %250) #8
  br label %265

265:                                              ; preds = %263, %264, %256
  %.pn424.pn.pn = phi { ptr, i32 } [ %.pn424.pn491, %264 ], [ %.pn424, %263 ], [ %257, %256 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %266

266:                                              ; preds = %265, %254
  %.pn424.pn.pn.pn = phi { ptr, i32 } [ %.pn424.pn.pn, %265 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  br label %872

267:                                              ; preds = %228
  %268 = load i32, ptr %12, align 4, !tbaa !11
  %269 = icmp eq i32 %268, 1
  %.pre = load i32, ptr %10, align 4, !tbaa !8
  %270 = icmp sgt i32 %.pre, 0
  %or.cond641 = select i1 %269, i1 %270, i1 false
  br i1 %or.cond641, label %.lr.ph.preheader, label %.loopexit526

.lr.ph.preheader:                                 ; preds = %267
  %wide.trip.count = zext nneg i32 %.pre to i64
  %min.iters.check = icmp ult i32 %.pre, 8
  br i1 %min.iters.check, label %.lr.ph.preheader667, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %271 = getelementptr inbounds i32, ptr %234, i64 %index
  %272 = getelementptr inbounds i8, ptr %271, i64 16
  %wide.load = load <4 x i32>, ptr %271, align 4, !tbaa !8
  %wide.load646 = load <4 x i32>, ptr %272, align 4, !tbaa !8
  %273 = add nsw <4 x i32> %wide.load, <i32 -1, i32 -1, i32 -1, i32 -1>
  %274 = add nsw <4 x i32> %wide.load646, <i32 -1, i32 -1, i32 -1, i32 -1>
  store <4 x i32> %273, ptr %271, align 4, !tbaa !8
  store <4 x i32> %274, ptr %272, align 4, !tbaa !8
  %275 = getelementptr inbounds i32, ptr %235, i64 %index
  %276 = getelementptr inbounds i8, ptr %275, i64 16
  %wide.load647 = load <4 x i32>, ptr %275, align 4, !tbaa !8
  %wide.load648 = load <4 x i32>, ptr %276, align 4, !tbaa !8
  %277 = add nsw <4 x i32> %wide.load647, <i32 -1, i32 -1, i32 -1, i32 -1>
  %278 = add nsw <4 x i32> %wide.load648, <i32 -1, i32 -1, i32 -1, i32 -1>
  store <4 x i32> %277, ptr %275, align 4, !tbaa !8
  store <4 x i32> %278, ptr %276, align 4, !tbaa !8
  %index.next = add nuw i64 %index, 8
  %279 = icmp eq i64 %index.next, %n.vec
  br i1 %279, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.loopexit526, label %.lr.ph.preheader667

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

.lr.ph:                                           ; preds = %.lr.ph.preheader667, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader667 ]
  %280 = getelementptr inbounds i32, ptr %234, i64 %indvars.iv
  %281 = load i32, ptr %280, align 4, !tbaa !8
  %282 = add nsw i32 %281, -1
  store i32 %282, ptr %280, align 4, !tbaa !8
  %283 = getelementptr inbounds i32, ptr %235, i64 %indvars.iv
  %284 = load i32, ptr %283, align 4, !tbaa !8
  %285 = add nsw i32 %284, -1
  store i32 %285, ptr %283, align 4, !tbaa !8
  %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 %.loopexit526, label %.lr.ph, !llvm.loop !17

.loopexit526:                                     ; preds = %.lr.ph, %middle.block, %267
  %286 = sext i32 %.pre to i64
  %287 = icmp slt i32 %.pre, 0
  %288 = shl nsw i64 %286, 3
  %289 = select i1 %287, i64 -1, i64 %288
  %290 = call noalias noundef nonnull ptr @_Znam(i64 noundef %289) #10
  %291 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %292 = load i32, ptr %8, align 4, !tbaa !8
  %293 = load i32, ptr %9, align 4, !tbaa !8
  %294 = load i32, ptr %10, align 4, !tbaa !8
  %295 = load ptr, ptr %291, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 80
  %297 = load ptr, ptr %296, align 8
  %298 = call noundef zeroext i1 %297(ptr noundef nonnull align 8 dereferenceable(12) %291, i32 noundef %292, ptr noundef nonnull %111, i1 noundef zeroext false, i32 noundef %293, i32 noundef %294, ptr noundef null, ptr noundef null, ptr noundef nonnull %290)
  br i1 %298, label %322, label %299

299:                                              ; preds = %.loopexit526
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %300 unwind label %309

300:                                              ; preds = %299
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  %301 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.1)
          to label %302 unwind label %311

302:                                              ; preds = %300
  %303 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.68)
          to label %304 unwind label %311

304:                                              ; preds = %302
  %305 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %306 unwind label %.thread492

306:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %307 unwind label %314

307:                                              ; preds = %306
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %305, ptr noundef nonnull %36, ptr noundef nonnull %37, i32 noundef 1676)
          to label %308 unwind label %316

308:                                              ; preds = %307
  invoke void @__cxa_throw(ptr nonnull %305, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %316

309:                                              ; preds = %299
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  br label %321

311:                                              ; preds = %302, %300
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %320

.thread492:                                       ; preds = %304
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %319

314:                                              ; preds = %306
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %318

316:                                              ; preds = %308, %307
  %.0392 = phi i1 [ false, %308 ], [ true, %307 ]
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %318

318:                                              ; preds = %314, %316
  %.1393 = phi i1 [ %.0392, %316 ], [ true, %314 ]
  %.pn429 = phi { ptr, i32 } [ %317, %316 ], [ %315, %314 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br i1 %.1393, label %319, label %320

319:                                              ; preds = %.thread492, %318
  %.pn429.pn495 = phi { ptr, i32 } [ %313, %.thread492 ], [ %.pn429, %318 ]
  call void @__cxa_free_exception(ptr %305) #8
  br label %320

320:                                              ; preds = %318, %319, %311
  %.pn429.pn.pn = phi { ptr, i32 } [ %.pn429.pn495, %319 ], [ %.pn429, %318 ], [ %312, %311 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %321

321:                                              ; preds = %320, %309
  %.pn429.pn.pn.pn = phi { ptr, i32 } [ %.pn429.pn.pn, %320 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  br label %872

322:                                              ; preds = %.loopexit526, %225
  %.0400 = phi ptr [ %235, %.loopexit526 ], [ null, %225 ]
  %.0399 = phi ptr [ %290, %.loopexit526 ], [ null, %225 ]
  %.0391 = phi ptr [ %234, %.loopexit526 ], [ null, %225 ]
  %323 = load i32, ptr %8, align 4, !tbaa !8
  %324 = sext i32 %323 to i64
  %325 = icmp slt i32 %323, 0
  %326 = shl nsw i64 %324, 3
  %327 = select i1 %325, i64 -1, i64 %326
  %328 = call noalias noundef nonnull ptr @_Znam(i64 noundef %327) #10
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %323, ptr noundef nonnull %111, i32 noundef 1, ptr noundef nonnull %328, i32 noundef 1)
  %329 = load i32, ptr %9, align 4, !tbaa !8
  %330 = icmp sgt i32 %329, 0
  br i1 %330, label %331, label %335

331:                                              ; preds = %322
  %332 = zext nneg i32 %329 to i64
  %333 = shl nuw nsw i64 %332, 3
  %334 = call noalias noundef nonnull ptr @_Znam(i64 noundef %333) #10
  br label %335

335:                                              ; preds = %331, %322
  %.0390 = phi ptr [ %334, %331 ], [ null, %322 ]
  %336 = load i32, ptr %12, align 4, !tbaa !11
  %337 = icmp eq i32 %336, 1
  %338 = load i32, ptr %8, align 4, !tbaa !8
  %339 = icmp sgt i32 %338, 0
  br i1 %339, label %.lr.ph555, label %._crit_edge556

.lr.ph555:                                        ; preds = %335
  %340 = getelementptr inbounds i8, ptr %0, i64 56
  %341 = getelementptr inbounds i8, ptr %0, i64 64
  %342 = getelementptr inbounds i8, ptr %0, i64 72
  %343 = zext i1 %337 to i64
  br label %345

._crit_edge556:                                   ; preds = %.loopexit524, %335
  %.0266.lcssa = phi i32 [ 0, %335 ], [ %.4, %.loopexit524 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  store double 0.000000e+00, ptr %50, align 8, !tbaa !18
  %344 = icmp eq i32 %1, 2
  br i1 %344, label %519, label %851

345:                                              ; preds = %.lr.ph555, %.loopexit524
  %indvars.iv602 = phi i64 [ 0, %.lr.ph555 ], [ %indvars.iv.next603, %.loopexit524 ]
  %.0266553 = phi i32 [ 0, %.lr.ph555 ], [ %.4, %.loopexit524 ]
  %346 = load double, ptr %340, align 8, !tbaa !20
  %347 = getelementptr inbounds double, ptr %111, i64 %indvars.iv602
  %348 = load double, ptr %347, align 8, !tbaa !18
  %349 = call double @llvm.fabs.f64(double %348)
  %350 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef 1.000000e+00, double noundef %349)
  %351 = fmul double %346, %350
  %352 = load double, ptr %347, align 8, !tbaa !18
  %353 = fadd double %352, %351
  %354 = getelementptr inbounds double, ptr %328, i64 %indvars.iv602
  store double %353, ptr %354, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  %355 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %356 = load i32, ptr %8, align 4, !tbaa !8
  %357 = load ptr, ptr %355, align 8, !tbaa !5
  %358 = getelementptr inbounds i8, ptr %357, i64 56
  %359 = load ptr, ptr %358, align 8
  %360 = call noundef zeroext i1 %359(ptr noundef nonnull align 8 dereferenceable(12) %355, i32 noundef %356, ptr noundef nonnull %328, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(8) %39)
  br i1 %360, label %384, label %361

361:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %362 unwind label %371

362:                                              ; preds = %361
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  %363 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.1)
          to label %364 unwind label %373

364:                                              ; preds = %362
  %365 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.69)
          to label %366 unwind label %373

366:                                              ; preds = %364
  %367 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %368 unwind label %.thread496

368:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %369 unwind label %376

369:                                              ; preds = %368
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %367, ptr noundef nonnull %42, ptr noundef nonnull %43, i32 noundef 1704)
          to label %370 unwind label %378

370:                                              ; preds = %369
  invoke void @__cxa_throw(ptr nonnull %367, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %378

371:                                              ; preds = %361
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  br label %383

373:                                              ; preds = %364, %362
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %382

.thread496:                                       ; preds = %366
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %381

376:                                              ; preds = %368
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %380

378:                                              ; preds = %370, %369
  %.0383 = phi i1 [ false, %370 ], [ true, %369 ]
  %379 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %380

380:                                              ; preds = %376, %378
  %.1384 = phi i1 [ %.0383, %378 ], [ true, %376 ]
  %.pn457 = phi { ptr, i32 } [ %379, %378 ], [ %377, %376 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br i1 %.1384, label %381, label %382

381:                                              ; preds = %.thread496, %380
  %.pn457.pn499 = phi { ptr, i32 } [ %375, %.thread496 ], [ %.pn457, %380 ]
  call void @__cxa_free_exception(ptr %367) #8
  br label %382

382:                                              ; preds = %380, %381, %373
  %.pn457.pn.pn = phi { ptr, i32 } [ %.pn457.pn499, %381 ], [ %.pn457, %380 ], [ %374, %373 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %383

383:                                              ; preds = %382, %371
  %.pn457.pn.pn.pn = phi { ptr, i32 } [ %.pn457.pn.pn, %382 ], [ %372, %371 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #8
  br label %518

384:                                              ; preds = %345
  %385 = load double, ptr %39, align 8, !tbaa !18
  %386 = load double, ptr %13, align 8, !tbaa !18
  %387 = fsub double %385, %386
  %388 = fdiv double %387, %351
  %389 = getelementptr inbounds double, ptr %195, i64 %indvars.iv602
  %390 = load double, ptr %389, align 8, !tbaa !18
  %391 = fsub double %388, %390
  %392 = call double @llvm.fabs.f64(double %391)
  %393 = call double @llvm.fabs.f64(double %388)
  %394 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %393, double noundef 1.000000e+00)
  %395 = fdiv double %392, %394
  %396 = load double, ptr %341, align 8, !tbaa !36
  %397 = fcmp oge double %395, %396
  %.0379 = select i1 %397, i32 42, i32 32
  %398 = zext i1 %397 to i32
  %.1267 = add nsw i32 %.0266553, %398
  br i1 %397, label %402, label %399

399:                                              ; preds = %384
  %400 = load i8, ptr %342, align 8, !tbaa !37, !range !38, !noundef !39
  %401 = trunc nuw i8 %400 to i1
  br i1 %401, label %402, label %406

402:                                              ; preds = %399, %384
  %403 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73)
  %404 = add nuw nsw i64 %indvars.iv602, %343
  %405 = trunc nuw nsw i64 %404 to i32
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %403, i32 noundef 2, i32 noundef 12, ptr noundef nonnull @.str.70, i32 noundef %.0379, i32 noundef %405, double noundef %390, double noundef %388, double noundef %395)
  br label %406

406:                                              ; preds = %402, %399
  %407 = load i32, ptr %9, align 4, !tbaa !8
  %408 = icmp sgt i32 %407, 0
  br i1 %408, label %409, label %.loopexit524

409:                                              ; preds = %406
  %410 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %411 = load i32, ptr %8, align 4, !tbaa !8
  %412 = load i32, ptr %9, align 4, !tbaa !8
  %413 = load ptr, ptr %410, align 8, !tbaa !5
  %414 = getelementptr inbounds i8, ptr %413, i64 72
  %415 = load ptr, ptr %414, align 8
  %416 = call noundef zeroext i1 %415(ptr noundef nonnull align 8 dereferenceable(12) %410, i32 noundef %411, ptr noundef nonnull %328, i1 noundef zeroext false, i32 noundef %412, ptr noundef %.0390)
  br i1 %416, label %.preheader523, label %421

.preheader523:                                    ; preds = %409
  %417 = load i32, ptr %9, align 4, !tbaa !8
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %.lr.ph549, label %.loopexit524

.lr.ph549:                                        ; preds = %.preheader523
  %419 = add nuw nsw i64 %indvars.iv602, %343
  %420 = trunc nuw nsw i64 %419 to i32
  br label %444

421:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %422 unwind label %431

422:                                              ; preds = %421
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  %423 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.1)
          to label %424 unwind label %433

424:                                              ; preds = %422
  %425 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.65)
          to label %426 unwind label %433

426:                                              ; preds = %424
  %427 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %428 unwind label %.thread500

428:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %429 unwind label %436

429:                                              ; preds = %428
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %427, ptr noundef nonnull %47, ptr noundef nonnull %48, i32 noundef 1726)
          to label %430 unwind label %438

430:                                              ; preds = %429
  invoke void @__cxa_throw(ptr nonnull %427, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %438

431:                                              ; preds = %421
  %432 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  br label %443

433:                                              ; preds = %424, %422
  %434 = landingpad { ptr, i32 }
          cleanup
  br label %442

.thread500:                                       ; preds = %426
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %441

436:                                              ; preds = %428
  %437 = landingpad { ptr, i32 }
          cleanup
  br label %440

438:                                              ; preds = %430, %429
  %.0376 = phi i1 [ false, %430 ], [ true, %429 ]
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %440

440:                                              ; preds = %436, %438
  %.1377 = phi i1 [ %.0376, %438 ], [ true, %436 ]
  %.pn462 = phi { ptr, i32 } [ %439, %438 ], [ %437, %436 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br i1 %.1377, label %441, label %442

441:                                              ; preds = %.thread500, %440
  %.pn462.pn503 = phi { ptr, i32 } [ %435, %.thread500 ], [ %.pn462, %440 ]
  call void @__cxa_free_exception(ptr %427) #8
  br label %442

442:                                              ; preds = %440, %441, %433
  %.pn462.pn.pn = phi { ptr, i32 } [ %.pn462.pn503, %441 ], [ %.pn462, %440 ], [ %434, %433 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %443

443:                                              ; preds = %442, %431
  %.pn462.pn.pn.pn = phi { ptr, i32 } [ %.pn462.pn.pn, %442 ], [ %432, %431 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  br label %518

444:                                              ; preds = %.lr.ph549, %510
  %indvars.iv599 = phi i64 [ 0, %.lr.ph549 ], [ %indvars.iv.next600, %510 ]
  %.2548 = phi i32 [ %.1267, %.lr.ph549 ], [ %.3, %510 ]
  %445 = getelementptr inbounds double, ptr %.0390, i64 %indvars.iv599
  %446 = load double, ptr %445, align 8, !tbaa !18
  %447 = getelementptr inbounds double, ptr %.0361, i64 %indvars.iv599
  %448 = load double, ptr %447, align 8, !tbaa !18
  %449 = fsub double %446, %448
  %450 = fdiv double %449, %351
  %451 = load i32, ptr %10, align 4, !tbaa !8
  %452 = icmp sgt i32 %451, 0
  br i1 %452, label %.lr.ph545.preheader, label %._crit_edge

.lr.ph545.preheader:                              ; preds = %444
  %wide.trip.count597 = zext nneg i32 %451 to i64
  %xtraiter = and i64 %wide.trip.count597, 1
  %453 = icmp eq i32 %451, 1
  br i1 %453, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph545.preheader.new

.lr.ph545.preheader.new:                          ; preds = %.lr.ph545.preheader
  %unroll_iter = and i64 %wide.trip.count597, 2147483646
  br label %.lr.ph545

._crit_edge.loopexit.unr-lcssa:                   ; preds = %501, %.lr.ph545.preheader
  %.1382.lcssa.ph = phi double [ poison, %.lr.ph545.preheader ], [ %.1382.1, %501 ]
  %.1374.lcssa.ph = phi i1 [ poison, %.lr.ph545.preheader ], [ %.1374.1, %501 ]
  %indvars.iv595.unr = phi i64 [ 0, %.lr.ph545.preheader ], [ %indvars.iv.next596.1, %501 ]
  %.0373543.unr = phi i1 [ false, %.lr.ph545.preheader ], [ %.1374.1, %501 ]
  %.0381542.unr = phi double [ 0.000000e+00, %.lr.ph545.preheader ], [ %.1382.1, %501 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph545.epil

.lr.ph545.epil:                                   ; preds = %._crit_edge.loopexit.unr-lcssa
  %454 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv595.unr
  %455 = load i32, ptr %454, align 4, !tbaa !8
  %456 = zext i32 %455 to i64
  %457 = icmp eq i64 %indvars.iv599, %456
  br i1 %457, label %458, label %._crit_edge

458:                                              ; preds = %.lr.ph545.epil
  %459 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv595.unr
  %460 = load i32, ptr %459, align 4, !tbaa !8
  %461 = zext i32 %460 to i64
  %462 = icmp eq i64 %indvars.iv602, %461
  br i1 %462, label %463, label %._crit_edge

463:                                              ; preds = %458
  %464 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv595.unr
  %465 = load double, ptr %464, align 8, !tbaa !18
  %466 = fadd double %.0381542.unr, %465
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %463, %458, %.lr.ph545.epil, %444
  %.0381.lcssa = phi double [ 0.000000e+00, %444 ], [ %.1382.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %466, %463 ], [ %.0381542.unr, %458 ], [ %.0381542.unr, %.lr.ph545.epil ]
  %.0373.lcssa = phi i1 [ false, %444 ], [ %.1374.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ true, %463 ], [ %.0373543.unr, %458 ], [ %.0373543.unr, %.lr.ph545.epil ]
  %467 = fsub double %450, %.0381.lcssa
  %468 = call double @llvm.fabs.f64(double %467)
  %469 = call double @llvm.fabs.f64(double %450)
  %470 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %469, double noundef 1.000000e+00)
  %471 = fdiv double %468, %470
  %472 = load double, ptr %341, align 8, !tbaa !36
  %473 = fcmp oge double %471, %472
  %.1380 = select i1 %473, i32 42, i32 32
  %474 = zext i1 %473 to i32
  %.3 = add nsw i32 %.2548, %474
  br i1 %473, label %505, label %502

.lr.ph545:                                        ; preds = %501, %.lr.ph545.preheader.new
  %indvars.iv595 = phi i64 [ 0, %.lr.ph545.preheader.new ], [ %indvars.iv.next596.1, %501 ]
  %.0373543 = phi i1 [ false, %.lr.ph545.preheader.new ], [ %.1374.1, %501 ]
  %.0381542 = phi double [ 0.000000e+00, %.lr.ph545.preheader.new ], [ %.1382.1, %501 ]
  %niter = phi i64 [ 0, %.lr.ph545.preheader.new ], [ %niter.next.1, %501 ]
  %475 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv595
  %476 = load i32, ptr %475, align 4, !tbaa !8
  %477 = zext i32 %476 to i64
  %478 = icmp eq i64 %indvars.iv599, %477
  br i1 %478, label %479, label %.lr.ph545.1

479:                                              ; preds = %.lr.ph545
  %480 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv595
  %481 = load i32, ptr %480, align 4, !tbaa !8
  %482 = zext i32 %481 to i64
  %483 = icmp eq i64 %indvars.iv602, %482
  br i1 %483, label %484, label %.lr.ph545.1

484:                                              ; preds = %479
  %485 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv595
  %486 = load double, ptr %485, align 8, !tbaa !18
  %487 = fadd double %.0381542, %486
  br label %.lr.ph545.1

.lr.ph545.1:                                      ; preds = %.lr.ph545, %479, %484
  %.1382 = phi double [ %487, %484 ], [ %.0381542, %479 ], [ %.0381542, %.lr.ph545 ]
  %.1374 = phi i1 [ true, %484 ], [ %.0373543, %479 ], [ %.0373543, %.lr.ph545 ]
  %indvars.iv.next596 = or disjoint i64 %indvars.iv595, 1
  %488 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv.next596
  %489 = load i32, ptr %488, align 4, !tbaa !8
  %490 = zext i32 %489 to i64
  %491 = icmp eq i64 %indvars.iv599, %490
  br i1 %491, label %492, label %501

492:                                              ; preds = %.lr.ph545.1
  %493 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv.next596
  %494 = load i32, ptr %493, align 4, !tbaa !8
  %495 = zext i32 %494 to i64
  %496 = icmp eq i64 %indvars.iv602, %495
  br i1 %496, label %497, label %501

497:                                              ; preds = %492
  %498 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv.next596
  %499 = load double, ptr %498, align 8, !tbaa !18
  %500 = fadd double %.1382, %499
  br label %501

501:                                              ; preds = %497, %492, %.lr.ph545.1
  %.1382.1 = phi double [ %500, %497 ], [ %.1382, %492 ], [ %.1382, %.lr.ph545.1 ]
  %.1374.1 = phi i1 [ true, %497 ], [ %.1374, %492 ], [ %.1374, %.lr.ph545.1 ]
  %indvars.iv.next596.1 = add nuw nsw i64 %indvars.iv595, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph545, !llvm.loop !40

502:                                              ; preds = %._crit_edge
  %503 = load i8, ptr %342, align 8, !tbaa !37, !range !38, !noundef !39
  %504 = trunc nuw i8 %503 to i1
  br i1 %504, label %505, label %510

505:                                              ; preds = %502, %._crit_edge
  %506 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73)
  %507 = add nuw nsw i64 %indvars.iv599, %343
  %508 = select i1 %.0373.lcssa, i32 118, i32 32
  %509 = trunc nuw nsw i64 %507 to i32
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %506, i32 noundef 2, i32 noundef 12, ptr noundef nonnull @.str.71, i32 noundef %.1380, i32 noundef %509, i32 noundef %420, double noundef %.0381.lcssa, i32 noundef %508, double noundef %450, double noundef %471)
  br label %510

510:                                              ; preds = %505, %502
  %indvars.iv.next600 = add nuw nsw i64 %indvars.iv599, 1
  %511 = load i32, ptr %9, align 4, !tbaa !8
  %512 = sext i32 %511 to i64
  %513 = icmp slt i64 %indvars.iv.next600, %512
  br i1 %513, label %444, label %.loopexit524, !llvm.loop !41

.loopexit524:                                     ; preds = %510, %.preheader523, %406
  %.4 = phi i32 [ %.1267, %406 ], [ %.1267, %.preheader523 ], [ %.3, %510 ]
  %514 = load double, ptr %347, align 8, !tbaa !18
  store double %514, ptr %354, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  %indvars.iv.next603 = add nuw nsw i64 %indvars.iv602, 1
  %515 = load i32, ptr %8, align 4, !tbaa !8
  %516 = sext i32 %515 to i64
  %517 = icmp slt i64 %indvars.iv.next603, %516
  br i1 %517, label %345, label %._crit_edge556, !llvm.loop !42

518:                                              ; preds = %443, %383
  %.pn462.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn462.pn.pn.pn, %443 ], [ %.pn457.pn.pn.pn, %383 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %872

519:                                              ; preds = %._crit_edge556
  %520 = load i32, ptr %11, align 4, !tbaa !8
  %521 = sext i32 %520 to i64
  %522 = icmp slt i32 %520, 0
  %523 = shl nsw i64 %521, 2
  %524 = select i1 %522, i64 -1, i64 %523
  %525 = call noalias noundef nonnull ptr @_Znam(i64 noundef %524) #10
  %526 = call noalias noundef nonnull ptr @_Znam(i64 noundef %524) #10
  %527 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %528 = load i32, ptr %8, align 4, !tbaa !8
  %529 = load i32, ptr %9, align 4, !tbaa !8
  %530 = load i32, ptr %11, align 4, !tbaa !8
  %531 = load ptr, ptr %527, align 8, !tbaa !5
  %532 = getelementptr inbounds i8, ptr %531, i64 88
  %533 = load ptr, ptr %532, align 8
  %534 = call noundef zeroext i1 %533(ptr noundef nonnull align 8 dereferenceable(12) %527, i32 noundef %528, ptr noundef null, i1 noundef zeroext false, double noundef 0.000000e+00, i32 noundef %529, ptr noundef null, i1 noundef zeroext false, i32 noundef %530, ptr noundef nonnull %525, ptr noundef nonnull %526, ptr noundef null)
  br i1 %534, label %558, label %535

535:                                              ; preds = %519
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %536 unwind label %545

536:                                              ; preds = %535
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #8
  %537 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.1)
          to label %538 unwind label %547

538:                                              ; preds = %536
  %539 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.72)
          to label %540 unwind label %547

540:                                              ; preds = %538
  %541 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %542 unwind label %.thread504

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %543 unwind label %550

543:                                              ; preds = %542
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %541, ptr noundef nonnull %53, ptr noundef nonnull %54, i32 noundef 1768)
          to label %544 unwind label %552

544:                                              ; preds = %543
  invoke void @__cxa_throw(ptr nonnull %541, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %552

545:                                              ; preds = %535
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #8
  br label %557

547:                                              ; preds = %538, %536
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %556

.thread504:                                       ; preds = %540
  %549 = landingpad { ptr, i32 }
          cleanup
  br label %555

550:                                              ; preds = %542
  %551 = landingpad { ptr, i32 }
          cleanup
  br label %554

552:                                              ; preds = %544, %543
  %.0363 = phi i1 [ false, %544 ], [ true, %543 ]
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %554

554:                                              ; preds = %550, %552
  %.1364 = phi i1 [ %.0363, %552 ], [ true, %550 ]
  %.pn434 = phi { ptr, i32 } [ %553, %552 ], [ %551, %550 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br i1 %.1364, label %555, label %556

555:                                              ; preds = %.thread504, %554
  %.pn434.pn507 = phi { ptr, i32 } [ %549, %.thread504 ], [ %.pn434, %554 ]
  call void @__cxa_free_exception(ptr %541) #8
  br label %556

556:                                              ; preds = %554, %555, %547
  %.pn434.pn.pn = phi { ptr, i32 } [ %.pn434.pn507, %555 ], [ %.pn434, %554 ], [ %548, %547 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %557

557:                                              ; preds = %556, %545
  %.pn434.pn.pn.pn = phi { ptr, i32 } [ %.pn434.pn.pn, %556 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  br label %850

558:                                              ; preds = %519
  %559 = load i32, ptr %12, align 4, !tbaa !11
  %560 = icmp eq i32 %559, 1
  %.pre633 = load i32, ptr %11, align 4, !tbaa !8
  %561 = icmp sgt i32 %.pre633, 0
  %or.cond642 = select i1 %560, i1 %561, i1 false
  br i1 %or.cond642, label %.lr.ph560.preheader, label %.loopexit522

.lr.ph560.preheader:                              ; preds = %558
  %wide.trip.count608 = zext nneg i32 %.pre633 to i64
  %min.iters.check651 = icmp ult i32 %.pre633, 8
  br i1 %min.iters.check651, label %.lr.ph560.preheader666, label %vector.ph652

vector.ph652:                                     ; preds = %.lr.ph560.preheader
  %n.vec654 = and i64 %wide.trip.count608, 2147483640
  br label %vector.body656

vector.body656:                                   ; preds = %vector.body656, %vector.ph652
  %index657 = phi i64 [ 0, %vector.ph652 ], [ %index.next662, %vector.body656 ]
  %562 = getelementptr inbounds i32, ptr %525, i64 %index657
  %563 = getelementptr inbounds i8, ptr %562, i64 16
  %wide.load658 = load <4 x i32>, ptr %562, align 4, !tbaa !8
  %wide.load659 = load <4 x i32>, ptr %563, align 4, !tbaa !8
  %564 = add nsw <4 x i32> %wide.load658, <i32 -1, i32 -1, i32 -1, i32 -1>
  %565 = add nsw <4 x i32> %wide.load659, <i32 -1, i32 -1, i32 -1, i32 -1>
  store <4 x i32> %564, ptr %562, align 4, !tbaa !8
  store <4 x i32> %565, ptr %563, align 4, !tbaa !8
  %566 = getelementptr inbounds i32, ptr %526, i64 %index657
  %567 = getelementptr inbounds i8, ptr %566, i64 16
  %wide.load660 = load <4 x i32>, ptr %566, align 4, !tbaa !8
  %wide.load661 = load <4 x i32>, ptr %567, align 4, !tbaa !8
  %568 = add nsw <4 x i32> %wide.load660, <i32 -1, i32 -1, i32 -1, i32 -1>
  %569 = add nsw <4 x i32> %wide.load661, <i32 -1, i32 -1, i32 -1, i32 -1>
  store <4 x i32> %568, ptr %566, align 4, !tbaa !8
  store <4 x i32> %569, ptr %567, align 4, !tbaa !8
  %index.next662 = add nuw i64 %index657, 8
  %570 = icmp eq i64 %index.next662, %n.vec654
  br i1 %570, label %middle.block649, label %vector.body656, !llvm.loop !43

middle.block649:                                  ; preds = %vector.body656
  %cmp.n663 = icmp eq i64 %n.vec654, %wide.trip.count608
  br i1 %cmp.n663, label %.loopexit522, label %.lr.ph560.preheader666

.lr.ph560.preheader666:                           ; preds = %middle.block649, %.lr.ph560.preheader
  %indvars.iv605.ph = phi i64 [ 0, %.lr.ph560.preheader ], [ %n.vec654, %middle.block649 ]
  br label %.lr.ph560

.lr.ph560:                                        ; preds = %.lr.ph560.preheader666, %.lr.ph560
  %indvars.iv605 = phi i64 [ %indvars.iv.next606, %.lr.ph560 ], [ %indvars.iv605.ph, %.lr.ph560.preheader666 ]
  %571 = getelementptr inbounds i32, ptr %525, i64 %indvars.iv605
  %572 = load i32, ptr %571, align 4, !tbaa !8
  %573 = add nsw i32 %572, -1
  store i32 %573, ptr %571, align 4, !tbaa !8
  %574 = getelementptr inbounds i32, ptr %526, i64 %indvars.iv605
  %575 = load i32, ptr %574, align 4, !tbaa !8
  %576 = add nsw i32 %575, -1
  store i32 %576, ptr %574, align 4, !tbaa !8
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605, 1
  %exitcond609.not = icmp eq i64 %indvars.iv.next606, %wide.trip.count608
  br i1 %exitcond609.not, label %.loopexit522, label %.lr.ph560, !llvm.loop !44

.loopexit522:                                     ; preds = %.lr.ph560, %middle.block649, %558
  %577 = sext i32 %.pre633 to i64
  %578 = icmp slt i32 %.pre633, 0
  %579 = shl nsw i64 %577, 3
  %580 = select i1 %578, i64 -1, i64 %579
  %581 = call noalias noundef nonnull ptr @_Znam(i64 noundef %580) #10
  %582 = load i32, ptr %9, align 4, !tbaa !8
  %583 = icmp sgt i32 %582, 0
  br i1 %583, label %584, label %588

584:                                              ; preds = %.loopexit522
  %585 = zext nneg i32 %582 to i64
  %586 = shl nuw nsw i64 %585, 3
  %587 = call noalias noundef nonnull ptr @_Znam(i64 noundef %586) #10
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %582, ptr noundef nonnull %50, i32 noundef 0, ptr noundef nonnull %587, i32 noundef 1)
  %.pre634 = load i32, ptr %9, align 4, !tbaa !8
  br label %588

588:                                              ; preds = %584, %.loopexit522
  %589 = phi i32 [ %.pre634, %584 ], [ %582, %.loopexit522 ]
  %.0360 = phi ptr [ %587, %584 ], [ null, %.loopexit522 ]
  %590 = load i32, ptr %8, align 4, !tbaa !8
  %591 = sext i32 %590 to i64
  %592 = icmp slt i32 %590, 0
  %593 = shl nsw i64 %591, 3
  %594 = select i1 %592, i64 -1, i64 %593
  %595 = call noalias noundef nonnull ptr @_Znam(i64 noundef %594) #10
  %596 = call noalias noundef nonnull ptr @_Znam(i64 noundef %594) #10
  %597 = load i32, ptr %10, align 4, !tbaa !8
  %598 = sext i32 %597 to i64
  %599 = icmp slt i32 %597, 0
  %600 = shl nsw i64 %598, 3
  %601 = select i1 %599, i64 -1, i64 %600
  %602 = call noalias noundef nonnull ptr @_Znam(i64 noundef %601) #10
  %603 = icmp sgt i32 %589, -1
  br i1 %603, label %.lr.ph590, label %._crit_edge591

.lr.ph590:                                        ; preds = %588
  %604 = getelementptr inbounds i8, ptr %0, i64 56
  %605 = getelementptr inbounds i8, ptr %0, i64 64
  %606 = getelementptr inbounds i8, ptr %0, i64 72
  %607 = zext i1 %337 to i64
  %608 = zext i1 %337 to i64
  br label %609

609:                                              ; preds = %.lr.ph590, %843
  %610 = phi i32 [ %590, %.lr.ph590 ], [ %692, %843 ]
  %indvars.iv630 = phi i64 [ -1, %.lr.ph590 ], [ %indvars.iv.next631, %843 ]
  %.5588 = phi i32 [ %.0266.lcssa, %.lr.ph590 ], [ %.6.lcssa, %843 ]
  %611 = icmp eq i64 %indvars.iv630, -1
  br i1 %611, label %612, label %613

612:                                              ; preds = %609
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %610, ptr noundef nonnull %195, i32 noundef 1, ptr noundef nonnull %595, i32 noundef 1)
  br label %.loopexit520

613:                                              ; preds = %609
  %614 = getelementptr inbounds double, ptr %.0360, i64 %indvars.iv630
  store double 1.000000e+00, ptr %614, align 8, !tbaa !18
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %610, ptr noundef nonnull %50, i32 noundef 0, ptr noundef nonnull %595, i32 noundef 1)
  %615 = load i32, ptr %10, align 4, !tbaa !8
  %616 = icmp sgt i32 %615, 0
  br i1 %616, label %.lr.ph563.preheader, label %.loopexit520

.lr.ph563.preheader:                              ; preds = %613
  %wide.trip.count613 = zext nneg i32 %615 to i64
  %617 = trunc nsw i64 %indvars.iv630 to i32
  %xtraiter670 = and i64 %wide.trip.count613, 1
  %618 = icmp eq i32 %615, 1
  br i1 %618, label %.loopexit520.loopexit.unr-lcssa, label %.lr.ph563.preheader.new

.lr.ph563.preheader.new:                          ; preds = %.lr.ph563.preheader
  %unroll_iter672 = and i64 %wide.trip.count613, 2147483646
  br label %.lr.ph563

.lr.ph563:                                        ; preds = %643, %.lr.ph563.preheader.new
  %indvars.iv610 = phi i64 [ 0, %.lr.ph563.preheader.new ], [ %indvars.iv.next611.1, %643 ]
  %niter673 = phi i64 [ 0, %.lr.ph563.preheader.new ], [ %niter673.next.1, %643 ]
  %619 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv610
  %620 = load i32, ptr %619, align 4, !tbaa !8
  %621 = icmp eq i32 %620, %617
  br i1 %621, label %622, label %.lr.ph563.1

622:                                              ; preds = %.lr.ph563
  %623 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv610
  %624 = load double, ptr %623, align 8, !tbaa !18
  %625 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv610
  %626 = load i32, ptr %625, align 4, !tbaa !8
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %595, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !18
  %630 = fadd double %624, %629
  store double %630, ptr %628, align 8, !tbaa !18
  br label %.lr.ph563.1

.lr.ph563.1:                                      ; preds = %.lr.ph563, %622
  %indvars.iv.next611 = or disjoint i64 %indvars.iv610, 1
  %631 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv.next611
  %632 = load i32, ptr %631, align 4, !tbaa !8
  %633 = icmp eq i32 %632, %617
  br i1 %633, label %634, label %643

634:                                              ; preds = %.lr.ph563.1
  %635 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv.next611
  %636 = load double, ptr %635, align 8, !tbaa !18
  %637 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv.next611
  %638 = load i32, ptr %637, align 4, !tbaa !8
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %595, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !18
  %642 = fadd double %636, %641
  store double %642, ptr %640, align 8, !tbaa !18
  br label %643

643:                                              ; preds = %634, %.lr.ph563.1
  %indvars.iv.next611.1 = add nuw nsw i64 %indvars.iv610, 2
  %niter673.next.1 = add i64 %niter673, 2
  %niter673.ncmp.1 = icmp eq i64 %niter673.next.1, %unroll_iter672
  br i1 %niter673.ncmp.1, label %.loopexit520.loopexit.unr-lcssa, label %.lr.ph563, !llvm.loop !45

.loopexit520.loopexit.unr-lcssa:                  ; preds = %643, %.lr.ph563.preheader
  %indvars.iv610.unr = phi i64 [ 0, %.lr.ph563.preheader ], [ %indvars.iv.next611.1, %643 ]
  %lcmp.mod671.not = icmp eq i64 %xtraiter670, 0
  br i1 %lcmp.mod671.not, label %.loopexit520, label %.lr.ph563.epil

.lr.ph563.epil:                                   ; preds = %.loopexit520.loopexit.unr-lcssa
  %644 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv610.unr
  %645 = load i32, ptr %644, align 4, !tbaa !8
  %646 = icmp eq i32 %645, %617
  br i1 %646, label %647, label %.loopexit520

647:                                              ; preds = %.lr.ph563.epil
  %648 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv610.unr
  %649 = load double, ptr %648, align 8, !tbaa !18
  %650 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv610.unr
  %651 = load i32, ptr %650, align 4, !tbaa !8
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %595, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !18
  %655 = fadd double %649, %654
  store double %655, ptr %653, align 8, !tbaa !18
  br label %.loopexit520

.loopexit520:                                     ; preds = %.loopexit520.loopexit.unr-lcssa, %647, %.lr.ph563.epil, %613, %612
  %.0348 = phi double [ 1.000000e+00, %612 ], [ 0.000000e+00, %613 ], [ 0.000000e+00, %.lr.ph563.epil ], [ 0.000000e+00, %647 ], [ 0.000000e+00, %.loopexit520.loopexit.unr-lcssa ]
  %656 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %657 = load i32, ptr %8, align 4, !tbaa !8
  %658 = load i32, ptr %9, align 4, !tbaa !8
  %659 = load i32, ptr %11, align 4, !tbaa !8
  %660 = load ptr, ptr %656, align 8, !tbaa !5
  %661 = getelementptr inbounds i8, ptr %660, i64 88
  %662 = load ptr, ptr %661, align 8
  %663 = call noundef zeroext i1 %662(ptr noundef nonnull align 8 dereferenceable(12) %656, i32 noundef %657, ptr noundef nonnull %111, i1 noundef zeroext true, double noundef %.0348, i32 noundef %658, ptr noundef %.0360, i1 noundef zeroext true, i32 noundef %659, ptr noundef null, ptr noundef null, ptr noundef nonnull %581)
  br i1 %663, label %.preheader, label %669

.preheader:                                       ; preds = %.loopexit520
  %664 = load i32, ptr %8, align 4, !tbaa !8
  %665 = icmp sgt i32 %664, 0
  br i1 %665, label %.lr.ph583, label %._crit_edge584

.lr.ph583:                                        ; preds = %.preheader
  %666 = add nuw nsw i64 %indvars.iv630, %608
  %667 = trunc nsw i64 %indvars.iv630 to i32
  %668 = trunc nsw i64 %666 to i32
  br label %694

669:                                              ; preds = %.loopexit520
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %670 unwind label %679

670:                                              ; preds = %669
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #8
  %671 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.1)
          to label %672 unwind label %681

672:                                              ; preds = %670
  %673 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.73)
          to label %674 unwind label %681

674:                                              ; preds = %672
  %675 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %676 unwind label %.thread508

676:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %677 unwind label %684

677:                                              ; preds = %676
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %675, ptr noundef nonnull %58, ptr noundef nonnull %59, i32 noundef 1811)
          to label %678 unwind label %686

678:                                              ; preds = %677
  invoke void @__cxa_throw(ptr nonnull %675, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %686

679:                                              ; preds = %669
  %680 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #8
  br label %691

681:                                              ; preds = %672, %670
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %690

.thread508:                                       ; preds = %674
  %683 = landingpad { ptr, i32 }
          cleanup
  br label %689

684:                                              ; preds = %676
  %685 = landingpad { ptr, i32 }
          cleanup
  br label %688

686:                                              ; preds = %678, %677
  %.0287 = phi i1 [ false, %678 ], [ true, %677 ]
  %687 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %688

688:                                              ; preds = %684, %686
  %.pn439 = phi { ptr, i32 } [ %687, %686 ], [ %685, %684 ]
  %.1288 = phi i1 [ %.0287, %686 ], [ true, %684 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br i1 %.1288, label %689, label %690

689:                                              ; preds = %.thread508, %688
  %.pn439.pn511 = phi { ptr, i32 } [ %683, %.thread508 ], [ %.pn439, %688 ]
  call void @__cxa_free_exception(ptr %675) #8
  br label %690

690:                                              ; preds = %688, %689, %681
  %.pn439.pn.pn = phi { ptr, i32 } [ %.pn439.pn511, %689 ], [ %.pn439, %688 ], [ %682, %681 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %691

691:                                              ; preds = %690, %679
  %.pn439.pn.pn.pn = phi { ptr, i32 } [ %.pn439.pn.pn, %690 ], [ %680, %679 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #8
  br label %850

._crit_edge584:                                   ; preds = %._crit_edge579, %.preheader
  %692 = phi i32 [ %664, %.preheader ], [ %792, %._crit_edge579 ]
  %.6.lcssa = phi i32 [ %.5588, %.preheader ], [ %.7.lcssa, %._crit_edge579 ]
  %693 = icmp sgt i64 %indvars.iv630, -1
  br i1 %693, label %841, label %843

694:                                              ; preds = %.lr.ph583, %._crit_edge579
  %indvars.iv627 = phi i64 [ 0, %.lr.ph583 ], [ %indvars.iv.next628, %._crit_edge579 ]
  %.6582 = phi i32 [ %.5588, %.lr.ph583 ], [ %.7.lcssa, %._crit_edge579 ]
  %695 = load double, ptr %604, align 8, !tbaa !20
  %696 = getelementptr inbounds double, ptr %111, i64 %indvars.iv627
  %697 = load double, ptr %696, align 8, !tbaa !18
  %698 = call double @llvm.fabs.f64(double %697)
  %699 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef 1.000000e+00, double noundef %698)
  %700 = fmul double %695, %699
  %701 = load double, ptr %696, align 8, !tbaa !18
  %702 = fadd double %701, %700
  %703 = getelementptr inbounds double, ptr %328, i64 %indvars.iv627
  store double %702, ptr %703, align 8, !tbaa !18
  %704 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrINS_4TNLPEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100)
  %705 = load i32, ptr %8, align 4, !tbaa !8
  br i1 %611, label %706, label %734

706:                                              ; preds = %694
  %707 = load ptr, ptr %704, align 8, !tbaa !5
  %708 = getelementptr inbounds i8, ptr %707, i64 64
  %709 = load ptr, ptr %708, align 8
  %710 = call noundef zeroext i1 %709(ptr noundef nonnull align 8 dereferenceable(12) %704, i32 noundef %705, ptr noundef nonnull %328, i1 noundef zeroext true, ptr noundef nonnull %596)
  br i1 %710, label %.loopexit, label %711

711:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %712 unwind label %721

712:                                              ; preds = %711
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #8
  %713 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.1)
          to label %714 unwind label %723

714:                                              ; preds = %712
  %715 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.74)
          to label %716 unwind label %723

716:                                              ; preds = %714
  %717 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %718 unwind label %.thread512

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

719:                                              ; preds = %718
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %717, ptr noundef nonnull %63, ptr noundef nonnull %64, i32 noundef 1823)
          to label %720 unwind label %728

720:                                              ; preds = %719
  invoke void @__cxa_throw(ptr nonnull %717, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %728

721:                                              ; preds = %711
  %722 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #8
  br label %733

723:                                              ; preds = %714, %712
  %724 = landingpad { ptr, i32 }
          cleanup
  br label %732

.thread512:                                       ; preds = %716
  %725 = landingpad { ptr, i32 }
          cleanup
  br label %731

726:                                              ; preds = %718
  %727 = landingpad { ptr, i32 }
          cleanup
  br label %730

728:                                              ; preds = %720, %719
  %.0273 = phi i1 [ false, %720 ], [ true, %719 ]
  %729 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %730

730:                                              ; preds = %726, %728
  %.pn449 = phi { ptr, i32 } [ %729, %728 ], [ %727, %726 ]
  %.1274 = phi i1 [ %.0273, %728 ], [ true, %726 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br i1 %.1274, label %731, label %732

731:                                              ; preds = %.thread512, %730
  %.pn449.pn515 = phi { ptr, i32 } [ %725, %.thread512 ], [ %.pn449, %730 ]
  call void @__cxa_free_exception(ptr %717) #8
  br label %732

732:                                              ; preds = %730, %731, %723
  %.pn449.pn.pn = phi { ptr, i32 } [ %.pn449.pn515, %731 ], [ %.pn449, %730 ], [ %724, %723 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %733

733:                                              ; preds = %732, %721
  %.pn449.pn.pn.pn = phi { ptr, i32 } [ %.pn449.pn.pn, %732 ], [ %722, %721 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #8
  br label %850

734:                                              ; preds = %694
  %735 = load i32, ptr %9, align 4, !tbaa !8
  %736 = load i32, ptr %10, align 4, !tbaa !8
  %737 = load ptr, ptr %704, align 8, !tbaa !5
  %738 = getelementptr inbounds i8, ptr %737, i64 80
  %739 = load ptr, ptr %738, align 8
  %740 = call noundef zeroext i1 %739(ptr noundef nonnull align 8 dereferenceable(12) %704, i32 noundef %705, ptr noundef nonnull %328, i1 noundef zeroext true, i32 noundef %735, i32 noundef %736, ptr noundef null, ptr noundef null, ptr noundef nonnull %602)
  br i1 %740, label %764, label %741

741:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @.str.63, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %742 unwind label %751

742:                                              ; preds = %741
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #8
  %743 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @.str.1)
          to label %744 unwind label %753

744:                                              ; preds = %742
  %745 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @.str.68)
          to label %746 unwind label %753

746:                                              ; preds = %744
  %747 = call ptr @__cxa_allocate_exception(i64 112) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %748 unwind label %.thread516

748:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %749 unwind label %756

749:                                              ; preds = %748
  invoke void @_ZN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_i(ptr noundef nonnull align 8 dereferenceable(112) %747, ptr noundef nonnull %68, ptr noundef nonnull %69, i32 noundef 1830)
          to label %750 unwind label %758

750:                                              ; preds = %749
  invoke void @__cxa_throw(ptr nonnull %747, ptr nonnull @_ZTIN10SimTKIpopt11TNLPAdapter29ERROR_IN_TNLP_DERIVATIVE_TESTE, ptr nonnull @_ZN10SimTKIpopt14IpoptExceptionD2Ev) #9
          to label %875 unwind label %758

751:                                              ; preds = %741
  %752 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %67) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #8
  br label %763

753:                                              ; preds = %744, %742
  %754 = landingpad { ptr, i32 }
          cleanup
  br label %762

.thread516:                                       ; preds = %746
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %761

756:                                              ; preds = %748
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %760

758:                                              ; preds = %750, %749
  %.0270 = phi i1 [ false, %750 ], [ true, %749 ]
  %759 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %760

760:                                              ; preds = %756, %758
  %.pn444 = phi { ptr, i32 } [ %759, %758 ], [ %757, %756 ]
  %.1271 = phi i1 [ %.0270, %758 ], [ true, %756 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  br i1 %.1271, label %761, label %762

761:                                              ; preds = %.thread516, %760
  %.pn444.pn519 = phi { ptr, i32 } [ %755, %.thread516 ], [ %.pn444, %760 ]
  call void @__cxa_free_exception(ptr %747) #8
  br label %762

762:                                              ; preds = %760, %761, %753
  %.pn444.pn.pn = phi { ptr, i32 } [ %.pn444.pn519, %761 ], [ %.pn444, %760 ], [ %754, %753 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %763

763:                                              ; preds = %762, %751
  %.pn444.pn.pn.pn = phi { ptr, i32 } [ %.pn444.pn.pn, %762 ], [ %752, %751 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  br label %850

764:                                              ; preds = %734
  %765 = load i32, ptr %8, align 4, !tbaa !8
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %765, ptr noundef nonnull %50, i32 noundef 0, ptr noundef nonnull %596, i32 noundef 1)
  %766 = load i32, ptr %8, align 4, !tbaa !8
  call void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef %766, ptr noundef nonnull %50, i32 noundef 0, ptr noundef nonnull %595, i32 noundef 1)
  %767 = load i32, ptr %10, align 4, !tbaa !8
  %768 = icmp sgt i32 %767, 0
  br i1 %768, label %.lr.ph566.preheader, label %.loopexit

.lr.ph566.preheader:                              ; preds = %764
  %wide.trip.count618 = zext nneg i32 %767 to i64
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader, %786
  %indvars.iv615 = phi i64 [ 0, %.lr.ph566.preheader ], [ %indvars.iv.next616, %786 ]
  %769 = getelementptr inbounds i32, ptr %.0391, i64 %indvars.iv615
  %770 = load i32, ptr %769, align 4, !tbaa !8
  %771 = icmp eq i32 %770, %667
  br i1 %771, label %772, label %786

772:                                              ; preds = %.lr.ph566
  %773 = getelementptr inbounds double, ptr %602, i64 %indvars.iv615
  %774 = load double, ptr %773, align 8, !tbaa !18
  %775 = getelementptr inbounds i32, ptr %.0400, i64 %indvars.iv615
  %776 = load i32, ptr %775, align 4, !tbaa !8
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %596, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !18
  %780 = fadd double %774, %779
  store double %780, ptr %778, align 8, !tbaa !18
  %781 = getelementptr inbounds double, ptr %.0399, i64 %indvars.iv615
  %782 = load double, ptr %781, align 8, !tbaa !18
  %783 = getelementptr inbounds double, ptr %595, i64 %777
  %784 = load double, ptr %783, align 8, !tbaa !18
  %785 = fadd double %782, %784
  store double %785, ptr %783, align 8, !tbaa !18
  br label %786

786:                                              ; preds = %.lr.ph566, %772
  %indvars.iv.next616 = add nuw nsw i64 %indvars.iv615, 1
  %exitcond619.not = icmp eq i64 %indvars.iv.next616, %wide.trip.count618
  br i1 %exitcond619.not, label %.loopexit, label %.lr.ph566, !llvm.loop !46

.loopexit:                                        ; preds = %786, %764, %706
  %787 = load i32, ptr %8, align 4, !tbaa !8
  %788 = icmp sgt i32 %787, 0
  br i1 %788, label %.lr.ph578, label %.loopexit.._crit_edge579_crit_edge

.loopexit.._crit_edge579_crit_edge:               ; preds = %.loopexit
  %.pre637 = sext i32 %787 to i64
  br label %._crit_edge579

.lr.ph578:                                        ; preds = %.loopexit
  %789 = add nuw nsw i64 %indvars.iv627, %607
  %790 = trunc nuw nsw i64 %789 to i32
  %791 = trunc nuw nsw i64 %789 to i32
  br label %795

._crit_edge579:                                   ; preds = %837, %.loopexit.._crit_edge579_crit_edge
  %.pre-phi638 = phi i64 [ %.pre637, %.loopexit.._crit_edge579_crit_edge ], [ %839, %837 ]
  %792 = phi i32 [ %787, %.loopexit.._crit_edge579_crit_edge ], [ %838, %837 ]
  %.7.lcssa = phi i32 [ %.6582, %.loopexit.._crit_edge579_crit_edge ], [ %.8, %837 ]
  %793 = load double, ptr %696, align 8, !tbaa !18
  store double %793, ptr %703, align 8, !tbaa !18
  %indvars.iv.next628 = add nuw nsw i64 %indvars.iv627, 1
  %794 = icmp slt i64 %indvars.iv.next628, %.pre-phi638
  br i1 %794, label %694, label %._crit_edge584, !llvm.loop !47

795:                                              ; preds = %.lr.ph578, %837
  %indvars.iv624 = phi i64 [ 0, %.lr.ph578 ], [ %indvars.iv.next625, %837 ]
  %.7576 = phi i32 [ %.6582, %.lr.ph578 ], [ %.8, %837 ]
  %796 = getelementptr inbounds double, ptr %596, i64 %indvars.iv624
  %797 = load double, ptr %796, align 8, !tbaa !18
  %798 = getelementptr inbounds double, ptr %595, i64 %indvars.iv624
  %799 = load double, ptr %798, align 8, !tbaa !18
  %800 = fsub double %797, %799
  %801 = fdiv double %800, %700
  %802 = load i32, ptr %11, align 4, !tbaa !8
  %803 = icmp sgt i32 %802, 0
  br i1 %803, label %.lr.ph571.preheader, label %._crit_edge572

.lr.ph571.preheader:                              ; preds = %795
  %wide.trip.count622 = zext nneg i32 %802 to i64
  br label %.lr.ph571

._crit_edge572:                                   ; preds = %826, %795
  %.0264.lcssa = phi double [ 0.000000e+00, %795 ], [ %.1265, %826 ]
  %.0263.lcssa = phi i1 [ false, %795 ], [ %.1, %826 ]
  %804 = fsub double %801, %.0264.lcssa
  %805 = call double @llvm.fabs.f64(double %804)
  %806 = call double @llvm.fabs.f64(double %801)
  %807 = call noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef %806, double noundef 1.000000e+00)
  %808 = fdiv double %805, %807
  %809 = load double, ptr %605, align 8, !tbaa !36
  %810 = fcmp oge double %808, %809
  %811 = zext i1 %810 to i32
  %.8 = add nsw i32 %.7576, %811
  %.0 = select i1 %810, i32 42, i32 32
  %cond.fr = freeze i1 %.0263.lcssa
  br i1 %810, label %830, label %827

.lr.ph571:                                        ; preds = %.lr.ph571.preheader, %826
  %indvars.iv620 = phi i64 [ 0, %.lr.ph571.preheader ], [ %indvars.iv.next621, %826 ]
  %.0263568 = phi i1 [ false, %.lr.ph571.preheader ], [ %.1, %826 ]
  %.0264567 = phi double [ 0.000000e+00, %.lr.ph571.preheader ], [ %.1265, %826 ]
  %812 = getelementptr inbounds i32, ptr %525, i64 %indvars.iv620
  %813 = load i32, ptr %812, align 4, !tbaa !8
  %814 = zext i32 %813 to i64
  %815 = icmp eq i64 %indvars.iv627, %814
  %816 = getelementptr inbounds i32, ptr %526, i64 %indvars.iv620
  %817 = load i32, ptr %816, align 4, !tbaa !8
  %818 = zext i32 %817 to i64
  %819 = icmp eq i64 %indvars.iv624, %818
  %or.cond643 = select i1 %815, i1 %819, i1 false
  br i1 %or.cond643, label %822, label %.lr.ph571._crit_edge

.lr.ph571._crit_edge:                             ; preds = %.lr.ph571
  %820 = icmp eq i64 %indvars.iv627, %818
  %821 = icmp eq i64 %indvars.iv624, %814
  %or.cond = and i1 %821, %820
  br i1 %or.cond, label %822, label %826

822:                                              ; preds = %.lr.ph571, %.lr.ph571._crit_edge
  %823 = getelementptr inbounds double, ptr %581, i64 %indvars.iv620
  %824 = load double, ptr %823, align 8, !tbaa !18
  %825 = fadd double %.0264567, %824
  br label %826

826:                                              ; preds = %.lr.ph571._crit_edge, %822
  %.1265 = phi double [ %825, %822 ], [ %.0264567, %.lr.ph571._crit_edge ]
  %.1 = phi i1 [ true, %822 ], [ %.0263568, %.lr.ph571._crit_edge ]
  %indvars.iv.next621 = add nuw nsw i64 %indvars.iv620, 1
  %exitcond623.not = icmp eq i64 %indvars.iv.next621, %wide.trip.count622
  br i1 %exitcond623.not, label %._crit_edge572, label %.lr.ph571, !llvm.loop !48

827:                                              ; preds = %._crit_edge572
  %828 = load i8, ptr %606, align 8, !tbaa !37, !range !38, !noundef !39
  %829 = trunc nuw i8 %828 to i1
  br i1 %829, label %830, label %837

830:                                              ; preds = %827, %._crit_edge572
  %831 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73)
  %832 = add nuw nsw i64 %indvars.iv624, %607
  %833 = select i1 %cond.fr, i32 118, i32 32
  %834 = trunc nuw nsw i64 %832 to i32
  br i1 %611, label %835, label %836

835:                                              ; preds = %830
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %831, i32 noundef 2, i32 noundef 12, ptr noundef nonnull @.str.75, i32 noundef %.0, i32 noundef %791, i32 noundef %834, double noundef %.0264.lcssa, i32 noundef %833, double noundef %801, double noundef %808)
  br label %837

836:                                              ; preds = %830
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %831, i32 noundef 2, i32 noundef 12, ptr noundef nonnull @.str.76, i32 noundef %.0, i32 noundef %668, i32 noundef %790, i32 noundef %834, double noundef %.0264.lcssa, i32 noundef %833, double noundef %801, double noundef %808)
  br label %837

837:                                              ; preds = %835, %836, %827
  %indvars.iv.next625 = add nuw nsw i64 %indvars.iv624, 1
  %838 = load i32, ptr %8, align 4, !tbaa !8
  %839 = sext i32 %838 to i64
  %840 = icmp slt i64 %indvars.iv.next625, %839
  br i1 %840, label %795, label %._crit_edge579, !llvm.loop !49

841:                                              ; preds = %._crit_edge584
  %842 = getelementptr inbounds double, ptr %.0360, i64 %indvars.iv630
  store double 0.000000e+00, ptr %842, align 8, !tbaa !18
  br label %843

843:                                              ; preds = %841, %._crit_edge584
  %indvars.iv.next631 = add nsw i64 %indvars.iv630, 1
  %844 = load i32, ptr %9, align 4, !tbaa !8
  %845 = sext i32 %844 to i64
  %846 = icmp slt i64 %indvars.iv.next631, %845
  br i1 %846, label %609, label %._crit_edge591, !llvm.loop !50

._crit_edge591:                                   ; preds = %843, %588
  %.5.lcssa = phi i32 [ %.0266.lcssa, %588 ], [ %.6.lcssa, %843 ]
  call void @_ZdaPv(ptr noundef nonnull %525) #11
  call void @_ZdaPv(ptr noundef nonnull %526) #11
  call void @_ZdaPv(ptr noundef nonnull %581) #11
  %847 = icmp eq ptr %.0360, null
  br i1 %847, label %849, label %848

848:                                              ; preds = %._crit_edge591
  call void @_ZdaPv(ptr noundef nonnull %.0360) #11
  br label %849

849:                                              ; preds = %._crit_edge591, %848
  call void @_ZdaPv(ptr noundef nonnull %595) #11
  call void @_ZdaPv(ptr noundef nonnull %596) #11
  call void @_ZdaPv(ptr noundef nonnull %602) #11
  br label %851

850:                                              ; preds = %691, %763, %733, %557
  %.pn449.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn434.pn.pn.pn, %557 ], [ %.pn439.pn.pn.pn, %691 ], [ %.pn449.pn.pn.pn, %733 ], [ %.pn444.pn.pn.pn, %763 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br label %872

851:                                              ; preds = %._crit_edge556, %849
  %.9 = phi i32 [ %.5.lcssa, %849 ], [ %.0266.lcssa, %._crit_edge556 ]
  call void @_ZdaPv(ptr noundef nonnull %111) #11
  %852 = icmp eq ptr %.0361, null
  br i1 %852, label %854, label %853

853:                                              ; preds = %851
  call void @_ZdaPv(ptr noundef nonnull %.0361) #11
  br label %854

854:                                              ; preds = %851, %853
  call void @_ZdaPv(ptr noundef nonnull %195) #11
  call void @_ZdaPv(ptr noundef nonnull %328) #11
  %855 = icmp eq ptr %.0391, null
  br i1 %855, label %857, label %856

856:                                              ; preds = %854
  call void @_ZdaPv(ptr noundef nonnull %.0391) #11
  br label %857

857:                                              ; preds = %856, %854
  %858 = icmp eq ptr %.0400, null
  br i1 %858, label %860, label %859

859:                                              ; preds = %857
  call void @_ZdaPv(ptr noundef nonnull %.0400) #11
  br label %860

860:                                              ; preds = %859, %857
  %861 = icmp eq ptr %.0399, null
  br i1 %861, label %863, label %862

862:                                              ; preds = %860
  call void @_ZdaPv(ptr noundef nonnull %.0399) #11
  br label %863

863:                                              ; preds = %862, %860
  %864 = icmp eq ptr %.0390, null
  br i1 %864, label %866, label %865

865:                                              ; preds = %863
  call void @_ZdaPv(ptr noundef nonnull %.0390) #11
  br label %866

866:                                              ; preds = %865, %863
  %867 = icmp eq i32 %.9, 0
  %868 = call noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %73)
  br i1 %867, label %869, label %870

869:                                              ; preds = %866
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %868, i32 noundef 3, i32 noundef 12, ptr noundef nonnull @.str.77)
  br label %871

870:                                              ; preds = %866
  call void (ptr, i32, i32, ptr, ...) @_ZNK10SimTKIpopt10Journalist6PrintfENS_13EJournalLevelENS_16EJournalCategoryEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %868, i32 noundef 2, i32 noundef 12, ptr noundef nonnull @.str.78, i32 noundef %.9)
  br label %871

871:                                              ; preds = %870, %869
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  br label %874

872:                                              ; preds = %224, %518, %850, %321, %266, %188, %154
  %.pn462.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn414.pn.pn.pn, %188 ], [ %.pn409.pn.pn.pn, %154 ], [ %.pn419.pn.pn.pn, %224 ], [ %.pn429.pn.pn.pn, %321 ], [ %.pn424.pn.pn.pn, %266 ], [ %.pn462.pn.pn.pn.pn, %518 ], [ %.pn449.pn.pn.pn.pn.pn.pn, %850 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  br label %873

873:                                              ; preds = %872, %97
  %.pn462.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn462.pn.pn.pn.pn.pn.pn.pn.pn, %872 ], [ %.pn.pn.pn.pn, %97 ]
  resume { ptr, i32 } %.pn462.pn.pn.pn.pn.pn.pn.pn.pn.pn

874:                                              ; preds = %2, %871
  ret i1 true

875:                                              ; preds = %750, %720, %678, %544, %430, %370, %308, %253, %211, %175, %141, %84
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK10SimTKIpopt8SmartPtrIKNS_10JournalistEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 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 #1 align 2

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

declare void @_ZN10SimTKIpopt11IpBlasDcopyEiPKdiPdi(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10SimTKIpopt3MaxEdd(double noundef, double noundef) local_unnamed_addr #6

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN10SimTKIpopt4TNLP14IndexStyleEnumE", !10, i64 0}
!13 = distinct !{!13, !14, !15, !16}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !14, !16, !15}
!18 = !{!19, !19, i64 0}
!19 = !{!"double", !10, i64 0}
!20 = !{!21, !19, i64 56}
!21 = !{!"_ZTSN10SimTKIpopt11TNLPAdapterE", !22, i64 0, !24, i64 16, !26, i64 24, !19, i64 32, !19, i64 40, !27, i64 48, !28, i64 52, !19, i64 56, !19, i64 64, !29, i64 72, !29, i64 73, !30, 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, !12, i64 116, !31, i64 120, !31, i64 128, !31, i64 136, !31, i64 144, !32, i64 152, !31, i64 160, !32, i64 168, !31, i64 176, !32, i64 184, !31, i64 192, !32, i64 200, !32, i64 208, !32, i64 216, !33, i64 224, !25, i64 232, !25, i64 240, !25, i64 248, !25, i64 256, !25, i64 264, !9, i64 272, !9, i64 276, !9, i64 280, !9, i64 284, !9, i64 288, !34, i64 296, !35, i64 304, !34, i64 312, !35, i64 320, !34, i64 328, !35, i64 336, !35, i64 344, !34, i64 352, !35, i64 360, !34, i64 368, !25, i64 376, !25, i64 384, !25, i64 392}
!22 = !{!"_ZTSN10SimTKIpopt3NLPE", !23, i64 0}
!23 = !{!"_ZTSN10SimTKIpopt16ReferencedObjectE", !9, i64 8}
!24 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_4TNLPEEE", !25, i64 0}
!25 = !{!"any pointer", !10, i64 0}
!26 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_10JournalistEEE", !25, i64 0}
!27 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter26FixedVariableTreatmentEnumE", !10, i64 0}
!28 = !{!"_ZTSN10SimTKIpopt11TNLPAdapter18DerivativeTestEnumE", !10, i64 0}
!29 = !{!"bool", !10, i64 0}
!30 = !{!"_ZTSN10SimTKIpopt24HessianApproximationTypeE", !10, i64 0}
!31 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11VectorSpaceEEE", !25, i64 0}
!32 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_11MatrixSpaceEEE", !25, i64 0}
!33 = !{!"_ZTSN10SimTKIpopt8SmartPtrIKNS_14SymMatrixSpaceEEE", !25, i64 0}
!34 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_15ExpansionMatrixEEE", !25, i64 0}
!35 = !{!"_ZTSN10SimTKIpopt8SmartPtrINS_20ExpansionMatrixSpaceEEE", !25, i64 0}
!36 = !{!21, !19, i64 64}
!37 = !{!21, !29, i64 72}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14, !15, !16}
!44 = distinct !{!44, !14, !16, !15}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}


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